
Maxim
27.08.2016
10:42:18
там ползатель kubelet

Denis
27.08.2016
10:42:24
current - да, сорри)

Maxim
27.08.2016
10:42:40
по поводу юнита твоего
я в этих ваших поттерингд не силен

Google

Maxim
27.08.2016
10:43:07
но меня смущает, что курл же каждый раз курлыкать будет
не?
нужна какая-то проверка, что перекачивать не надо

Denis
27.08.2016
10:46:41
да вроде не критично, это только при старте
зато спасёт от случаев, когда что-то недокачалось и пр
нода ребутиться будет раз в год в идеале :)

Maxim
27.08.2016
10:47:38
от случаев, когда что-то недокачалось спасает проверка чексуммы

Denis
27.08.2016
10:48:15
мне вот что интересно
у меня раньше было так, что мы запускаем apiserver
дожидаемся, пока он запустится
через wupiao
и только потом кублет

Maxim
27.08.2016
10:49:02
вот так у меня в шефе, например:
%w(kubelet kubectl).each do |f|
remote_file "/opt/kubernetes/#{node[:kubernetes][:version]}/bin/#{f}" do
source "https://storage.googleapis.com/kubernetes-release/release/#{node[:kubernetes][:version]}/bin/linux/amd64/#{f}"
mode '0755'
not_if { Digest::MD5.file("/usr/local/bin/#{f}").to_s == node[:kubernetes][:md5][f.to_sym] rescue false }
end
end

Google

Denis
27.08.2016
10:49:11
омг

Maxim
27.08.2016
10:49:29
ключевое тут:
not_if { Digest::MD5.file("/usr/local/bin/#{f}").to_s == node[:kubernetes][:md5][f.to_sym]
то есть перекачивать только если чексуммы не сошлись

Denis
27.08.2016
10:49:46
шеф ~= ansible?

Maxim
27.08.2016
10:49:56
ну цель та же
просто вместо программирования на ямле - программирование на руби
мне это как-то ближе
я уже лет десять как руби-программист

Denis
27.08.2016
10:52:06
#!/bin/bash
# [w]ait [u]ntil [p]ort [i]s [a]ctually [o]pen
[ -n "$1" ] && \
until curl -o /dev/null -sIf http://${1}; do \
sleep 1 && echo .;
done;
exit $?
т.е. мы дожидались, пока порт apiserver откроется и заработает)
так было в мануале CoreOS сказано
трактате

Maxim
27.08.2016
10:53:57
и только потом кублет
kubelet запускается, парсит kube-config.yaml, смотрит в папку, которую ты ему указал ключем --config
а дальше запускаются два (на самом деле больше) параллельных лупа:
один без конца стучит в апи с целью авторизоваться, зарегать ноду и получить заданий от шедулера
второй - запускает все манифесты, которые нашел в --config
таким образом, если это тот kubelet, который запускает апи, то он будет стучать до тех пор, пока сам же его не запустит
в параллельном потоке
у этого подхода всего один минус
мастер нода тоже запускает kubelet
то есть регистрируется для принятия подов
но у меня например серверов мало, и держать отдельную мастер ноду мне не на чем

Google

Maxim
27.08.2016
10:57:23
так что мне ок

Denis
27.08.2016
10:58:48
да и мне ок
у нас на самом деле также
три сервера
master - он же minion
таким образом все манифесты должны быть только на мастере?

Maxim
27.08.2016
10:59:52
на каждом воркере должны быть кьюблет и прокси

Denis
27.08.2016
11:00:03
got it

Maxim
27.08.2016
11:00:24
кьюблет у тебя в поттерингд-юните, а прокси - в /etc/kubernetes/manifests/

Denis
27.08.2016
11:02:32
сейчас как раз прописываю манифесты
наблюдаешь кстати за Kelsey? https://github.com/kelseyhightower/

Maxim
27.08.2016
11:03:26
да, он задорный

Maxim
27.08.2016
11:03:30
хоть и негр ;)
у него был неплохой мануал, кстати: https://github.com/kelseyhightower/kubernetes-the-hard-way
но слишком сильно прибито гвоздями к GCE

Denis
27.08.2016
11:04:31
да им же тоже надо как-то бюджеты отбивать)
но GCE вроде неплох

Maxim
27.08.2016
11:04:55
люто дорого

Denis
27.08.2016
11:05:14
дороже AWS?

Maxim
27.08.2016
11:05:15
мне многоядерные железки дешевле арендовать

Google

Maxim
27.08.2016
11:06:08
зато, если уж ты связываешься с гуглоклаудом, то можно забить на GCE и сразу покупать GKE
тебе выкатывают заказанное количество нод с кьюблетом и урл до аписервера с явками/паролями
и ты в хопре^W кубернетесе

Denis
27.08.2016
11:12:07
vendor lock-in под соусом "vendorless" :)
кстати, у тебя для apiserver стоит:
- --cloud-config=
- --cloud-provider=

Maxim
27.08.2016
11:13:50
historical reason
может уже можно убрать

Denis
27.08.2016
11:13:58
удаляю?
ок

Maxim
27.08.2016
11:14:05
в 1.2 хотело

Admin
ERROR: S client not available

Denis
27.08.2016
11:14:11
- --docker=unix:///var/run/docker.sock
это для докера оставить да?

Maxim
27.08.2016
11:14:23
да

Denis
27.08.2016
11:14:28
гуд
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/05-kubernetes-worker.md
о кстати
ExecStart=/usr/bin/kubelet \
--allow-privileged=true \
--api-servers=https://10.240.0.20:6443,https://10.240.0.21:6443,https://10.240.0.22:6443 \
--cloud-provider= \
--cluster-dns=10.32.0.10 \
--cluster-domain=cluster.local \
--configure-cbr0=true \
--container-runtime=docker \
--docker=unix:///var/run/docker.sock \
--network-plugin=kubenet \
--kubeconfig=/var/lib/kubelet/kubeconfig \
--reconcile-cidr=true \
--serialize-image-pulls=false \
--tls-cert-file=/var/lib/kubernetes/kubernetes.pem \
--tls-private-key-file=/var/lib/kubernetes/kubernetes-key.pem \
--v=2
можно несколько apiserver
или показалось)

Google

Maxim
27.08.2016
11:29:10
показалось

Denis
27.08.2016
11:29:20
)

Maxim
27.08.2016
11:29:22
ходить все-равно только к одному будет
там даже написано вроде
@DenisIzmaylov https://github.com/kubernetes/kubernetes/issues/19161
https://github.com/kubernetes/kubernetes/issues/18174
обе две все еще open
вот когда вторую закроют, можно будет несколько апи-серверс
а когда закроют первую, то можно будет даже kubectl с несколькими серверами сразу

Denis
27.08.2016
15:05:52
ждём с нетерпением)
а то fail-over страдает в концепции

Ivan
27.08.2016
15:08:34

Maxim
27.08.2016
15:08:53
можно
но "вне кластера"
другие кнопки надо жмакать ;)

Denis
27.08.2016
15:09:13
не православно, короче)

Ivan
27.08.2016
15:09:20
Пф)
Вот я понимаю задачу постгрю ХА сделать, а тут...

Denis
27.08.2016
15:09:59
А там какие-то проблемы?

Maxim
27.08.2016
15:10:02
@i_cant_use_4_symbol_nick пагади ты, тут пока еще шашечки
ехать потом
:D

Ivan
27.08.2016
15:10:13
=D