Mikhail [azalio]
ага
Mikhail [azalio]
я в курсе
Vadim
главное ИБ-шникам не рассказывай
plot twist: я и есть тот ИБшник, просто забыл зачем этот файл нужен
Tadeusz
Denis
Народ! тут видел картинку про кубеня, там еще костыль помоему был изображен)))Не у кого не завалялось?)
Andor
Eduard
каков твой совет по baremetal и DNS'ам?
локальный bind с зонами
Denis
Благодарю👍
Tadeusz
Tadeusz
куда домен направлять? на серый IP? :D
Eduard
Спрячь в cloudflare.
Eduard
Или ты про внутрикластерное общение?
Edouard
👌
𝚔𝚟𝚊𝚙𝚜
https://gravitational.com/teleport/ умеет exec сессии логировать
Без RBAC оно бесполезно, к сожалению
Игорь
куда домен направлять? на серый IP? :D
Зачем серый? Возьми /24 в аренду :)
Tadeusz
кто ж мне в хетцнере даст /24
Tadeusz
еще и на пачку серверов
Sergey
а вы точно доку к хетцнеру читали?
Sergey
https://wiki.hetzner.de/index.php/Vswitch/ru
Sergey
можно набрать /27
Sergey
ну если нужна именно /24 -тогда ой
𝚔𝚟𝚊𝚙𝚜
Вопрос на засыпку: Как обучить wget из busybox доверять кубовому CA-сертификату?
𝚔𝚟𝚊𝚙𝚜
думал подсунуть его в /etc/ssl/certs/ca-certificates.crt - но так не работает
Andor
А он вообще с ссл собран?
Vadim
думал подсунуть его в /etc/ssl/certs/ca-certificates.crt - но так не работает
хэшировать надо - https://oct8l.gitlab.io/posts/2018/94/allow-ssl-in-wget-openwrt/
Andor
Oh shi~
Anonymous
Подскажите, пожалуйста в чём у меня ошибка ? Настраиваю кластер - три bare-metal сервера - все мастера и поды тоже на них планируется запускать. Сеть - calico Кластер настраивался kubespray Хочу настроить ingress. Если настроить его рекомендованным путём (https://github.com/kubernetes/ingress-nginx/blob/master/deploy/provider/baremetal/service-nodeport.yaml) - то ломается доступ к api kubernetes, т.к. он тоже провешивается на 443 порт на 10.233.0.1 Ок, вешаю его без указания типа с использованием External IP В этом случае этот IP вешается на интерфейс kube-ipvs на каждом мастере и как следствие регулярно случаются конфликты за IP - например падает ssh-соединение. Вопрос - как вы настраиваете bare-metal кластера ? Возможно, вы видите явную ошибку. По запросу могу приложить конфиги - вопрос что именно отправить.
Anonymous
И еще один вопрос - по документации и коду Service type: LoadBalancer - это только для облаков. по коду в случае использования такого типа сервиса должна отдаваться ошибка: https://github.com/kubernetes/kubernetes/blob/a3ccea9d8743f2ff82e41b6c2af6dc2c41dc7b10/pkg/controller/service/service_controller.go#L226 У меня же почему-то такого типа сервисы успешно создаются.
Sash
Для начала не на мастера
Anonymous
привет. а порт на который пробрасываете не хотите сменить?
нет, http/https хотелось бы принимать на своих портах.
Paul
нет, http/https хотелось бы принимать на своих портах.
ну так что-то другое убрать с этих портов...
Paul
или перед этим реверспрокси поставьте...
Anonymous
ну так что-то другое убрать с этих портов...
Я так и не понял в чём цель удерживания API кубера на 443 порту. кубспрей может этот порт менять ? Не понял про реверс-прокси. Перед кластером кубера ставить внешний балансировщик ?
Anonymous
Вопрос-то в том, что с практикой указывания External-IP на интерфейсе kube-ipvs на всех нодах - у меня так и так будут конфликты этого IP как этого избежать?
Nikolay
Вопрос-то в том, что с практикой указывания External-IP на интерфейсе kube-ipvs на всех нодах - у меня так и так будут конфликты этого IP как этого избежать?
например потыкать metallb. и load balancer у вас заработает после этого. главное чтоб свободные адреса в сети были, или выделить отдельную сетку и закинуть в AS по BGP
Anonymous
У меня на сервере 2 IP LAN и WAN Для kubespray я указываю LAN, чтобы сервисы висели снаружи на WAN IP Но apiserver вешается по умолчанию на все IP https://gist.github.com/bazzilio/938620e4221e8399842be4d67e41e1ed
Anonymous
я просто боюсь, что с metallb эта история повторится.
Anonymous
например потыкать metallb. и load balancer у вас заработает после этого. главное чтоб свободные адреса в сети были, или выделить отдельную сетку и закинуть в AS по BGP
А можно подробнее про отдельную сетку - чем это поможет и в каких случаях ? Выделить сетку в локалке - не проблема в целом.
Nikolay
А можно подробнее про отдельную сетку - чем это поможет и в каких случаях ? Выделить сетку в локалке - не проблема в целом.
у вас появится отдельная сеть, ip из которой будут автоматически выделяться при создании loadbalancer сервиса
Anonymous
у вас появится отдельная сеть, ip из которой будут автоматически выделяться при создании loadbalancer сервиса
а можно ссылку на какую-либо доку ? не встречал подобных конфигураций.
Nikolay
выше же назвал, metallb. https://metallb.universe.tf/
Anonymous
значит не понял про сетку, спасибо! А без metallb никак нельзя ? Обязательно нужен внешний балансировщик ?
Anonymous
Давайте я еще раз объясню источник своих сомнений. Сейчас у меня успешно создаются сервисы. Проблема в том, что IP, который я использую, как External-IP вешается на kube-ipvs интерфейсы на всех нодах и возникают конфликты внутри сети по этому IP. Поэтому я вовсе не уверен, что Metal LB решит эту проблему.
Andor
металлб даёт возможность сделать LoadBalancer
Andor
для kind: Service
Nikolay
IP сервиса не должен совпадать с IP ноды. Если вам нужен сервис на ip ноды - используйте nodeport
Gabriel
Что есть IP ноды? Если два интерфейса
Anonymous
Переформулирую, я правильно понимаю, что у меня 2 варианта - LoadBalancer (мне нужно самому создать такой балансировщик, или metallb) или юзать NodePort. сейчас еще раз доку перечитал. Может быть я должен просто Endpoint сделать ? https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors
𝚔𝚟𝚊𝚙𝚜
Используйте отдельный адрес, который не слушают кубелеты
Anonymous
Я писал об этом, у вас IPVS?
Писали где ? IPVS, да. Глупый вопрос, но, возможно, есть быстрый ответ: > Используйте отдельный адрес, который не слушают кубелеты Кубспрей позволяет его задавать ? Что порекомендуете для установки кластера ?
𝚔𝚟𝚊𝚙𝚜
Писали где ? IPVS, да. Глупый вопрос, но, возможно, есть быстрый ответ: > Используйте отдельный адрес, который не слушают кубелеты Кубспрей позволяет его задавать ? Что порекомендуете для установки кластера ?
> Писали где? Писал много раз здесь, не вам) > Кубспрей позволяет его задавать ? Кубеспрей деплоит кластер, остальное ложится на вас, вы писали что вручную указываете externalIP для сервиса - вот этот IP-адрес не должен существовать
Anonymous
Сервисы создаваться будут, но IP не получат. Для Baremetal можно использовать MetalLB, с пулом адресов, которые вы будете выдавать сервисам. IP должны быть свободными
Для меня просто странно, что без metal lb ничего не работает. но огромное спасибо за советы, будет внедрять чуть раньше, чем планировалось :)
𝚔𝚟𝚊𝚙𝚜
> Что порекомендуете для установки кластера ? Я бы рекомендовал keepalived+haproxy в качестве балансироввщика, и kubeadm в вашем случае
𝚔𝚟𝚊𝚙𝚜
Anonymous
а что будет endpoint этой haproxy ?
𝚔𝚟𝚊𝚙𝚜
Еще есть вариант отключить stricarp на кубелетах --strict-arp=false тогда externalIP будt ет анонситься и без metallb, но делать это не совесем желательно, так как на каждый arp-запрос вы получите сразу три arp-ответа, то есть это имеет смысл только если у вас мало нод
Anonymous
> Писали где? Писал много раз здесь, не вам) > Кубспрей позволяет его задавать ? Кубеспрей деплоит кластер, остальное ложится на вас, вы писали что вручную указываете externalIP для сервиса - вот этот IP-адрес не должен существовать
Огромное спасибо за ответы! Этот пункт сильно не понятен: > externalIP для сервиса - вот этот IP-адрес не должен существовать но я завтра еще перечитаю и задам вопросы.
𝚔𝚟𝚊𝚙𝚜
Но если есть возможность, то лучше keepalived, т.к. для балансировки api-server он все равно понадобится
𝚔𝚟𝚊𝚙𝚜
𝚔𝚟𝚊𝚙𝚜
В случае же MetalLB, его даже на интерфейс вешать не надо, он сам его анонсит
𝚔𝚟𝚊𝚙𝚜
без metallb его нужно будет повесить на тот же keepalived, например
𝚔𝚟𝚊𝚙𝚜
а что будет endpoint этой haproxy ?
в качестве endpoint's api-сервера
Anonymous
Но если есть возможность, то лучше keepalived, т.к. для балансировки api-server он все равно понадобится
я вот не очень понимаю кто обеспечивает доступность 10.233.0.1 в kubespray, но вопрос зачем тут keepalived https://gist.github.com/bazzilio/938620e4221e8399842be4d67e41e1ed#file-kubectl-get-o-yaml-endpoints В общем, какие минусы у MetalLB по сравнению с keepalived > в качестве endpoint's haproxy будет api-сервер А ingress ?
Anonymous
в целом-то понятно - если кубер будет задумчив - с metal lb - лишняя точка отказа. но как тогда проксировать ingress я не понимаю, возможно, завтра нужно обдумать будет.
Anonymous
то есть я проксирую запросы к api на 10.233.0.1 для ингресс выделяю 10.233.100.1 остальные запросы проксирую туда ? Я верно понял архитектуру ? А дальше каждый сервис занимается своим делом ?
𝚔𝚟𝚊𝚙𝚜
> А ingress ? Под ingress отдельный IP в keepalived, нужен только IP, т.к. дальше kebe-proxy сам на ингресс отправит
𝚔𝚟𝚊𝚙𝚜
MetalLB имеет смысл если планируется много входных точек и много IP
𝚔𝚟𝚊𝚙𝚜
нет там nginx, там kube-proxy.
что бы запустился kube-proxy, нужен рабочий kubelet, что бы kubelet начал работать, ему нужно подключиться к api-server, так вот api-server всегда должен быть доступен, еще до момента когда все начало работать
𝚔𝚟𝚊𝚙𝚜
соответсвенно 10.233.0.1 будет роутить на api-серверы через haproxy а 10.233.100.1 будет роутить в кластер через kube-proxy
Anonymous
> А ingress ? Под ingress отдельный IP в keepalived, нужен только IP, т.к. дальше kebe-proxy сам на ингресс отправит
У меня есть большое подозрение, что у нас какие-то разные ситуации. Если мы объявляем сервис на 443 порту - kube-proxy повесит его на все IP, включая IP Metal LB, если не указать External IP.
Anonymous
Поэтому я еще задам отдельный вопрос - а у кого-то есть bare metal, установленный через kubespray ? Можете опытом поделиться ? Или лучше, как советует сообщество - поставить через kubeadm ?
Anonymous
kubespray вешает nginx в качестве haproxy на каждую ноду, а кубелеты стучатся в localhost
походу я не прав, но для нормального ответа мне нужно время. Спасибо за развёрнутый ответ - я еще посмотрю как именно всё это работает.