Vitalii
http://img2.ph.126.net/knqvT-s-s-Ap6TGBblmu4g==/6630875351165754278.jpg вот примерно что это такое
Я понял логику, но не понял как это спасает от единой точки отказа? Ведь все равно есть VIP который принимает запрос и дальше решает кому его отдать (кто работает сейчас). Т.е. в тако схеме ВИТ и есть точка отказа.
Andor
он дублируется
Etki
аааа, это функция самого ПО. То есть если ПО умеет соединяться в кластер, то на его уровне и реализуется логика контроля совершенности операции. Например в etcd пришел запрос на запись значения, нода его пишет себе и передает другим. И пока другие не примут и не сохранят у себя то операция не считается завершенной. Так?
Да, примерно так. На самом деле там очень большое пространство для работы и возможностей прострелить ногу, можно почитать серию jepsen у афира, он в процессе объяснения самих инструментов еще и объясняет сам класс возможных проблем.
Andor
call me maybe
Vitalii
Andor
один из лучших циклов на эту тему
Etki
aphyr.com/tags/jepsen
Vitalii
Так, получается что я все понял правильно кроме того, что баллансировку между нодами делает keepalived. Etcd можно как сразу в кластер соединять, а можно и потом прикрутить реплики.
Mikhail [azalio]
502 Bad Gateway 😂
Etki
jepsen.io
Dmitrii
https://webcache.googleusercontent.com/search?q=cache:qKqUKdvRHesJ:https://aphyr.com/tags/jepsen+&cd=14&hl=en&ct=clnk&gl=ru&lr=lang_en%7Clang_ru
Vitalii
etcd можно вообще с одного хоста начинать, увеличить кол-во нод в кластере недолго
ну, ты имеешь ввиду начать с одного мастера? а потом по мере надобности добавлять еще?
Andor
конечно
Andor
ну это так себе практика, но работать будет
Andor
если конечно этот самый 1 мастер не сдохнет по пути :)
Vitalii
ну для прода надо сразу поднимать 3 мастера))
Andor
не мастера, а инстанса етцд
Vitalii
Ух, нашел про keepalived https://habrahabr.ru/company/netangels/blog/326400/ почитал. Сума сойти какая схема)) но круто что нет точки отказа. Спасибо!
Denis
Вопрос: kubectl create -f https://k8s.io/docs/tasks/debug-application-cluster/counter-pod.yaml kubectl logs counter Консоль висит и логов нет, подскажите куда смотреть, что не так может быть?
Vitalii
я так понимаю, что keepalived и установка виртуального ИП делается на мастер нодах, верно?
Anonymous
как вариант, вместо keepalived можно на каждом воркере запустить локальный прокси (nginx/haproxy) который будет раскидывать все запросы к апи серверу(ам) (идущие на 127.0.0.1 на воркере)
Denis
Что в дескрайбе пода?
# kubectl describe pod counter Name: counter Namespace: default Node: domain/172.27.39.28 Start Time: Fri, 19 Jan 2018 18:32:39 +0300 Labels: <none> Annotations: <none> Status: Running IP: 10.244.0.13 Containers: count: Container ID: docker://7049fcc5911a6c7a5dbe182bc69351e16dbb1d9727f502e6c41dc61d05cfe0fb Image: busybox Image ID: docker-pullable://busybox@sha256:ac2fc418f3348815e68e266a5aa1b60bc522581c96964912560a0baacc4f5c06 Port: <none> Args: /bin/sh -c i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done State: Running Started: Fri, 19 Jan 2018 18:32:57 +0300 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-4pqlv (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-4pqlv: Type: Secret (a volume populated by a Secret) SecretName: default-token-4pqlv Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.alpha.kubernetes.io/notReady:NoExecute for 300s node.alpha.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned counter to domain Normal SuccessfulMountVolume 11m kubelet, domain MountVolume.SetUp succeeded for volume "default-token-4pqlv" Normal Pulling 10m kubelet, domain pulling image "busybox" Normal Pulled 10m kubelet, domain Successfully pulled image "busybox" Normal Created 10m kubelet, domain Created container Normal Started 10m kubelet, domain Started container
Anonymous
ссылочку не знаю, схема такая: есть воркер, на нём стоит nginx, слушает на каком то порту на 127.0.0.1, и проксирует все запросы на бэкенды в качестве которых API сервера. компоненты куба-воркера (кубелет и кубе-прокси) ходят в 127.0.0.1 вместо адресов API серверов
Vitalii
ссылочку не знаю, схема такая: есть воркер, на нём стоит nginx, слушает на каком то порту на 127.0.0.1, и проксирует все запросы на бэкенды в качестве которых API сервера. компоненты куба-воркера (кубелет и кубе-прокси) ходят в 127.0.0.1 вместо адресов API серверов
То есть ты предлагаешь на minion серверах ставить nginx который будет проксировать запросы к АПИ через себя? Типа если у меня 10 minion`ов то на каждом nginx в котором прописаны все бекенды (мастер ноды) ?
Etki
# kubectl describe pod counter Name: counter Namespace: default Node: domain/172.27.39.28 Start Time: Fri, 19 Jan 2018 18:32:39 +0300 Labels: <none> Annotations: <none> Status: Running IP: 10.244.0.13 Containers: count: Container ID: docker://7049fcc5911a6c7a5dbe182bc69351e16dbb1d9727f502e6c41dc61d05cfe0fb Image: busybox Image ID: docker-pullable://busybox@sha256:ac2fc418f3348815e68e266a5aa1b60bc522581c96964912560a0baacc4f5c06 Port: <none> Args: /bin/sh -c i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done State: Running Started: Fri, 19 Jan 2018 18:32:57 +0300 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-4pqlv (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-4pqlv: Type: Secret (a volume populated by a Secret) SecretName: default-token-4pqlv Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.alpha.kubernetes.io/notReady:NoExecute for 300s node.alpha.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned counter to domain Normal SuccessfulMountVolume 11m kubelet, domain MountVolume.SetUp succeeded for volume "default-token-4pqlv" Normal Pulling 10m kubelet, domain pulling image "busybox" Normal Pulled 10m kubelet, domain Successfully pulled image "busybox" Normal Created 10m kubelet, domain Created container Normal Started 10m kubelet, domain Started container
Логгинг в кластере никак не конфигурировался, все "из коробки"?
Denis
да, все из коробки
Нашел файлик с логами: tail /var/log/pods/fb9ebd51-fd2d-11e7-9877-fa163e595e88/count_0.log Он пишется, не понятно только почему команда не показывает их
Vik
ребят, а кто-то делать что-то Kubernetes + Kerberos?
Pavel
честно, ничего не понял)) знаете где сылочку взять для почитать описание схемы?
Вот тут можно посмотреть реализацию. Только нужно по ансиблу полазить. Из опыта этот вариант лучше чем вррп на мастерах
Pavel
https://github.com/kubernetes-incubator/kubespray/blob/master/docs/ha-mode.md
Pavel
а почему?
Потому что при мигании сети keepalived себя бывает очень странно ведет. Например убирает адрес с одного инстанса и никуда больше не добавляет. Плюс для реального переезда адреса нужно некоторое количество времени, а если инстанс не просто выключился, а мигает сеть, много раз, то также возможна ситуация когда реально адреса нет нигде. Если что то случится с балансировщиком установленным на каждой ноде, то будет зааффекчена только работа этой ноды с апи сервером, а не весь кластер.
Oles
а почему?
Поставь, узнаешь ;)))
Mikhail [azalio]
Поставь, узнаешь ;)))
ну поставлю надо будет )
Vitalii
Вот тут можно посмотреть реализацию. Только нужно по ансиблу полазить. Из опыта этот вариант лучше чем вррп на мастерах
ох, спасибо)) а то я нарыл вот такое https://tecadmin.net/ip-failover-setup-using-keepalived-on-centos-redhat/# вроде выглядит интересно
Vitalii
это вариант когда на каждой ноде стоит nginx и баллансит именно обращение с этой ноды на мастеры?
Vitalii
Ага
слушай, а какую задачу решают эти штуки Calico Flannel Open vSwitch (OVS) Romana Weave а то читаю и не догоняю 🙁
Vitalii
а еще не понимаю зачем kube-proxy на мастер нодах. Че он проксирует и откуда куда?
Mikhail [azalio]
слушай, а какую задачу решают эти штуки Calico Flannel Open vSwitch (OVS) Romana Weave а то читаю и не догоняю 🙁
Сеть организуют для подов. Каждый под получает свой IP и к нему могут достучаться другие если надо.
Vitalii
У меня не используется на мастерах.
так а зачем он нужен в принципе?
Mikhail [azalio]
так а зачем он нужен в принципе?
На нодах добавляет правила в iptables чтобы кластерные ip были доступны (нат делает)
Mikhail [azalio]
Например ip kube-dns
Vitalii
ох, все равно не понял)) ладно, потом догоню уже
Vitalii
https://kubernetes.io/docs/getting-started-guides/scratch/#apiserver-pod-template
Vitalii
зачем тут описываются yaml подов для аписервера, шедулера и контроллер менеджера?
Vitalii
как можно запустить эти компоненты в кластере (в подах) если у меня еще кластера нет?
Vitalii
Да
круто)) а то на этой странице столько текста, что все так страшно выглядит. Но в глубине души я верю что там на 20 минут дела.
Mikhail [azalio]
Конечно! Сложно только первый десяток раз! ;)
Vitalii
Конечно! Сложно только первый десяток раз! ;)
я буду первый раз собирать 🙂 чет страшновато. Завтра тут будешь?))
Mikhail [azalio]
Наверное :)
Mikhail [azalio]
Путь такой: Etcd, network, мастер, нода.
Mikhail [azalio]
(В моем случае) :)
Vitalii
а что значит network ? че конкретно надо настроить? я думал что flannel этот запускается уже в кластере
Mikhail [azalio]
Наверняка и так можно. Я сделал его до кластера :)
Vladimir
как можно запустить эти компоненты в кластере (в подах) если у меня еще кластера нет?
kubelet запускает поды, описания для которых лежат в /etc/kubernetes/manifests/ для этого не нужен поднятый кластер
Vladimir
«kubernetes hard way» почти тот же «kubernetes from scratch», рекомендую посмотреть
Vitalii
а можно ссылочку?
Vladimir
в гугле забей )))
Vitalii
там много разных вариантов
Vitalii
https://medium.com/@zwischenzugs/learn-kubernetes-the-hard-way-the-easy-and-cheap-way-6f82b665ccd9
Vladimir
https://github.com/kelseyhightower/kubernetes-the-hard-way
Vladimir
только тут cri-containerd вместо докера
Vladimir
но бутстраппинг мастер-компонентов, почти такой же
Vitalii
ок, посмотрю) спасибо.
Logan
а что значит network ? че конкретно надо настроить? я думал что flannel этот запускается уже в кластере
он запускается на каждом воркере (именно воркере) и нужен для того, чтобы поды могли общаться друг с другом по сети прозрачно
Пенкуздуй
Уважаемые, подскажите в каком направлении смотреть, тема такая: физическое разделение базы данных. Я так понял это разделение между пользователем, как это работает? не могу найти в интернете.
Антон
Коллеги, где обычно принято держать helm чарты? Вместе с приложением или в отдельной репе?