Никита
Если никаких дефолтных фаерволов не включено, самый простой способ перепривезти правильные правила — перезагрузиться.
Mikhail
# yes | kubeadm reset && rm -rf /etc/kubernetes && rm -rf /etc/ssl/etcd/ /var/lib/etcd/ && systemctl disable etcd && systemctl stop etcd && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X && reboot
Mikhail
Хз зачем я их затираю перед ребутом. "Так исторически сложилось"
Mikhail
Понял, почитаю там тогда
Никита
Вкратце, для сервисов с ClusterIP выделяется ip из сети сервисов, он присваивается dummy-интерфейсу на каждой ноде; на каждой ноде конфигурится ipvs с бакендами из подов, которые попадают под селектор в описании сервиса, всё. Ну и обычно этим занимается kube-proxy.
Mikhail
ipvs как-то меня обошёл. Спасибо большущее, буду обмазываться
Никита
Есть же reset.yml
Mikhail
Есть же reset.yml
Уууу, сейчас заживём
Mikhail
Надо на курсы повышения квалификации гугления записаться
Mikhail
ipvsadm -l охренеть как медленно работает на этой машине. С -n мгновенно. Роутинг корректный, какая-то шляпа всё ещё происходит. Большое спасибо за помощь, дальше сам ночью продолжу
Mikhail
Угу. Там вообще всё не слава богу даже меж машин с установкой соединений. Сетевое оборудование недоступно для меня
Pavel
если днссломан или не верен то кубик пытается отрезовить имя а ему никто не отвчает делается три запроса с ожиданием в 5 секунд. Можно указать любой рабочий главное отвечал быстро.
Mikhail
Там около 3 секунд резолв. Пока на opendns пропишу, потом разберусь
Anonymous
я забил на попытки поднять в графане метрики(sidecar proxy работал, но все поды падали на healthcheck), стер istio и поставил его через gke console там istio в настройках кластера есть, теперь у меня вопрос, почему на видео у них есть топология, а у меня нет? https://app.google.stackdriver.com/topology https://youtu.be/wCJrdKdD6UM?t=778 удобнее ли метрики stackdriver чем графана? и как теперь мне еще добавить тулзы типа kiali, отдельно их ставить через helm?
Max
Ребят, у нас есть проект, который представляет собой обертку над kubernetes api. Как лучше всего организовать локальные dev environments для разработчиков? minikube?
Max
чтобы можно было одной командой поднять локальный kube-кластер с нашими daemonsets и прогонять тесты на нем, например
Mikhail
Да
Max
Да
А в миникубе возможно несколько виртуальных нод запустить?
Mikhail
Не пробовал
Никита
По-моему, куда проще.
Никита
Видимо, иметь возможность без последствий поломать кластер?
Никита
А в миникубе возможно несколько виртуальных нод запустить?
Наверное, можно просто разных кластеров насоздавать. Я хотел предложить с --vm-driver=none несколько параллельно запускать в локальном докере, но там мб какие-нить конфликты портов будут или типа того.
Vladimir
Господа, а я правильно понимаю, что на один куб может быть один ингресс контроллер и соответственно один лб?
Ivan
нет, может быть сколько угодно
Vladimir
Сколько угодно контроллеров?
Rainbow
Сколько угодно контроллеров?
да, но это не сильно нужно
Vladimir
Глупость говоришь
Возможно, я не настоящий сварщик, я только учусь
Vladimir
Но на один контроллер - один лб, так?
Ivan
что в твоём понимании "лб"?
Vladimir
лоад балансер, например гугловый, который сам создается при создании контроллера
Ivan
если отностительно ингресс контроллеров, то да
Ivan
если про service type loadbalancer, то может быть много
Vladimir
то есть, если я хочу несколько Ип привязать к кубу, то я должен сделать несколько ингресс контроллеров?
Andrey
К одному контроллеру можно много сервисов и любых.
Andrey
Просто селекторы одинаковые укажи.
Vladimir
пример не покажите?
Mikhail
Это ipvs-сервис, ipvsadm -l.
Короче, вообще хз. ipvsadm -ln показывает постоянно одно активное соединение. ipvsadm -lnc с ss говорят, что это kube-controller, причём, судя по -lnc, он висит 30 секунд, потом сбрасывается и создаётся новое соединение. Правила везде одинаковые -A -t 10.233.0.1:443 -s rr -a -t 10.233.0.1:443 -r 10.1.0.218:6443 -m -w 1 -a -t 10.233.0.1:443 -r 10.1.0.243:6443 -m -w 1 -a -t 10.233.0.1:443 -r 10.1.0.251:6443 -m -w 1 все 3 точки курлятся отлично. Сам балансер - нет, сразу рвётся. Жопа яро полыхает, но хочу докопаться до истины, это отличный способ узнать о внутренностях немного больше обычного
Mikhail
Кажется, что следующий этап - пересборка ядра с CONFIG_IP_VS_DEBUG
Mikhail
tcp 6 86381 ESTABLISHED src=10.1.0.243 dst=10.233.0.1 sport=37824 dport=443 src=10.1.0.251 dst=10.1.0.243 sport=6443 dport=37824 [ASSURED] mark=0 use=1
Mikhail
На соседних машинах, где 10.233.0.1:443 отвечает нормально, такого зависшего соединения нет
Pavel
днс за сколько отвечает?
Mikhail
Там около 3 секунд резолв. Пока на opendns пропишу, потом разберусь
Тут я немного перебрал, хех. Быстро он отвечает, доли секунды
Mikhail
Попробую из контроллера сейчас
Pavel
и в контейнере?
Mikhail
Вот да, минуту, проверю
Pavel
вот и мы туда наступили. но у нас это быстрее проявилось. у нас было до 1000+ висящих соединений. поды активно общались с api серверром
Mikhail
Ну тут что-то, кажется, иное. Потому что контейнер с coredns тоже валится: E1222 21:17:11.275513 1 reflector.go:205] github.com/coredns/coredns/plugin/kubernetes/controller.go:313: Failed to list *v1.Endpoints: Get https://10.233.0.1:443/api/v1/endpoints?limit=500&resourceVersion=0: dial tcp 10.233.0.1:443: connect: connection refused
Mikhail
Вообще интересно, почему kubespray сетапит всего один под с DNS на три мастера
Pavel
должен 3 делать
Mikhail
Но не делает
Mikhail
Блин, а других нодах тоже не работает 10.233.0.1:443
Mikhail
Работал же. Вроде...
Mikhail
Попробую kube_proxy_mode поменять на iptables, раз уж с ipvs не идёт
Mikhail
Ну, короче, вот...
Pavel
ipvs nat?
Mikhail
Хз что не так с ipvs, через iptables заработало
Mikhail
kube_proxy_mode: iptables
Pavel
в том что был до преустановки
Mikhail
Прошу прощения, вопроса не понял. nat причём?
Pavel
ipvs умеет работать с режиме nat gatway ipip
Pavel
http://kb.linuxvirtualserver.org/wiki/Ipvsadm forwarding methods (NAT, tunneling, and direct routing), and eight load
Mikhail
Да, NAT. Правила были такие: -A -t 10.233.0.1:443 -s rr -a -t 10.233.0.1:443 -r 10.1.0.218:6443 -m -w 1 -a -t 10.233.0.1:443 -r 10.1.0.243:6443 -m -w 1 -a -t 10.233.0.1:443 -r 10.1.0.251:6443 -m -w 1 -A -t 10.233.0.3:53 -s rr -a -t 10.233.0.3:53 -r 10.233.99.5:53 -m -w 1 -A -t 10.233.0.3:9153 -s rr -a -t 10.233.0.3:9153 -r 10.233.99.5:9153 -m -w 1 -A -t 10.233.7.84:80 -s rr -A -t 10.233.37.10:443 -s rr -A -t 10.233.50.248:443 -s rr -A -t 10.233.52.3:44134 -s rr -a -t 10.233.52.3:44134 -r 10.233.102.6:44134 -m -w 1 -A -u 10.233.0.3:53 -s rr -a -u 10.233.0.3:53 -r 10.233.99.5:53 -m -w 1
Mikhail
У меня на виртуалках та же проблема была, кстати. Возможно это даже не косячные инстансы, а баг. В течение недели попробую зарепрольюсить на чистых машинах и зарепорчу
Anton
многие ошибки где в логах указано dial tcp 10.233.0.1:443: connect: connection refused это баг https://github.com/kubernetes/kubernetes/issues/71071 временное решение - kube_proxy_mode: iptables
Andrei
установил cert-manager helm install stable/cert-manager \ --namespace certmanager \ --name cert-manager \ --set createCustomResource=false \ --set ingressShim.defaultIssuerName=letsencrypt-prod \ --set ingressShim.defaultIssuerKind=ClusterIssuer \ --set rbac.create=false \ --set serviceAccount.create=false как в уже установленном поменять значение createCustomResource=false на createCustomResource=true? делаю helm upgrade install stable/cert-manager \ --namespace certmanager \ --name cert-manager \ --set createCustomResource=true \ --set ingressShim.defaultIssuerName=letsencrypt-prod \ --set ingressShim.defaultIssuerKind=ClusterIssuer \ --set rbac.create=false \ --set serviceAccount.create=false пишет Error: unknown flag: --name
Pavel
helm upgrade [RELEASE] [CHART] [flags]
Pavel
там не ни субкомманды install ни параметра —name
Andrei
helm upgrade [RELEASE] [CHART] [flags]
читал ток не могу понять от куда значение [RELEASE] [CHART] брать убрал —name и добавил CHART (cert-manager-v0.5.0) helm upgrade install cert-manager-v0.5.0 stable/cert-manager \ --namespace certmanager \ --set createCustomResource=true \ --set ingressShim.defaultIssuerName=letsencrypt-prod \ --set ingressShim.defaultIssuerKind=ClusterIssuer \ --set rbac.create=false \ --set serviceAccount.create=false но пока говорит Error: This command needs 2 arguments: release name, chart path