

Виталий
21.01.2018
22:16:31
Так все таки желательно задавать конкретные вопросы, например: у меня задача такая-то, типы нагрузки такие-то, ожидаемое колво нод и подов такое-то и такое-то, будет запускаться там-то и так-то, какую сеть мне выбрать для всего этого?
понял)
У меня задача научиться разворачивать готовый к продакшену HA кластер для запуска приложений. Сейчас нагрузки минимальны. Кластер просто должен надежно и стабильно работать.
Вторым этапом я планирую научиться создавать компоненты приложения каждый из которых будет пригоден к горизонтальному масштабированию. Это касается php-fpm, nginx, redis, rabbitmq, memcache и прочих, кроме PostgreSQL\MySQL который для продакшена в контейнерах лучше не хранить.
Третим этапом я должен научиться автоматизировать сборку и выкатку приложения используя GitLab CI\Helm\dapp и подобное.
Сейчас это задачи чисто образовательного характера. После получения знаний я буду строить приложения уже готовые к запуску в кубернетес, что является большим плюсом и определенным level up.
Для выполнения первого этапа я сейчас читаю всю документацию по кубернетес и вникаю в концепт и каждый компонент, чтобы полностью понимать, что от чего зависит и как общается. В конце этапа я должен уметь создавать рабочий продакшен кластер руками, без всяких kubespray и прочей магии. Это нужно для того, чтобы уметь не только поднять но и починить\отдебажить проблему оперативно.
Для второго этапа я изучил Docker и его идеологию, а так же на практике освоил пакование приложения и запуск его через docker-compose.
Для тертьего этапа я разобрался с GitLab CI и настраивал простенькие и медленные сценарии сборки имеджей, тестов и прочего, без доставки на прод.
Осталось заполнить некоторые пробелы по знаниям и profit! ?
так норм?


bebebe
21.01.2018
22:21:18
впоследние время тут много интересных личностей появляется, видимо k8s серьезно набирает обороты :)

Виталий
21.01.2018
22:25:33
штука крутая, чего бы не научится ей пользоваться ?

Sergey
22.01.2018
07:28:13

Google

Sergey
22.01.2018
07:30:27
надеюсь что вы восприймите мой совет в конструктивном ключе и приложите свою энергию к освоению kubernetes the hard way, а не написанию простыней в чатах.

Будников
22.01.2018
07:37:51
"kubernetes the hard way" это рекомендованная точка старта?

Alexey
22.01.2018
07:41:09
бл*, как etcd перезапустить нормально?

Konstantin
22.01.2018
07:41:16
а lfs - точка старта для знакомства с линуксом ?

Дмитрий
22.01.2018
07:43:01
Ну знакомство с Ubuntu не сделает из тебя хорошего админа, а вот LFS сильно приблизит

Alexey
22.01.2018
07:43:49
сервис etcd показывается что не может подконнектиться к другой ноде и поэтому не стартует, а на другой ноде показывает тоже самое, и они не стартуют каждый сам по себе и не дають стартовать другим

LonFas
22.01.2018
07:50:16
LFS для старта, это Эребор...

Sergey
22.01.2018
07:51:32
не надо флудить. Почитайте цели автора вопроса, которому я это отвечал.

Alexey
22.01.2018
07:52:04
ну никто не скажет, как etcd перезапустить, когда ноды не хотят стартовать без друг друга?

Anton
22.01.2018
07:53:09
они не то что не хотят друг без друга, просто для работы кластера etcd нужен кворум
и они запоминают соседей по ip адресам и ждут что те ответят
пока связь между большинством не появится etcd работать не будет

Google

Anton
22.01.2018
07:54:00
ну тоесть он работает, но отвечать никому ни на что не будет

Alexey
22.01.2018
07:54:03
ну я знаю что нужен кворум,но как его запустить, если они не хоят запускаться из-за этого?

Anton
22.01.2018
07:54:43
падает процесс?
должн ждать пока не ответят (я как то etcd на стенде сломал, видел как выглядит)

Дмитрий
22.01.2018
07:56:21
процесс запустится если хотя бы один из уже узлов доступен
ETCD_INITIAL_CLUSTER="СПИСОК_УЗЛОВ"
ETCD_INITIAL_CLUSTER_STATE=new
другое дело если они одновременно запускаются и при этом никто из узлов не знает кто мастер среди них

Alexey
22.01.2018
07:58:37
ETCD_INITIAL_CLUSTER_STATE=new - не уничтожет то что было в кластере?

Дмитрий
22.01.2018
07:59:26
тоже изучал этот вопрос... помню нашел yaml-файл для запуска кластера etcd внутри kubernetes! там был именно такой параметр

Alexey
22.01.2018
08:03:06
да процессы запускаются и висят, но
порты не доступны(
curl -k https://10.135.74.89:2380
висит и не отвечает даже сам с себя

Дмитрий
22.01.2018
08:04:32

Alexey
22.01.2018
08:05:53
Unable to register node "kube-master-1" with API server: Post https://127.0.0.1:6443/api/v1/nodes: dial tcp 127.0.0.1:6443: getsockopt: connection refused

Дмитрий
22.01.2018
08:05:54
при запуске кластера с нуля узлы договаривают кто будет главным. и как я понял узел может ожидать узла который имеет самую свежую копию базы

Alexey
22.01.2018
08:06:10
нет, э то сам кубернтес

Дмитрий
22.01.2018
08:07:20

Alexey
22.01.2018
08:08:20
а что он бличить будет? не блочил - я просто на digitalocean resize дроплета сделал, а он не захотел запускаться после этого

Виталий
22.01.2018
08:09:16

Alexey
22.01.2018
08:10:44
может черех kubespray можное етсд перезапустить?

Дмитрий
22.01.2018
08:11:45

Let Eat
22.01.2018
08:15:11

Google

Дмитрий
22.01.2018
08:15:19

Alexey
22.01.2018
08:15:36
блин, iptables пустой, а его же docker докер стартует

Anton
22.01.2018
08:15:40

Дмитрий
22.01.2018
08:16:00

Anton
22.01.2018
08:16:01
https://docs.bitnami.com/kubernetes/how-to/using-kubecfg-with-atlassian-bamboo-to-deploy-kubernetes-workloads-on-gke/
кто нить использует kubecfg? =)

Дмитрий
22.01.2018
08:17:39
за одно вопрос который я так и не постиг! чем отличаются GCE и GKE?

Let Eat
22.01.2018
08:19:09

Anton
22.01.2018
08:22:47
чет даже не знаю, jsonnet действительно такой удобный? или это все изза хейтинга helm? =)

Alexey
22.01.2018
08:23:02
докер как-то криво стартует - не запускает iptables, соответственно нет проброса портов на контейнер etcd
Nov 22 10:05:31 kube-master-1 systemd[1]: Started Docker Application Container Engine.
Nov 22 10:05:31 kube-master-1 env[1158]: time="2017-11-22T10:05:31.599938109Z" level=info msg="API listen on /var/run/docker.sock"
Nov 22 10:05:36 kube-master-1 env[1158]: time="2017-11-22T10:05:36.702670757Z" level=error msg="Handler for GET /v1.24/containers/db76ee297b85/json returned error: No such container: db76ee297b85"
Nov 22 10:05:36 kube-master-1 env[1158]: time="2017-11-22T10:05:36.738380755Z" level=error msg="Handler for GET /v1.24/containers/db76ee297b85/json returned error: No such container: db76ee297b85"
в логах только эти ошибки

Anton
22.01.2018
08:24:16
у тебя кластер kubespray поставил? etcd там стартует из systemd, который просто запускает контейнер

Anton
22.01.2018
08:24:24
который слушает на host network помоему

Alexey
22.01.2018
08:24:37
из кубестрея
я знаю, он ии тсартует, но не к нему нет доступа

Anton
22.01.2018
08:24:58
смотри вообще все правила iptables, дампани трафик, ходит ли вообще что то

Alexey
22.01.2018
08:25:10
там вообще пустой iptables

Anton
22.01.2018
08:25:25
причем тут докер?

Alexey
22.01.2018
08:25:35
gjnvje xnj jy tuj ljk;ty cnfhnjdfnm
потому что он его должен стартовать

Google

Anton
22.01.2018
08:27:18
iptables это cli утилита для управления netfilter, который в ядре и который как то особенно запускать не нужно.
если на то пошло, kube-proxy набивать правила должен вместе с cni


Alexey
22.01.2018
08:28:04
ну факт в том что netfiler пустой
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
вот из-за этого к ETCD нет доступа
как его поправить? руками что ли правила писать?

Admin
ERROR: S client not available

Anton
22.01.2018
08:37:20
ты это как то подтвердил? тут один всего DROP и там 0 packets
ну добавь вручную, раз уверен
логи контейнеров etcd посмотри уж наконец


Alexey
22.01.2018
08:37:59
ну ,дроп для маркированных пакетов, других правил нет, т.е. дефолт - дроп будет
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
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
да нет в логах ничего, кроме того что нет связи
хм, хотя контейнеры etcd к сети хоста привязаны


Дмитрий
22.01.2018
08:42:04
вот как делаю я: останавливаю все сервисы: kube-proxy, docker, iptables, а после в обратном порядке стартую. возможно что-то еще надо запустить
у меня cni+flannel

Alexey
22.01.2018
08:43:13
cni+flannel тоже есть, до куберстпрей их только на воркеры ставит

Let Eat
22.01.2018
08:43:26
чет даже не знаю, jsonnet действительно такой удобный? или это все изза хейтинга helm? =)
Jsnnet удобный, ksonnet не очень пока. Может вот kubecfg попробовать, он поближе к голому jsonnet. В целом очень удобно оперировать объектами, а не текстом, можно удобные api для пользователей сделать , ассерты всякие чтобы читаемые ошибки девелоперам в лицо кидать, по-настоящему можно перетянуть финальные значения из одного компонента в другой без всяких соглашений и условностей.

Дмитрий
22.01.2018
08:44:47

Let Eat
22.01.2018
08:44:54

Google

Anton
22.01.2018
08:48:01

Дмитрий
22.01.2018
08:52:22

Anton
22.01.2018
08:54:16

Дмитрий
22.01.2018
08:55:35

Anton
22.01.2018
08:57:27
kubespray так делает. в к8с правилами уже cni & kube-proxy управляют

Let Eat
22.01.2018
09:03:44


Alexey
22.01.2018
10:29:02
фигня какая-то... всё равно не хочет стартовать etcd
а одна нода вообще, постоянно падает...
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
22.01.2018
10:52:40
Привет!
Кто-нить знает как можно перезапустить контейнеры пода?

Айбелив
22.01.2018
10:53:52

Alexey
22.01.2018
10:53:52

sherzod
22.01.2018
10:54:34
спасибо, чёт неправильно начал мыслить)
попробовал просто удалить под, деплоймен его перезапустил)
надо был мыслить чуть выше