
Alexey
03.08.2018
08:38:38
пока не шаблонизируешь ничего?
Да даже не могу найти ссылки на какие переменные есть для шаблонизатора, и если они есть (особенно ссылки на секреты и порты и хосты) Я буду очень рад )

Max
03.08.2018
08:39:11
я просто термин такой не знаю) если про то что написать yaml - то конечно я все так делаю
просто у меня же реплика сет
и там foo-1.bar foo-2.bar и тд - не хочется все это писать руками

Anton
03.08.2018
08:39:29

Alexey
03.08.2018
08:40:35

Google

Alexey
03.08.2018
08:41:04
А батчу скармливать конфигом чего докатывать.
Получится отвязатся от версий конфигов для разных версий в гите, жестко это вымораживает

Max
03.08.2018
08:42:00

Alexey
03.08.2018
08:48:01
Ладно с инициализацией пока на потом. Мне бы помочь с шаблонизатором для Config MAP. И DNS, указал для приложеньки в качестве хоста то что указал в name - получил отбой что хост не найден. Я описал старт через Deployment. В доке кубера указано что бы пользоваться hostname нужно испльзовать POD. Тогда как деплой то описывать ) https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/ . Однако если я это пробую использовать в spec Deployment - получаю ошибку синтаксиса
Может проще - как вы сами в своих конфигах контейнеры находите ? Генерируете через шаблонизатор (списки IP адресов), DNS (как там с TTL тогда дела обстоят), если DNS то получается порты уже в динамике нельзя использовать, то есть 1 контейнер на 1 ноду, не очень это хорошо


Alexander
03.08.2018
08:55:09
Как правильно публиковать свое приложение? Баре метал. Ингресс nginx от k8s. Необходимо опубликовать на 80 порт. В сервисе приложения выбирать ноде порт, а этот нод порт закреплять за бекендом ингреса?

Stanislav
03.08.2018
08:56:43
Если ингресс уже есть - через него
Ну то есть, определить сервис без всяких NodePort, на который и натравлять ингресс
А в чём, собственно, проблема?

Alexander
03.08.2018
08:58:39

Max
03.08.2018
08:58:53

Alexander
03.08.2018
08:59:05

Stanislav
03.08.2018
08:59:39
bare metal - только NodePort, либо как я вчера - через hostNetwork: true

Google

Alexey
03.08.2018
09:00:04
ну сервис раздает днс имена - не понял вопроса
Вопрос следующий, есть контейнер, для него есть в конфиг, в конфиге мне нужно указать ему для общения другие контейнеры, публиковать мне эти контейнеры не надо, пускай работают через внутреннюю сеть. Вопрос как это сделать ? Забыл написать - конфиг отдаю через Config Map

Alexander
03.08.2018
09:00:13

Stanislav
03.08.2018
09:00:46
В случае NodePort понадобится секция externalIPs: в описании сервиса ingress-nginx
В ней - список ip-адресов узлов, где надо слушать 80,443

Max
03.08.2018
09:01:51

Stanislav
03.08.2018
09:02:18
Тоесть на 80 порт не могу опубликовать?
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
- name: https
port: 443
targetPort: 443
protocol: TCP
selector:
app: ingress-nginx
externalIPs:
- x.x.x.88
- x.x.x.30
С дефолтным mandatory.yaml вполне работает

Alexey
03.08.2018
09:02:53
pzoo-0.pzoo - это имя как получилось. Что нужно указать для deployment что бы получилось имя. Ну и это костыльно, очень костыльно. Нет возможности как более элегантно искать другие сервисы, что бы не было привзяки к нодам и портам. Или если кубер создает отдельный IP на каждый контейнер - то в принципер норм, если порт всегда будет одинаковым

Stanislav
03.08.2018
09:03:21
Но есть грабля - в логах отражается ип узла из externalIPs, куда пришел запрос
Гм... Где это имя получилось (где увидел)?

Alexey
03.08.2018
09:05:19
server.1=pzoo-0.pzoo:2888:3888:participant
Из гита ссылка же
pzoo-0.pzoo - вот этот кусок из чего складывается. Ну например pzoo-0 - это metadata:name, а pzoo - это container:name. Я пример привел, не знаю как оно в реалн

Max
03.08.2018
09:07:02
я как то теряю диалог)))
вот это генерит pzoo-0.pzoo:2888:3888:participant
https://github.com/Yolean/kubernetes-kafka/blob/master/zookeeper/20pzoo-service.yml

Alexey
03.08.2018
09:10:17

Max
03.08.2018
09:12:15
а)) ну это стейтфул сет с репликацией
https://github.com/Yolean/kubernetes-kafka/blob/master/zookeeper/50pzoo.yml#L12
кубер сам прибавляет номера для каждой реплики вот тут это написано
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

Alexey
03.08.2018
09:15:10
Может я ошибочно пытаюсь логику работы nomad натянуть на кубера? У номад есть шаблонизаторы и поиск служб, просто поиск. Видимо у кубера свои подходы, просто не понятно какие, в документации создаются службы в вакууме, общающиеся только с внешним миром, а как организовать взаимосвязанную работу примеров особо нет.

Михаил
03.08.2018
09:22:19

Stanislav
03.08.2018
09:25:07

Alexey
03.08.2018
09:26:54

Google

Михаил
03.08.2018
09:27:02

Stanislav
03.08.2018
09:28:27

Alexey
03.08.2018
09:29:00
вот пример из доки.
pod-ip-address.my-namespace.pod.cluster.local - сущность pod, я описал deployment, внутри deploument будут поды, но будут ли они видны так же. Дело в том что metadata поле у меня одно на два пода.

Stanislav
03.08.2018
09:29:38
Сделай сервис и ходи через днс на него. Это проще всего будет.
Публиковать сервис наружу необязательно

Alexey
03.08.2018
09:30:57
Сервис менее выгоден с точки зрения маршрутизации. Там стык будет через выход за пределы vxlan сети. что не есть хорошо, зачем это делать если они напрямую могут друг с другом взаимодействовать. Другое дело что если за сервисом несколько подов, то через балансер я найду 1. Вот блин и ответ
спасибо ))
Теперь дошло, пока писал дошло

Stanislav
03.08.2018
09:31:30
Там тех потерь - за пределами точности измерения в нормальных условиях.

Alexey
03.08.2018
09:32:52

Stanislav
03.08.2018
09:34:43
Ну так если нужен доступ снаружи (у меня на работе - это единственная возможность получить заметную нагрузку на conntrack) - в любом случае надо ставить внешний лоадбалансер, в котором заодно использовать всякие mod-security, limit-rate и т.п.

Alexey
03.08.2018
09:37:34
Ещё вопрос, а можно секрет засунуть перменной в конфигмап ?

Stanislav
03.08.2018
09:39:33
Кто на ком стоял?
По-моему, configMap создаётся не из секретов.
Если надо в одном месте хранить и конфги и секреты - делайте projected volume

Alexey
03.08.2018
09:41:34
По-моему, configMap создаётся не из секретов.
да, потому и спрашиваю, можно ли? Идея какая, один конфиг мап на все случаи жизни, в разных namespace лежат версии, а в прод мапится свои секреты, при этом сам конфиг мап одинаковый и забирает секрет из своего namespace.

Stanislav
03.08.2018
09:42:25
Проще таки для прода другой секрет подцепить.

Alexey
03.08.2018
09:43:03

Bsod
03.08.2018
09:43:58
юзай темплейт, куда при старте из энва клади

Google

Vitaliy
03.08.2018
09:45:00
отцы, подскажите.
вот есть свежий 1.11 кластер. сертификаты конечно на 1 год сгенерировались kubeadm-ом. вроде бы kubelet настроен на авторотейт при "скором протухании, <180d" сертификата. Но вот как дела обстоят с control-plane сертами?
они тоже умеют автообновляться или надо что-то делать руками для этого? туплю

Alexey
03.08.2018
09:45:03

Bsod
03.08.2018
09:45:18
щито поделать десу

Alexey
03.08.2018
09:48:01

Alexander
03.08.2018
09:59:14

Stanislav
03.08.2018
10:00:11
externalIps тут - адреса, привязанные к внешним интерфейсам узлов, где будет открыт 80-й порт
Мне проще было сделать запись в днс вида *.kubernetes.domain.tld и потом прописывать нужное имя в ingress для соответсвующего сервиса
Это для доступа снаружи. Изнутри всё работает по короткому имени

Alexander
03.08.2018
10:06:00

Stanislav
03.08.2018
10:08:09
А хз, мне просто было так проще перетаскивать сервисы из docker swarm

Anton
03.08.2018
10:09:58
добрый день, прошу помощи и прояснения (просветления даже) с prometheus operator, не получается до конца осознать концепцию, а если точнее, то не ясно как влиять на параметры конфигурации прометея, которые задаются не динамически.

Sergey
03.08.2018
10:58:55

Vadim
03.08.2018
11:17:00

Anton
03.08.2018
11:25:04
не совсем ясно как создавать побоное правило

Denis
03.08.2018
12:00:18
Подскажите пожалуйста создал через cert-manager LE серт, пытаюсь его прикрутить через ingress. Но мне отдается 503 ошибка
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
kubernetes.io/tls-acme: "true"
certmanager.k8s.io/issuer: letsencrypt-production
name: devsite
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/devsite
spec:
rules:
- host: my.domain.com
http:
paths:
- backend:
serviceName: my-frontend
servicePort: 8181
path: /
- host: my.domain.com
http:
paths:
- backend:
serviceName: my-backend
servicePort: 3000
path: /api
tls:
- hosts:
- my.domain.com
secretName: my-domain-com-tls
status:
loadBalancer: {}
Как поправить, а то весь мозг себе взорвал


Alexey
03.08.2018
12:45:55
Глянь логи nginx
kubectl get pod —namespace kube-system | grep nginx-ingress
kubectl logs nginx-ingress-controller-g29gs —namespace kube-system
Я ничего такого не указываю
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
kubernetes.io/tls-acme: "true"
certmanager.k8s.io/issuer: letsencrypt-production
зачем?
Там отдельные ещё есть ресурсы Issuer и Certificate. Последний делает my-domain-com-tls

Google

Иван
03.08.2018
12:54:51
Народ, а такой вопрос, когда монтирую в Pod configmap за что отвечает параметр optional?

Anton
03.08.2018
13:09:31
специально открыл апи референс и заглянул в описание. референс довольно неплох, кстати


Denis
03.08.2018
13:33:34
Друзья, а мы продолжаем искать докладчика на следующий Kubernetes-митап, который состоится уже совсем скоро на площадке Mail.Ru Group! Есть чем поделиться или рассказать интересно, готовы исповедаться или прочитать проповедь? Будем рады! Сделаем сообщество веселей и опытней вместе. Напишите на events@axept.co или в ЛС напишите. ?
https://www.meetup.com/Moscow-Kubernetes-Meetup/events/253451195/
Когда: четверг, 9 августа 2018, 19:30 - 22:15
Где: Москва, Ленинградский проспект 39, стр. 79 (офис Mail.Ru Group)
Друзья, жаркое лето в Москве ещё больше подогревает интерес к Kubernetes со стороны русскоговорящего сообщества. Прошёл всего месяц с момента предыдущего митапа, наш Telegram-чат-канал про Kubernetes ( https://t.me/kubernetes_ru ) уже вырос почти до 2000 человек, а вместе с ним продолжают расширяться и области применения Kubernetes, как и масштаб проблем, которые успешно решаются с его помощью. Облака спускаются на землю в следующий четверг, ведь мы снова встречаемся и на этот раз мы будем делать это вместе с Mail.Ru Group!
ПРОГРАММА:
19:30 - 19:50 Socializing, встречаемся, общаемся, shake it!
19:50 - 20:05 Welcome & digest (Денис Измайлов, Axept)
20:05 - 20:45 Подводные камни при production-эксплуатации Kubernetes (Дмитрий Лазаренко, Mail.Ru Cloud Solutions, менеджер продукта)
Изначально Kubernetes был спроектирован для работы stateless-приложений. Однако сейчас все больше и больше компаний пытаются размещать в нем stateful-сервисы, требующие надежного хранения. Помогая клиентам Mail.Ru Cloud Kubernetes, мы обнаружили много неочевидных особенностей, прежде всего связанных с persistent-хранением данных и поведением Kubernetes при выходе из строя оборудования.
Как Persistent Volumes работают в штатных и нештатных ситуациях? Например, если вы выключите ноду или она аварийно остановится (падение хоста, гипервизора или Kubelet)? Какие проблемы бывают при эксплуатации RWX PVС? Как правильно дружить с облачным балансировщиком нагрузки? Всё это Дмитрий раскроет в своем докладе для вас.
Био: Дмитрий Лазаренко возглавляет PaaS-направление Mail.Ru Cloud Solutions, включая контейнерные решения на базе Kubernetes. До Mail.Ru Group в течение 6 лет отвечал за разработку и развитие контейнерной PaaS-платформы Jelastic. Более 10 лет занимается созданием высоконагруженных сервисов.
20:45 - 21:15 История разработки Production-ready сборки Kubernetes (Константин Феофантов, Exon Lab, CTO)
Доклад основывается на истории разработки [предположительно] первого в России Docker-хостинга. Константин расскажет про опыт с Kubernetes и проблемы, с которыми он с командой столкнулся в ходе разработки и эксплуатации. В докладе обосновывается выбор компонентов и плагинов Kubernetes при создании собственного production-ready кластера, а также варианты развертывания Kubernetes и рекомендации по ним.
Био: Константин программирует с 2012 года, писал на C, затем на C#. Потом начал изучать веб-разработку (Node.js, HTML5, SaSS) и вот уже в 2015 году перевел всё на Golang. В 2017 стал техническим директором, основал проект Containerum и основательно занялся изучением Kubernetes.
21:15 - 21:35 Кофе-брейк, чай-пати, горячие дискуссии
21:35 - 22:15 Turing Pi – кластерный компьютер на базе Kubernetes для граничных вычислений и интернета вещей (Константин Шмойлов-Александров, Jelastic, сооснователь)
Рынок IoT бурно развивается, но в основном он наполнен крайне простыми устройствами с ограниченным диапазоном применения.
Мы создали компактное кластерное устройство с Kubernetes и Docker на борту, воплощающее идею вычислительного узла IoT-сети нового типа. В нем сочетается множество разнотипных одноплатных компьютеров, соединенных сетью в рамках единой материнской платы.
Этот кластер предназначен для граничных вычислений: в частности, для размещения приложений машинного обучения не в облаке, а локально – в месте, где необходимо собирать, хранить, анализировать данные и управлять окружающими устройствами.
В докладе мы расскажем, что под капотом этого устройства и как контейнеры и Kubernetes могут эффективно работать не только на огромных серверах, но и на мини-устройствах.


Sergey
03.08.2018
13:35:43

Denis
03.08.2018
13:36:15
Будет тут - https://t.me/kubernetesMSK

Sergey
03.08.2018
13:36:43