添加 Linux 工作节点

本页介绍如何将 Linux 工作节点添加到 kubeadm 集群。

准备开始

  • 每个要加入的工作节点都已安装 安装 kubeadm 中所需的组件,例如 kubeadm、kubelet 和 容器运行时
  • 一个正在运行的、由 kubeadm init 命令所创建的 kubeadm 集群,且该集群的创建遵循 使用 kubeadm 创建集群 文档中所给的步骤。
  • 你需要对节点拥有超级用户权限。

添加 Linux 工作节点

要将新的 Linux 工作节点添加到集群中,请对每台机器执行以下步骤:

  1. 通过 SSH 或其他方式连接到该机器。
  2. 运行 kubeadm init 所输出的命令。例如:
  1. sudo kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

kubeadm join 的额外信息

说明:

要为 <control-plane-host>:<control-plane-port> 指定一个 IPv6 元组, IPv6 地址必须用方括号括起来,例如:[2001:db8::101]:2073

如果你没有令牌,可以在控制平面节点上运行以下命令来获取:

  1. # 在控制平面节点上运行此命令
  2. sudo kubeadm token list

命令输出同以下内容类似:

  1. TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
  2. 8ewj1p.9r9hcjoqgajrj4gi 23h 2018-06-12T02:51:28Z authentication, The default bootstrap system:
  3. signing token generated by bootstrappers:
  4. 'kubeadm init'. kubeadm:
  5. default-node-token

默认情况下,节点加入令牌会在 24 小时后过期。当前令牌过期后,如果想把节点加入集群, 可以在控制平面节点上运行以下命令来创建新令牌:

  1. # 在控制平面节点上运行此命令
  2. sudo kubeadm token create

命令输出同以下内容类似:

  1. 5didvk.d09sbcov8ph2amjw

如果你没有 --discovery-token-ca-cert-hash 的具体值,可以在控制平面节点上运行以下命令来获取:

  1. # 在控制平面节点上运行此命令
  2. sudo cat /etc/kubernetes/pki/ca.crt | openssl x509 -pubkey | openssl rsa -pubin -outform der 2>/dev/null | \
  3. openssl dgst -sha256 -hex | sed 's/^.* //'

命令输出同以下内容类似:

  1. 8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78

kubeadm join 命令的输出应该同下面内容类似:

  1. [preflight] Running pre-flight checks
  2. ... (log output of join workflow) ...
  3. Node join complete:
  4. * Certificate signing request sent to control-plane and response
  5. received.
  6. * Kubelet informed of new secure connection details.
  7. Run 'kubectl get nodes' on control-plane to see this machine join.

几秒钟后,你应该在 kubectl get nodes 的输出中看到该节点。 (例如,可以在控制平面节点上运行 kubectl)。

说明:

集群节点通常是按顺序初始化的,因此 CoreDNS Pods 可能会全部运行在第一个控制平面节点上。 为了保证高可用,请在至少一个新节点加入后,使用 kubectl -n kube-system rollout restart deployment coredns 命令重新平衡 CoreDNS Pods。

接下来