gpt4 book ai didi

amazon-web-services - 从Kubernetes HA群集安全删除主服务器

转载 作者:行者123 更新时间:2023-12-02 12:13:29 25 4
gpt4 key购买 nike

我在AWS EC2实例上部署了带有 kops 的开发K8S集群,最初将其部署为具有3个主节点和3个节点的HA体系结构。

现在为了节省成本,我想关闭3个主机中的2个,只保留1个运行中

我尝试了kubectl drain,但效果不佳,只是终止节点导致集群连接不稳定。

有没有安全的方法来删除主人?

最佳答案

这个问题已经在Github question - HA to single master migration上讨论过了。

已经为您准备了solution

由于etcd-manager在kops 1.12中引入,因此mainevents etcd群集自动且定期地备份到S3(与KOPS_STATE_STORE相同的存储桶)。

因此,如果您的k8s集群版本高于1.12,则可能需要执行以下步骤:

  • 删除集群
  • 中的etcd区域
    $ kops edit cluster


    etcdCluster部分中,删除 etcdMembers项,以便仅为 instanceGroupmain保留一个 events。例如
      etcdClusters:
    - etcdMembers:
    - instanceGroup: master-ap-southeast-1a
    name: a
    name: main
    - etcdMembers:
    - instanceGroup: master-ap-southeast-1a
    name: a
    name: events

  • 应用更改
  • $ kops update cluster --yes
    $ kops rolling-update cluster --yes

  • 删除2个主实例组
  • $ kops delete ig master-xxxxxx-1b
    $ kops delete ig master-xxxxxx-1c


    此操作无法撤消,它将立即删除2个主节点。

    现在,您的3个主节点中的2个被删除,k8s etcd服务可能会失败,并且kube-api服务将无法访问。在此步骤之后,您的 kopskubectl命令不再正常是正常的。
  • 使用单个主节点重新启动ectd集群
    这是棘手的部分。 ssh进入剩余的主节点,然后
  • $ sudo systemctl stop protokube
    $ sudo systemctl stop kubelet


    下载 etcd-manager-ctl工具。如果使用其他 etcd-manager版本,请相应调整下载链接
    $ wget https://github.com/kopeio/etcd-manager/releases/download/3.0.20190930/etcd-manager-ctl-linux-amd64
    $ mv etcd-manager-ctl-linux-amd64 etcd-manager-ctl
    $ chmod +x etcd-manager-ctl
    $ mv etcd-manager-ctl /usr/local/bin/


    从S3恢复备份。见 official docs
    $ etcd-manager-ctl -backup-store=s3://<kops s3 bucket name>/<cluster name>/backups/etcd/main list-backups
    $ etcd-manager-ctl -backup-store=s3://<kops s3 bucket name>/<cluster name>/backups/etcd/main restore-backup 2019-10-16T09:42:37Z-000001
    # do the same for events
    $ etcd-manager-ctl -backup-store=s3://<kops s3 bucket name>/<cluster name>/backups/etcd/events list-backups
    $ etcd-manager-ctl -backup-store=s3://<kops s3 bucket name>/<cluster name>/backups/etcd/events restore-backup 2019-10-16T09:42:37Z-000001


    这不会立即开始还原;您需要重新启动etcd:杀死相关容器并启动kubelet
    $ sudo systemctl start kubelet
    $ sudo systemctl start protokube


    等待还原完成,然后 kubectl get nodeskops validate cluster应该正常工作。否则,您可以终止AWS控制台中其余主节点的EC2实例,Auto Scaling Groups将创建一个新的主节点,并还原etcd集群。

    关于amazon-web-services - 从Kubernetes HA群集安全删除主服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59876200/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com