Yerlan
curl -v https://74.125.205.128 * Rebuilt URL to: https://74.125.205.128/ * Hostname was NOT found in DNS cache * Trying 74.125.205.128...
Yerlan
не сдох ли он
Vladimir
curl -v https://storage.googleapis.com * Rebuilt URL to: https://storage.googleapis.com/ * Trying 64.233.162.128... * TCP_NODELAY set * Connected to storage.googleapis.com (64.233.162.128) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem CApath: none
Vladimir
у меня прошел
Yerlan
бляха мухаа
Yerlan
че за фигня
Yerlan
пошел тогда мучать наших сетевиков
Denis
можешь ингресс заюзать под кластерIP
мне нужно внутри пода обратится к сервису)
Vladimir
сервис интернел или экстернал ?
Denis
интернел
Denis
с clusterIP
Denis
sso openam ClusterIP 10.101.131.112 <none> 8080/TCP 5m
Denis
пробовал через expose, не помогло kubectl expose pod openam-v1-65fd7f4f75-kdqf2 -n sso --port=8080 --target-port=8080
Vladimir
если внутри одного неймспейса просто обращайся по имени сервиса
Denis
Да он резолвит ip сервиса
Denis
Но порт прослушать не могу, только 127.0.0.1 8080, либо с другого пода по имени сервиса работает, а сам под для коготоро создан сервис не может обратиться к себе через сервис)
G72K
Всегда было интересно, зачем поду ходить к себе через сервис?
Denis
Спс, попробую)
Denis
Это openam для установки хочет
G72K
Для установки? Вы инсталлер в поде запускаете чтоли?
Denis
нет установку не запускаем, выполняюся конфигурационные скрипты, в которых есть необходимость обращаться по доменному имени, особенность openam
Anton
Hostname жахнуть в под нужный нельзя?)
Victor
Добрый день. Может кто пояснить как работает роутинг с мастера через сервис в поду? Есть под с tcp 5000. Для доступа снаружи вешается сервис с таким же 5000м портом. Если делать tcptraceroute снаружи, то он проходит и видно два хопа с одинаковым ip (сервиса). Видимо уменьшение ttl происходит на сервисе и потом отвечает под. Если делать curl с мастер ноды, то тоже все в порядке. Но tcptraceroute уже не работает. Это какие-то особенности tcptraceroute или где-то стоит ожидать подводных камней при работе с мастера внутрь кубернетеса?
Victor
Ну и параллельно вопрос. Кто нибудь делал self hosted с балансировкой apiserver'a через кубернетевский же сервис?
Victor
Делал, kubelet так ходит в аписервер у меня
Там кроме правки сертификатов, настройки сервиса и замены в конфиге у контроллера и скедулера еще что-то нужно делать?
G72K
Там кроме правки сертификатов, настройки сервиса и замены в конфиге у контроллера и скедулера еще что-то нужно делать?
Session affinity убрать нафиг. Бравые куб ребята очень заняты конференциями (ну и релизом 1.10 справедливости ради) чем починкой )
MRY
Дано 3 ноды для мастеров HA. Ubuntu 16.4 swapoff 4gbRAm 2 CPU 1. Сертификаты для etcd кластера, сертификаты для клиента. 2. Установка etcd на каждую ноду, проверка кластера. Назначаем будущий CIDR etcdctl set /coreos.com/network/config '{ "Network": "10.224.0.0/16","Backend":{"Type":"vxlan"},"SubnetLen": 24 }' 3.Генерирую CNI плагины, создаю env, папки cni.net.d opt/cni/bin с плагинами. 4.Устанавливаю последний flannel, прописываю etcd дял flannel 5.Устанавливаю docker, знакомлю с flannel 6.Устанавливаю kubectl,kubeadm,kubelet,kubernetes-cni 7.kubeadmin —init —config Включает etcd + клиентские сертификаты 8. на борту имею loopback, ethx с IP хоста, flannel0 с подсетью из etcd, docker0 с IP из под сети flannel. 8. В итоге ошибки в сети.DNS поды не поднимаются. Что пропустил ?
bebebe
вероятно вы пропустили kubespray
MRY
вероятно вы пропустили kubespray
У меня нет задачи поднять кластер в автомате, я пытаюсь собрать все сам и понять как оно работает.
bebebe
отлично, поднимите рабочий кластер через kubespray как образец. рядом разворачивайте свой, после нахождения проблем у вас будет образец в который вы можете потыкать
MRY
отлично, поднимите рабочий кластер через kubespray как образец. рядом разворачивайте свой, после нахождения проблем у вас будет образец в который вы можете потыкать
Как вариант вы правы, но на вскидку глядя на порядок действий, если не вдаваться в мелочи вроде создания поддиректорий или прав, то что я возможно упустил ? меня беспокоет несколько вещей. 1. не поднимается cni интерфейс и должен ли, я не удалял docker0 такак как при создании cbr0 и перезагрузки хоста данный бридж пропадает.
G72K
Где у вас CNI конфиг? Его надо подсунуть kubelet чтобы знал
G72K
Как именно не поднимаются поды?
MRY
5. Что значит,знакомите с фланел?
Это значит что при загрузке flannel получает под субнет из CIDR 10.224.0.0/16 к примеру 10.224.5.0.24 и регистрирует его на интерфейс flannel0, далее через скрипт генерируются ENV для docker и интерфейс docker0 получает ip 10.224.5.2
G72K
Докер демон вообще трогать не надо
G72K
Ну и плюс flannel можно self hosted пустить и не морочить голову. Просто daemonset раскатаете и все
G72K
Оно тогда и без etcd заведется как бонус
MRY
Ну и плюс flannel можно self hosted пустить и не морочить голову. Просто daemonset раскатаете и все
А в конфиге можно указать etcd ноды и примаунтить сертификаты ? У вас нет случаем примера kube-flannel.yml ???
G72K
А в конфиге можно указать etcd ноды и примаунтить сертификаты ? У вас нет случаем примера kube-flannel.yml ???
Да зачем вам etcd ноды? На гитхабе фланел прям команда есть kubectl apply , которая все заведет (ну может надо подпрааить будет путь куда CNI конфиги кладут)
MRY
Да зачем вам etcd ноды? На гитхабе фланел прям команда есть kubectl apply , которая все заведет (ну может надо подпрааить будет путь куда CNI конфиги кладут)
ETCD использую что-бы HA кластер собрать, как без etcd хосты поймут что они в кластере а не отдельные мастера ?
Kirill
Всем привет, пытаюсь связать 2 pod, nginx и приложение, в конфиге nginx пытаюсь обращатся как через dns, так и через переменные, в итоге - через dns - работает только в миникуб и не работает в полноценном кубере, через переменные вообще нигде, хотя если зайти в контейнер и сделать echo то он их видит, конфиг такой(2 варианта), что не так? #1 вариант, не работает нигде location / { proxy_pass http://$TELE2PAY_FRONT_API_SVC_SERVICE_HOST:$TELE2PAY_FRONT_API_SVC_SERVICE_PORT; limit_req zone=one burst=10; } #2 вариант, работает в миникуб, но не работает в кубере location / { proxy_pass http://tele2pay-front-api-svc:5000; limit_req zone=one burst=10; }
Kirill
Не понял
CrusaderX
Сервис есть teke2pay-блабла?
Kirill
tele2pay-front-api-svc - это сервис
Kirill
с ClusterIp
Kirill
если по ip его стучать - то работает
CrusaderX
kubectl get svc tele2pay-front-api-svc
CrusaderX
Неймспейс одинаковый для сервиса и пода?
Kirill
Kirill
сервис есть, вот он, а вот лог пода который в него стучится по имени сервиса + порт
Kirill
G72K
А так же проверьте, что в конфиге не стоит свой резолвер
Kirill
Kirill
вот такой стоит
G72K
вот такой стоит
По имени резолвит?
Kirill
в миникуб -да, в большом кубере - нет
Kirill
то что он настроен криво есть вероятность, но что смотреть
Kirill
да живы)
MRY
MRY
Спасибо, не стал заморачиваться с etcd и вроде как заработало
Dmitry
то что он настроен криво есть вероятность, но что смотреть
У nginx не самым очевидным образом работает dns, почитайте про параметр resolver и nginx plus
Kirill
Пока я отдебажил и увидел что к кублета нет данных о днс сервере
Kirill
Похоже при его создании не прописали
Kirill
А миникуб nginx работает по dns отлично
Dmytro
там пароль истекает каждые 12 часов. Какие минимальные роли нужно прописать в IAM для пула-пуша-генерации нового пароля?
Если куб тоже бежит на EC2 в том же аккаунте и датацентре то надо дать права на чтение из ecr registry той instance role с которой запущены ec2 инстансы
Dmitriy
А как получается, что кластерные сервисы работают внутри себя? Знаю что можно их запускать как bare-метал, также можно в docker. А какими средствами запускается сие? Можно немного на пальцах рассказать? :)
G72K
А как получается, что кластерные сервисы работают внутри себя? Знаю что можно их запускать как bare-метал, также можно в docker. А какими средствами запускается сие? Можно немного на пальцах рассказать? :)
static pods видны в kubectl. static pod это обычный под, но его засылают не в apiserver ,а кладут yaml в /etc/kubernetes/manifests, kubelet постоянно смотрит за этой директорией и если там появляются/меняются файлы, то делает соответствующие измнения в докере: стартует новые контейнеры, убивают ненужные. если kubelet удалось соедениться с apiserver, то он отправляет информацию о static pods туда, так что она видна в kubectl get pods
G72K
т.е. это не совсем "кластерные сервисы работают внутри себя", а фейк. можно и по-настоящему, смотрите bootkube , оно как раз для этого: поднимается временный control plane, через него создаются deployment/daemonset с настоящим control plane кластера: apiserver, schduler, controller-manager , затем временный убивается. в таком режиме обновления кластера (кроме kubelet) это просто kubectl apply