Комментарии 16
Длинно. Но интересно! :) Спасибо.
Большое спасибо, к сожалению цель стать показать внутренности без всякой автоматизации)
Спасибо за статью. Можно попробовать всё это перенести в ansible роли, на bash-е далеко не уедешь. По возможности - без terraform.
Ansible роли для установки давно существуют, посмотрите на https://github.com/kubernetes-sigs/kubespray
Ну данная статья обозревательная - указать на внутрянку.
Конечно можно описать все любым инструментом от баша, до ансибла или терраформа. Например наш проект https://github.com/fraima/kubernetes/tree/main/k8s-yandex-cluster реализует один из методов установки кластера без потребности использовать инструменты Day2 типа ansible, puppet, saltstack и все на terraform.
за статью спасибо)
заметил 1 момент " Актуализировать " - а версия "v1.23.12" ) . с актуальными не будет нюансов ?
Что-то как-то очень сложно переменную ETCD_SERVERS
создаете: первый sed безполезный, а еще и двойной echo (первый - в цикле в субшелле, потом внешний). Попробуйте вот это - у него приятный вкус:
printf ",https://master-%s.$BASE_CLUSTER_DOMAIN:$ETCD_SERVER_PORT" \
$( seq 0 $(( MASTER_COUNT-1 )) ) \
| sed 's/,//'
Вот еще один деликатес - для ETCD_INITIAL_CLUSTER
:
for n in $( seq 0 $(( MASTER_COUNT-1 )) )
do
n="$n.$BASE_CLUSTER_DOMAIN"
printf ",master-%s=https://master-%s:$ETCD_PEER_PORT" $n $n
done \
| sed 's/,//'
Думается мне - кровушки попили они с вас, пока не пришли к нужному виду.
Я обычно с башом не работаю, так что после 30 минут попыток остановился на первом рабочем))) спасибо за помощь, чуть позже добавлю в исправление.
Я тут еще немного поупражнялся: улучшил команды, так чтобы одинаковый набор и без цикла для второй переменной:
для ETCD_SERVERS
:
seq 0 $(( MASTER_COUNT-1 )) \
| awk -v fmt="https://master-%s.$BASE_CLUSTER_DOMAIN:$ETCD_SERVER_PORT" \
'{ s && s = s "," ; s = s sprintf(fmt, $0) } END { print s }'
для ETCD_INITIAL_CLUSTER
:
seq 0 $(( MASTER_COUNT-1 )) \
| awk -v fmt="master-%s.$BASE_CLUSTER_DOMAIN=https://master-%s.$BASE_CLUSTER_DOMAIN:$ETCD_PEER_PORT" \
'{ s && s = s "," ; s = s sprintf(fmt, $0, $0) } END { print s }'
Можно было бы еще, но я думаю - хватит.
В /etc/kubernbetes/kubelet/config.yaml дублируются rotateCertificates и serverTLSBootstrap
Kubernetes the hard way