Kubernetes 历险记:自动伸缩工作节点

发布日期:2026-05-10 10:01:51   浏览量 :1
发布日期:2026-05-10 10:01:51  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

因此,我们已经为设置自定义集群做了一些准备工作。我们手动配置了 Kubernetes 控制平面,并手工加入了工作节点。虽然这对于我们学习各个组件来说是一个很好的方式,但老实说:在生产环境中,手动设置每台服务器是不可扩展的。对于构建更具弹性的集群也是如此!真正的主要问题归结为我们如何设置初始的工作节点池。

如果你对我所描述的操作不熟悉,你应该先阅读我们的前一篇帖子

手动管理节点的问题

目前,我们的集群是静态的,老实说,这有点像个隐患。如果 worker-1 决定“休个意外假”并崩溃了,它就彻底消失了。我们的容量会受到打击,直到有人手动发现并配置替换节点之前,我们都只能两眼一抹黑。在现代架构中,每次都必须通过 SSH 登录到新的虚拟机去运行加入命令,这不仅繁琐,更是阻碍我们在关键时刻进行扩展的瓶颈。不仅如此,这也让我们难以满足对 Kubernetes 应有能力的期望,不是吗?

我们需要集群具备以下几项能力:

  • 自动加入:新节点应在启动时立即加入集群,无需人工干预。
  • 自我修复:如果某个节点宕机,系统应能识别损失并自动启动一个健康的替代节点。
  • 智能伸缩:当负载增加时,集群需要自动扩容;当负载降低时,集群应自动缩容以节省成本。

启动脚本

实现自动化的关键在于确保新虚拟机在启动时能自动加入集群。我们无法在每次都需要通过 SSH 登录并运行 kubeadm join 命令。

为了实现这一点,我们将使用谷歌云平台(GCP)的启动脚本来为我们运行加入命令。

第一步:生成永久令牌

标准的 kubeadm 令牌会在 24 小时后过期。对于可能持续数月的自动伸缩组来说,我们需要一个永久令牌。

在你的控制平面上运行:

kubeadm token create --print-join-command --ttl 0

复制输出的命令,因为你在下一步中需要用到它。

第二步:创建实例模板

实例模板通过指定镜像、机器类型和要运行的脚本,告诉谷歌云平台(GCP)如何构建虚拟机。请注意,这里引用的 k8s-node-family 是我们在本系列上一部分中构建的自定义镜像。

我们使用 — metadata startup-script 标志来注入我们的加入命令。

gcloud compute instance-templates create k8s-worker-template \
--image-family=k8s-node-family \
--machine-type=e2-standard-2 \
--tags=k8s-worker \
--metadata startup-script='#! /bin/bash <在此处粘贴你的加入命令>'

第三步:创建托管实例组 (MIG)

我们将创建一个区域级托管实例组。这意味着谷歌云平台(GCP)会将我们的节点分布在多个可用区(例如 us-central1-a、b 和 c),以实现高可用性。

<

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部