Alexey
core@kube-master-1 ~ $ sudo iptables -nvL Chain INPUT (policy ACCEPT 437K packets, 37M bytes) pkts bytes target prot opt in out source destination 437K 37M KUBE-FIREWALL all — * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 443K packets, 59M bytes) pkts bytes target prot opt in out source destination 443K 59M KUBE-FIREWALL all — * * 0.0.0.0/0 0.0.0.0/0 Chain KUBE-FIREWALL (2 references) pkts bytes target prot opt in out source destination 0 0 DROP all — * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
Alexey
вот из-за этого к ETCD нет доступа
Alexey
как его поправить? руками что ли правила писать?
Anton
ты это как то подтвердил? тут один всего DROP и там 0 packets
Anton
ну добавь вручную, раз уверен
Anton
логи контейнеров etcd посмотри уж наконец
Alexey
ну ,дроп для маркированных пакетов, других правил нет, т.е. дефолт - дроп будет
Alexey
2018-01-22 08:38:11.329314 I | raft: b6e881dc193a9c22 received MsgVoteResp from b6e881dc193a9c22 at term 498 2018-01-22 08:38:11.329386 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to 78b1e82276163c68 at term 498 2018-01-22 08:38:11.329429 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to c29ff22666434736 at term 498 2018-01-22 08:38:13.840914 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:13.841003 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:17.579104 I | raft: b6e881dc193a9c22 is starting a new election at term 498 2018-01-22 08:38:17.579200 I | raft: b6e881dc193a9c22 became candidate at term 499 2018-01-22 08:38:17.579248 I | raft: b6e881dc193a9c22 received MsgVoteResp from b6e881dc193a9c22 at term 499 2018-01-22 08:38:17.579281 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to 78b1e82276163c68 at term 499 2018-01-22 08:38:17.579298 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to c29ff22666434736 at term 499 2018-01-22 08:38:18.841437 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:18.841551 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:23.682833 E | etcdserver: publish error: etcdserver: request timed out 2018-01-22 08:38:23.842625 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:23.842732 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:27.078916 I | raft: b6e881dc193a9c22 is starting a new election at term 499 2018-01-22 08:38:27.079016 I | raft: b6e881dc193a9c22 became candidate at term 500 2018-01-22 08:38:27.079065 I | raft: b6e881dc193a9c22 received MsgVoteResp from b6e881dc193a9c22 at term 500 2018-01-22 08:38:27.079097 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to 78b1e82276163c68 at term 500 2018-01-22 08:38:27.079141 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to c29ff22666434736 at term 500 2018-01-22 08:38:28.842962 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:28.843040 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:33.843544 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:33.843708 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:35.079046 I | raft: b6e881dc193a9c22 is starting a new election at term 500 2018-01-22 08:38:35.079118 I | raft: b6e881dc193a9c22 became candidate at term 501 2018-01-22 08:38:35.079162 I | raft: b6e881dc193a9c22 received MsgVoteResp from b6e881dc193a9c22 at term 501 2018-01-22 08:38:35.079178 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to 78b1e82276163c68 at term 501 2018-01-22 08:38:35.079190 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to c29ff22666434736 at term 501 2018-01-22 08:38:38.683855 E | etcdserver: publish error: etcdserver: request timed out 2018-01-22 08:38:38.844487 W | rafthttp: health check for peer 78b1e82276163c68 could not connect: dial tcp 10.135.74.168:2380: i/o timeout 2018-01-22 08:38:38.844566 W | rafthttp: health check for peer c29ff22666434736 could not connect: dial tcp 10.135.72.139:2380: i/o timeout 2018-01-22 08:38:40.329200 I | raft: b6e881dc193a9c22 is starting a new election at term 501 2018-01-22 08:38:40.329338 I | raft: b6e881dc193a9c22 became candidate at term 502
Alexey
2018-01-22 08:38:40.329366 I | raft: b6e881dc193a9c22 received MsgVoteResp from b6e881dc193a9c22 at term 502 2018-01-22 08:38:40.329387 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to c29ff22666434736 at term 502 2018-01-22 08:38:40.329428 I | raft: b6e881dc193a9c22 [logterm: 11, index: 8994531] sent MsgVote request to 78b1e82276163c68 at term 502
Alexey
да нет в логах ничего, кроме того что нет связи
Alexey
хм, хотя контейнеры etcd к сети хоста привязаны
Dmitriy
вот как делаю я: останавливаю все сервисы: kube-proxy, docker, iptables, а после в обратном порядке стартую. возможно что-то еще надо запустить
Dmitriy
у меня cni+flannel
Alexey
cni+flannel тоже есть, до куберстпрей их только на воркеры ставит
G72K
чет даже не знаю, jsonnet действительно такой удобный? или это все изза хейтинга helm? =)
Jsnnet удобный, ksonnet не очень пока. Может вот kubecfg попробовать, он поближе к голому jsonnet. В целом очень удобно оперировать объектами, а не текстом, можно удобные api для пользователей сделать , ассерты всякие чтобы читаемые ошибки девелоперам в лицо кидать, по-настоящему можно перетянуть финальные значения из одного компонента в другой без всяких соглашений и условностей.
Dmitriy
cni+flannel тоже есть, до куберстпрей их только на воркеры ставит
ясно, в моем кластере все ноды являются мастер+воркерами
Anton
ну ,дроп для маркированных пакетов, других правил нет, т.е. дефолт - дроп будет
в твоем листинге везде policy accept. ты это, не кидай сюда простыни логов. итак видна проблема - etcd не видит соседей. разберись почему
Anton
Можно простыню проверок на внутренние правила накатать и не писать свой admission plugin для этого.
тоесть описываем все в коде, потом превращает в json и кормим в kubectl? helm не нужен?
Dmitriy
ну ,дроп для маркированных пакетов, других правил нет, т.е. дефолт - дроп будет
кстати, у меня была проблема с iptables и kubernetes. писал сюда, так как сам не понимал что проиходит. в итоге запускаю docker дополняя скрипт systemd вот таким образом: [Service] ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
Dmitriy
Dmitriy
можно еще docker --iptables=false сделать
думал об этом. только нужно ли это делать обязательно для правильной так сказать работы kubernetes?
Anton
kubespray так делает. в к8с правилами уже cni & kube-proxy управляют
G72K
тоесть описываем все в коде, потом превращает в json и кормим в kubectl? helm не нужен?
Имено, ksonnet может и сам в куб ходить, но после хелма я только kubectl apply доверяю, производственная травма :)
Alexey
Alexey
фигня какая-то... всё равно не хочет стартовать etcd
Alexey
а одна нода вообще, постоянно падает... Jan 22 10:31:38 kube-master-3 etcd[1738]: 2018-01-22 10:31:38.043160 I | rafthttp: started streaming with peer b6e881dc193a9c22 (writer) Jan 22 10:31:38 kube-master-3 etcd[1738]: 2018-01-22 10:31:38.043902 I | rafthttp: started streaming with peer b6e881dc193a9c22 (stream MsgApp v2 reader) Jan 22 10:31:38 kube-master-3 etcd[1738]: 2018-01-22 10:31:38.045108 I | rafthttp: started streaming with peer b6e881dc193a9c22 (stream Message reader) Jan 22 10:31:39 kube-master-3 systemd[1]: etcd.service: Main process exited, code=exited, status=137/n/a Jan 22 10:31:39 kube-master-3 systemd[1]: etcd.service: Unit entered failed state. Jan 22 10:31:39 kube-master-3 systemd[1]: etcd.service: Failed with result 'exit-code'. Jan 22 10:31:54 kube-master-3 systemd[1]: etcd.service: Service hold-off time over, scheduling restart. Jan 22 10:31:54 kube-master-3 systemd[1]: Stopped etcd docker wrapper. Jan 22 10:31:54 kube-master-3 systemd[1]: Starting etcd docker wrapper... Jan 22 10:31:54 kube-master-3 docker[2035]: etcd3 Jan 22 10:31:54 kube-master-3 systemd[1]: Started etcd docker wrapper.
sherzod
Привет! Кто-нить знает как можно перезапустить контейнеры пода?
Салтыдык
Привет! Кто-нить знает как можно перезапустить контейнеры пода?
* рестарт всей поды * хэндлинг сигналов в контейнере
Alexey
Привет! Кто-нить знает как можно перезапустить контейнеры пода?
штатных стредств нет, - или зайти на хост и докером рестатрануть или зайти в контейнер и kill -9 1 сделать
sherzod
спасибо, чёт неправильно начал мыслить) попробовал просто удалить под, деплоймен его перезапустил)
sherzod
надо был мыслить чуть выше
Alexey
***, что с етсд то делать? уже нет идей, ноды подымаются, потом выключаются т.к. не видят друг друга
Alexey
связь между нодами есть, проблема началась после рестарта нод
Etki
емнип там специальный ключ есть "ждать, пока не поднимется кластер"
Alexey
и как он выглядит? не могу найти
Etki
и как он выглядит? не могу найти
а вот это я наврал на самом деле, это у консула
Dmitry
status 137 => кто-то сделал kill 9
oom killer мог отстрелить
Lex
а lfs - точка старта для знакомства с линуксом 🙂
сравнить k8s the hard way и lfs это конечно сильно
Serega
господа, есть солюшин чтобы поды в новом деплое стартовали по одному, а не пачкой? Т.е. подобное strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate только при создании деплоймента.
Serega
мне на ум только кастыли с scale приходят...
Anton
statefullset их строго по очереди запускает
Serega
statefulset?
хм, как вариант. Спасибо. Хоть у меня и не statefull, но просто нужно ordered deploy во избежание коллизий провижина.
Etki
простите за педантизм, но - костыли - stateful
Anton
можно как-то посмотреть сетевые интерфейсы, созданные в контейнере, с ноды?
Anton
например, чтобы убедиться, что интерфейс исчез с исчезновением пода
AB 🇨🇾 🍉
Гайз, что юзать Replica Controller или Deployments?
AB 🇨🇾 🍉
нужен апдейт сервисов через CI
Denis
Привет, подскажите пожалуйста как принято делать и что гуглить: Требуется контейнер в кластере (например с django сервисом) сделать доступным по урлу сабдомена, причем каждому новому контейнеру давать свой сабдомен. Вроде container_1.domain.ru, container_2.domain.ru и тд.
Etki
нужен апдейт сервисов через CI
Наврал чуток в предыдущем сообщении чуток. Конечно, деплойменты, они являются более высокоуровневой оберткой над ReplicaSet и позволяют постепенно вводить/выводить поды. ReplicaSet в свою очередь нацелен заменить Replica Controller, емнип.
AB 🇨🇾 🍉
Про замену понятно, но как отслеживать rollingUpdates, если deployment делает это автоматический
AB 🇨🇾 🍉
а я люблю наблюдать за процессом :)
Alexey
меня ещё смущает... tcp 138 0 10.135.74.168:2380 10.135.74.89:52316 ESTABLISHED Recv-Q - не 0
Vitaly
#whois ▫️Какой у вас проект или где работаете? rentmania.com ▫️В чём вы специалист? Ruby/Rails, JS, Golang, microservices, chef, ansible, docker. ▫️Чем можете быть интересны или полезны сообществу? Готов делиться опытом ▫️Чем интересно сообщество вам? В данный момент пытаюсь развернуть production cluster kubernetes, есть вопросы ▫️Откуда вы? Работаю удаленно, живу в г. Киров ▫️Как узнали про группу? Через поиск
Vitaly
Всем привет, подскажите как собрать production cluster kubernetes
Vitaly
из каких кусочков
Vitaly
Уже потавил его несколькими способами ), kubeadm, kubespray
Alex
shit and bricks
Anonymous
Vitaly
зачем используют Vault, когда есть Secrets в kubernetes
Vitaly
что использовать для сети, calico или flannel или не важно
Vitaly
Хочу в кластере крутить postgres, надо ли для этого настраивать ceph или gluster ?
G72K
Хочу в кластере крутить postgres, надо ли для этого настраивать ceph или gluster ?
Ceph поверх drbd поверх gluster , все это в контейнере с aufs на ядре не старше 2.6.32 . Ваша постгрес скажет вам спасибо
Lex
оооочень безопасно
Lex
vault таки неплохо интегрируется с k8s, проблема в том, что придется отдельно держать vault и желательно не в кубере
G72K
оооочень безопасно
Расскажите, чем доступ на чтение в etcd так отличается от доступа на чтение в vault
AB 🇨🇾 🍉
по сетке чазе всего юзают flannel, у меня он в последней версии стал отваливаться, перешел на calico
AB 🇨🇾 🍉
а для постреса любой persistent Volume пойдет, хоть NFS
Vitaly
по сетке чазе всего юзают flannel, у меня он в последней версии стал отваливаться, перешел на calico
вот в kubespray тоже по дефолту calico, понятно что там node-to-node mesh , а что такое route-reflectors ??? Вы не в курсе
G72K
а файловая система для etcd тоже шифруется?
Хотите - шифруйте, кто мешает. Хранение base64 тут непричем
Serega
а для постреса любой persistent Volume пойдет, хоть NFS
вообщето все зависит от задач, нагрузок и т.д. для hello-world - подойдет.
Vitaly
микросервис с пользователями надо хранить в России