Возможно ли переключить существующий кластер со «встроенным» etcd на внешний etcd?
Спасибо
Дьявол кроется в деталях, но по большей части да:
kubeadm-config
ConfigMap, чтобы указать будущим участникам уровня управления, где живет etcdБыть уверенным у вас есть понимание этот документ, и практиковали это на образце кластера, потому что, если что-то пойдет не так, отклеить сердитый кластер etcd будет болезненно. Делайте снимки etcd раньше и чаще
kubectl -n kube-system edit configmap kubeadm-config
и заменить ClusterConfiguration
etcd:
ключ с чем-то похожим на
etcd:
external:
caFile: /etc/kubernetes/pki/etcd/ca.crt
certFile: /etc/kubernetes/pki/etcd/apiserver-etcd-client.crt
endpoints:
- https://your-new-etcd-url:2379
keyFile: /etc/kubernetes/pki/etcd/apiserver-etcd-client.key
Это просто материализация yaml, описанного выше, но после подготовки узлы уровня управления не наблюдают за этим. kubeadm-config
для изменений. Возможно, вам будет удобнее просто повернуть все узлы плоскости управления, если у вас есть система автомасштабирования, но если у вас есть «домашние» узлы плоскости управления, тогда:
containers:
- command:
- kube-apiserver
# ...
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
- --etcd-certfile=/etc/kubernetes/pki/etcd/apiserver-etcd-client.crt
- --etcd-keyfile=/etc/kubernetes/pki/etcd/apiserver-etcd-client.key
- --etcd-servers=https://your-new-etcd-url:2379
и убедитесь, что новый модуль apiserver подходит
Этот шаг зависит отличная сделка от того, как работают ваши текущие составные элементы, будь то через systemd, статические модули, оператор, ... что угодно, но вам обязательно нужно удалить их членство, если существующий процесс не делает этого в рамках их остановки
export ETCDCTL_API=3
etcdctl member list
# find the memberid of the one to remove
bye_bye_member_id=cafebabedeadbeef
etcdctl member remove $bye_bye_member_id
и повторите это для каждого встроенного члена etcd, когда вы их закрываете