Kubernetes 奇遇记:创建 Workers

发布: (2026年5月10日 GMT+8 09:31)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Duncan

我们从零开始构建了控制平面——这很有用,但也很困难。控制平面只是大脑;我们仍然需要工作节点(肌肉)来运行我们的容器化应用程序。手动配置每个工作节点将是一场噩梦,因此本系列的这一部分展示了如何从预先配置好的机器创建一个 Golden Image,并快速部署相同的工作节点。

Creating a Golden Image

  • 加载了 overlaybr_netfilter 内核模块。
  • 为 iptables 调整了网络桥接设置。
  • 禁用了 swap(kubelet 所必需)。
  • 安装了 containerd 并将 systemd 设置为 cgroup 驱动。

所有这些前置条件——操作系统调优和 Kubernetes 二进制文件(kubeadmkubeletkubectl)——都已预装在 k8s-seed 虚拟机中。Golden Image 是该完美配置的冻结快照,可实现自动化、基于镜像的供应。

步骤 1:概括种子实例

在将 k8s-seed 用作模板之前,我们必须清除唯一标识符,以便每个新 VM 都拥有自己的身份。

  1. SSH 登录种子机器

    gcloud compute ssh k8s-seed --zone=us-central1-a
  2. 清理唯一标识符

    sudo cloud-init clean --seed --logs --machine-id
    exit
  3. 停止实例(在本地机器上运行)

    gcloud compute instances stop k8s-seed --zone=us-central1-a

第2步:创建自定义镜像

从已停止的种子磁盘创建 Google Compute Engine 镜像。

gcloud compute images create k8s-node-image-v1 \
  --source-disk=k8s-seed \
  --source-disk-zone=us-central1-a \
  --family=k8s-node-family

--family 标志允许您稍后引用该镜像的“最新”版本。

第3步:配置工作节点

使用黄金镜像即时启动新工作节点。

gcloud compute instances create worker-1 \
  --zone=us-central1-a \
  --image-family=k8s-node-family \
  --tags=k8s-worker

gcloud compute instances create worker-2 \
  --zone=us-central1-a \
  --image-family=k8s-node-family \
  --tags=k8s-worker

步骤 4:加入集群

工作节点需要使用 kubeadm join 向控制平面注册。

  1. 定位您的加入命令(已从控制节点的 kubeadm init 中保存):

    kubeadm join 10.128.0.x:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  2. 在每个工作节点上运行该命令(以 worker-1 为例):

    gcloud compute ssh worker-1 --zone=us-central1-a
    sudo kubeadm join 10.128.0.x:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    exit

    worker-2 重复相同步骤。

  3. 验证节点

    kubectl get nodes

    两个工作节点都应显示 Ready 状态。

对于 Worker 2:重复相同步骤

gcloud compute ssh worker-2 --zone=us-central1-a
sudo kubeadm join ...   # 粘贴您的命令
exit

第5步:验证集群

从控制平面确认所有节点已注册。

kubectl get nodes

预期输出:

NAME            STATUS   ROLES           AGE   VERSION
control-plane   Ready    control-plane   10m   v1.35.0
worker-1        Ready    <none>          2m    v1.35.0
worker-2        Ready    <none>          1m    v1.35.0

简单方法(GKE)

如果您使用 Google Kubernetes Engine,整个过程可以用一条命令替代:

gcloud container clusters create k8s-easy-cluster \
  --zone us-central1-a \
  --num-nodes 3 \
  --machine-type e2-medium

接下来怎么办?

您的多节点集群已经启动,但仍然是静态的。如果工作节点崩溃,您必须手动替换它,扩容需要手动配置和 kubeadm join。后续文章可能会介绍如何自动化节点生命周期和扩容,以实现真正的云原生、弹性集群。

深入了解

0 浏览
Back to Blog

相关文章

阅读更多 »