Denis
current - да, сорри)
Maxim
по поводу юнита твоего
Maxim
я в этих ваших поттерингд не силен
Maxim
но меня смущает, что курл же каждый раз курлыкать будет
Maxim
не?
Maxim
нужна какая-то проверка, что перекачивать не надо
Denis
да вроде не критично, это только при старте
Denis
зато спасёт от случаев, когда что-то недокачалось и пр
Denis
нода ребутиться будет раз в год в идеале :)
Maxim
от случаев, когда что-то недокачалось спасает проверка чексуммы
Denis
мне вот что интересно
Denis
у меня раньше было так, что мы запускаем apiserver
Denis
дожидаемся, пока он запустится
Denis
через wupiao
Denis
и только потом кублет
Maxim
вот так у меня в шефе, например:
%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
Denis
омг
Maxim
ключевое тут:
not_if { Digest::MD5.file("/usr/local/bin/#{f}").to_s == node[:kubernetes][:md5][f.to_sym]
Maxim
то есть перекачивать только если чексуммы не сошлись
Denis
шеф ~= ansible?
Maxim
ну цель та же
Maxim
просто вместо программирования на ямле - программирование на руби
Maxim
мне это как-то ближе
Maxim
я уже лет десять как руби-программист
Denis
#!/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 $?
Denis
т.е. мы дожидались, пока порт apiserver откроется и заработает)
Denis
так было в мануале CoreOS сказано
Denis
трактате
Maxim
и только потом кублет
kubelet запускается, парсит kube-config.yaml, смотрит в папку, которую ты ему указал ключем --config
а дальше запускаются два (на самом деле больше) параллельных лупа:
один без конца стучит в апи с целью авторизоваться, зарегать ноду и получить заданий от шедулера
второй - запускает все манифесты, которые нашел в --config
Maxim
таким образом, если это тот kubelet, который запускает апи, то он будет стучать до тех пор, пока сам же его не запустит
Maxim
в параллельном потоке
Maxim
у этого подхода всего один минус
Maxim
мастер нода тоже запускает kubelet
Maxim
то есть регистрируется для принятия подов
Maxim
но у меня например серверов мало, и держать отдельную мастер ноду мне не на чем
Maxim
так что мне ок
Denis
да и мне ок
Denis
у нас на самом деле также
Denis
три сервера
Denis
master - он же minion
Denis
таким образом все манифесты должны быть только на мастере?
Maxim
на каждом воркере должны быть кьюблет и прокси
Denis
got it
Maxim
кьюблет у тебя в поттерингд-юните, а прокси - в /etc/kubernetes/manifests/
Denis
сейчас как раз прописываю манифесты
Denis
наблюдаешь кстати за Kelsey? https://github.com/kelseyhightower/
Maxim
да, он задорный
Maxim
хоть и негр ;)
Maxim
у него был неплохой мануал, кстати: https://github.com/kelseyhightower/kubernetes-the-hard-way
Maxim
но слишком сильно прибито гвоздями к GCE
Denis
да им же тоже надо как-то бюджеты отбивать)
Denis
но GCE вроде неплох
Maxim
люто дорого
Denis
дороже AWS?
Maxim
мне многоядерные железки дешевле арендовать
Maxim
зато, если уж ты связываешься с гуглоклаудом, то можно забить на GCE и сразу покупать GKE
Maxim
тебе выкатывают заказанное количество нод с кьюблетом и урл до аписервера с явками/паролями
Maxim
и ты в хопре^W кубернетесе
Denis
vendor lock-in под соусом "vendorless" :)
Denis
кстати, у тебя для apiserver стоит:
- --cloud-config=
- --cloud-provider=
Maxim
historical reason
Maxim
может уже можно убрать
Denis
удаляю?
Denis
ок
Maxim
в 1.2 хотело
Denis
- --docker=unix:///var/run/docker.sock
Denis
это для докера оставить да?
Maxim
да
Denis
гуд
Denis
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/05-kubernetes-worker.md
Denis
о кстати
Denis
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
Denis
можно несколько apiserver
Denis
или показалось)
Maxim
показалось
Denis
)
Maxim
ходить все-равно только к одному будет
Maxim
там даже написано вроде
Maxim
@DenisIzmaylov https://github.com/kubernetes/kubernetes/issues/19161