Stanislav
Я тестировал, работает без осечек.
Valerii
Там в GCP удобство в том, что ты через именованные порты связываешь это и куда оно там в очередной раз выставится - тебя не греет
# Например есть вот такой deployment nginx'а:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
labels:
app: nginx-app
spec:
replicas: 2
selector:
matchLabels:
app: nginx-app
template:
metadata:
labels:
app: nginx-app
spec:
nodeSelector:
app: '1'
containers:
- image: nginx:latest
name: nginx-app
env:
- name: test
value: '1'
ports:
- containerPort: 80
name: nginx-http
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: nginx-app
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: nginx-http
selector:
app: nginx-app
# И вот такой ingress:
apiVersion: v1
data:
tls.crt: "..."
tls.key: "..."
kind: Secret
metadata:
name: sslcerts
namespace: default
type: Opaque
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: 'dev-ingress-ip'
spec:
tls:
- secretName: sslcerts
backend:
serviceName: 'nginx-app'
servicePort: 80
Valerii
Хотя можно было сделать servicePort: nginx-http , но не обязательно.
Stanislav
Я TLS на GCLB вынес
Stanislav
Это как сделал я у себя
Stanislav
Этот внутрикластерный балансер в который идет GCLB
Valerii
Ну так оно же и есть на GCLB тут. Когда его определяешь в ingress'е, то он и создаёт LB же.
Valerii
Stanislav
# uncomment if you need auto-GLB
#type: LoadBalancer
#externalTrafficPolicy: Local
Stanislav
Это если ты не хочешь сам менеджить GCLB
Stanislav
Оно тогда все само зааллоцирует и отконфигурит
Stanislav
Но если вдруг переделать понадобится, то придется серьезно разобраться в четырехслойной модели GCLB
Stanislav
Иначе оно при каждом переделывании будет порождать зажор ресов в GCLB и ты упрешься в квоты проекта
Stanislav
Мы это прошли и отказались от этой автофичи
Stanislav
Слишком много потом руками чистить приходится
Stanislav
В панели GCP
Valerii
Оно мне недавно регнулось на квоту бэкэндов, я просто сделал запрос на увеличение до 30 и получил автоаппрув в течении 5 минут...
Stanislav
Это понятно, но это плохой признак
Stanislav
Ты по сути не контролируешь порожденные сущности
Valerii
Мне надо ещё покурить маны, в-общем :) Пока что у меня вот такое определение ingress, при создании которого оно автоматом создаёт всё, что нужно на GCLB и направляет на нужные порты на нодах
Stanislav
Вот такой ингресс я не использовал
Stanislav
У меня вместо ингресса nginx, который я полностью контролирую в плане внутренней конфигурации + на кластере сетевые политики,
Stanislav
Это позволяет мне не городить большее количество посредников на пути до сервиса
Stanislav
сам nginx стучится на ClusterIP:порт сервисов
Siarhei
Господа, нубский вопрос, пробую calico в кубере, на трех VM (CentOS 7) masters. Валится на master2 & master3 , как заставить calico-node использовать eth0 интерфейс вместо бриджа докера, он на всех 3-х машинах одинаковый и соответсвенно не взлетают поды на мастере2 и мастере3??? в деплоименте написано IP : autodetect, в мурзилке calico что IP_AUTODETECTION_METHOD не используется с kebernetes api
Denis
ребят, а как то на кубере можно сделать нечто вроде pre-upgrade hook хелмовских ? Хочется перед upgrade моего деплоя делать некоторый набор действий. InitContainers не подходят, потому что они запускаются каждый раз при рестарте pod и вобще для всех pod в рамках replicaset. А мне нужно 1 раз.
Denis
Не очень хочется это на уровень ci выносить
Denis
Всем привет, пытаюсь прикрутить кастомный fluentd что бы gelf плевался, через DaemonSet.
kubectl create -f fluentd-daemonset-gelf.yaml
вот отсюда
https://github.com/xbernpa/fluentd-kubernetes-gelf/blob/master/kubernetes/fluentd-daemonset-gelf.yaml
Но его почему то нет в списках
Что я делаю не так?
> kubectl get ds fluentd
Error from server (NotFound): daemonsets.extensions "fluentd" not found
Denis
--namespace kube-system
Vladimir
Denis
просто по умолчанию выводится содержимое --namespace=default
Aleksei
Может кто то решал подобную задачу CI
деплою через helm бандл приложения
нужно что бы при старте postgresql скачивал дамп по sftp/scp и заливал к себе
Есть вариант собрать свой контейнер постгреса и в entrypoint добавить это залитие, или можно как - то через хуки схитрить?
Andrey
Andrey
С одинаковым volume в init и основном.
Aleksei
initContainers
в init я могу скачать, но я не смогу залить дамп до запуска самого engine
или можно делать дамп через копирование /var/lib - но это такое себе занятие
Andrey
pg_basebackup прекрасно снимает дамп и разворачивает его через перемещение файлов.
Aleksei
Lex
есть вопрос по калико, его как лучше на куб ставить, со своим etcd или все таки что-бы он вытаскивал данные по подсетям из куба?
Roman
ставь с CRD
Roman
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/calico#installing-with-the-kubernetes-api-datastore50-nodes-or-less
Sergey
Ребят а есть вообще веб-сервера для k8s с которыми он сможет нативно работать?
Artem
Sergey
коллега грит где то видел
называется на P
больше инфы нет:)
Artem
ну, в кубе все управляется с помощью kubectl
Artem
Что значит образами?
Andrey
Возник вопрос по обработке соединений при апдейте сервиса. Как k8s себя ведет с активными соединеняими? Допустим есть http сервис в 2х репликах. Пошло задание на обновление. Поднялось 1 новое приложение, осталось 2 старых (на которых висят активные коннекты). Куда сейчас пойдут новые коннекты? на 1 новый экземпляр или и на старые и на новый? Что будет, если коннект не успеет отработать на старом приложении, когда k8s начнет гасить эти старые экземпляры? Оборвет его?
Andrey
в принципе, если сервис начнет направлять трафик сразу же на экземпляр нового приложение, исключая старые, то второй вопрос не особо актуален
Andrey
ps https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/ читал. :)
Artem
Коннекты пойдут на новый, старый должен загаситься в рамках grace time, за которое сервис должен успеть обаботать все коннекты
Sergey
Sergey
кубер вряд ли сам догадается
а коннекты просто порвет
Andrey
т.е. при апгрейде будет некий период времени, когда вместо 2х-3х-10 реплик одного приложения будет трудиться лишь 1?
Sergey
типа того
Andrey
Есть же rolling update для этого вроде
Sergey
я бы сделал два сервиса
новые контейнеры и старые
дал бы их хапрокси
поднял бы новую версию, перебросил бы на нее все, а потом убил бы старый
rolling не пробовал
Andrey
да, ему логично просто порвать коннекты, если за отведенное время приложение само не погасилось
Artem
да, стратегия, описывающая максимальное количество перезапускающихся подов
Andrey
в 1 момент времени будут работать как старые так и новые приложения?
Andrey
Andrey
Он обновляет не все сразу а постепенно. На сколько я знаю "постепенность" можно настроить
Andrey
И по логике: перед тем как старому приложению пойдет сигнал "выключайся" k8s прекратит заворачивать на него трафик, что бы приложение спокойно дожевало уже имеющиеся запросы и погасилось?
Andrey
Andrey
спасиб, буду тестить :)
T
Привет! Есть ли способ сделать в кубере очередь задач, где каждая новая запускается в новом докере, лучше чем job + rabbitMQ (https://kubernetes.io/docs/tasks/job/coarse-parallel-processing-work-queue/) ?
Andrey
спасиб, буду тестить :)
https://ru.coursera.org/lecture/google-kubernetes-engine/deployments-and-rolling-updates-f25uw
Andrey
спасибо
Denis
Alexey
День добрый. Каким образом можно запустить usbip в kubernetes? В docker я запускаю контейнер, подключая через volumes /dev и /lib/modules с хостовой системы (privileged включен). В кубике когда я такое делаю, то получаю ошибку при выполнении usbip attach
usbip: error: import device
usbip: error: query
MRY
Всем привет, по долгу работы зарылся в AWS и небыло времени продолжить со своим on-premise кластером на k8s и опытами над ним, 2 месяца его не трогал, сегодня включил, все поднялось без задоринки, конфа такая 3 etcd + 3 master + (n+1 nodes), wawe netwok, версия k8s 1.10.1, все поднималось вручную без спрея итд. Вопрос вот в чем, 2 месяца я вообще не трогал тему кубика, что-то кординально поменялось ?, появились новые не забагованые сетевые фреймы или подчинили фланел ?
Вадим
k8s новый вышел.
Dmytro
Mikhail [azalio]
No API token found for service account "default", retry after the token is automatically created and added to the service account # kubectl describe serviceaccounts default
Name: default
Namespace: default
Labels: <none>
Mountable secrets: <none>
Tokens: <none>
Events: <none>
Mikhail [azalio]
встречался кто?
Mikhail [azalio]
--service-account-private-key-file && —service-account-key-file есть
Dmytro