Назад | Перейти на главную страницу

Как переключиться со встроенного etcd на внешний кластер etcd

Возможно ли переключить существующий кластер со «встроенным» etcd на внешний etcd?

Спасибо

Дьявол кроется в деталях, но по большей части да:

  1. присоедините своих новых внешних участников etcd к внутреннему кластеру etcd
  2. обновить kubeadm-config ConfigMap, чтобы указать будущим участникам уровня управления, где живет etcd
  3. исправить существующую плоскость управления yaml
  4. удалить сложенные члены etcd
  5. молиться

etcd

Быть уверенным у вас есть понимание этот документ, и практиковали это на образце кластера, потому что, если что-то пойдет не так, отклеить сердитый кластер etcd будет болезненно. Делайте снимки etcd раньше и чаще

kubeadm-config

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 подходит

разборка члена etcd

Этот шаг зависит отличная сделка от того, как работают ваши текущие составные элементы, будь то через 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, когда вы их закрываете