我已经使用 repo https://github.com/kubernetes-sigs/kubespray成功部署了一个多主 Kubernetes 集群,并且一切正常。但是当我停止/终止集群中的一个节点时,新节点没有加入集群。我已经使用 KOPS 部署了 kubernetes,但是当一个节点被删除时,节点是自动创建的。这是 kubespray 中的预期行为吗?请帮忙..
1 回答
这是预期行为,因为 kubespray 不会创建任何 ASG,它们是 AWS 特定的资源。人们会发现 kubespray 只处理现有的机器。他们确实在他们的 repo 中提供了一些用于配置机器的 terraform 玩具,但 kubespray 本身并没有涉足该业务。
您有几个可用的选项:
使用后置备scale.yml
- 使用您喜欢的机制配置新节点
- 创建一个包含它的清单文件和
etcd
机器(大概是 kubespray 可以为新节点颁发 etcd 证书 - 调用
scale.yml
剧本
您可能会喜欢AWX来支持它。
使用普通kubeadm join
这是我用于集群的机制,FWIW
kubeadm token create --ttl 0
使用(或您觉得使用的任何 TTL)创建一个 kubeadm 连接令牌您只需执行一次,或者每个 ASG 执行一次,具体取决于您的安全容限
使用cloud-init机制确保机器上存在
docker
、kubeadm
和二进制文件kubelet
如果您喜欢构建 AMI,也欢迎您使用 AMI
然后
kubeadm join
按照此处所述调用:https ://kubernetes.io/docs/setup/independent/high-availability/#install-workers
使用机器控制器
有很多“机器控制器”组件旨在使用 Kubernetes 中的自定义控制器以声明方式管理您的节点池。我没有与他们打交道的经验,但我相信他们确实有效。该链接只是我想到的第一个链接,但还有其他链接
我们在 Kubedex 的朋友有一整页专门讨论这个问题