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
я уже лет десять как руби-программист
Maxim
через wupiao
через что? о_О
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