kubeadm 是一款功能强大的工具,旨在简化 Kubernetes 集群的设置和引导过程。它提供了一种直截了当的方式来初始化主节点、加入工作节点,并以最少的配置来管理整个集群设置。


在本示例中,我们将演示如何使用 kubeadm 初始化 Kubernetes 主节点,然后将一个工作节点加入集群。这将建立一个包含一个控制平面(主节点)和一个工作节点的基本集群。

【代码清单】

# Initialize the master node
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
# To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Deploy a pod network add-on (we'll use Calico as an example)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.
# Join a worker node to the cluster
# Run the following command on the worker node (this is an example, the actual command will be output by kubeadm init):
sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

【执行结果】

运行上述命令后,主节点将被初始化,工作节点也将成功加入群集。您可以运行:kubectl get nodes 来验证这一点。
该命令将显示作为群集一部分列出的主节点和工作节点,每个节点的状态都是就绪。

kubeadm 抽象了建立 Kubernetes 集群的大部分复杂性。运行 kubeadm init 时,它会设置必要的控制平面组件,包括 etcd、API 服务器、控制器管理器和调度器。--pod-network-cidr 标志用于指定 pod 网络的 CIDR 块。初始化后,部署 Calico 等网络插件至关重要,因为它允许集群内的 pod 跨节点相互通信。使用 kubeadm join 加入工作者节点时,kubeadm 需要一个令牌和一个哈希值才能安全地连接到主节点。这些信息在主节点初始化时提供。kubeadm 工具还会在节点上配置 kubelet 服务,该服务负责在节点级别运行容器并对其进行管理。

【小知识】

kubeadm 是 Kubernetes 1.4 版本的一部分,用于简化集群设置,自此成为启动集群的事实工具。kubeadm 的使用并不局限于单个主节点设置;它还可用于设置具有多个控制平面节点的高可用性(HA)集群。 Kubernetes 的网络模型很独特,因为它要求集群中的所有 pod 都能在没有 NAT 的情况下相互通信,这就是为什么在初始化后必须部署 Calico 或 Flannel 等网络插件的原因。