Docker - Kubernetes 工作原理
Docker - 使用 kubeadm 安装 Kubernetes
Section titled “Docker - 使用 kubeadm 安装 Kubernetes”kubeadm 是一个旨在简化安全 Kubernetes 集群引导(bootstrapping)过程的工具。它自动化了设置控制平面(Control Plane)和加入工作节点(Worker Nodes)的许多步骤。本章提供了使用 kubeadm 在 Linux(例如 Ubuntu)上安装基本集群的高级概述。
注意: 设置生产就绪的 Kubernetes 集群需要考虑很多因素(高可用性、安全性、网络选择等)。本指南演示了一个适用于学习或测试的基本设置。
前提条件(通用)
Section titled “前提条件(通用)”- 一台或多台运行兼容 Linux 发行版(例如 Ubuntu 20.04/22.04、CentOS 7/8、RHEL 7/8)的机器/节点。
- 足够的资源(例如,每台机器/节点至少 2 GB 内存,2 个 CPU)。
- 集群中所有机器/节点之间的全网络连接(公共网络或私有网络)。
- 每个节点唯一的 hostname、MAC 地址和
product_uuid。 - 您的节点上需要开放某些端口。有关确切列表,请参考 Kubernetes 文档(例如 6443、2379-2380、10250-10252)。
- 所有节点上禁用 Swap:
sudo swapoff -a(并从/etc/fstab中移除 swap 条目)。 - 所有节点上安装并运行兼容的容器运行时(例如 Docker 或 containerd)。
安装步骤概述(命令可能需要使用 sudo)
Section titled “安装步骤概述(命令可能需要使用 sudo)”步骤 1:安装容器运行时(Docker/containerd)
按照官方 Docker Engine 安装指南(在前面的章节中已介绍)或 containerd 安装指南在所有节点(控制平面和工作节点)上进行安装。
步骤 2:安装 kubeadm、kubelet 和 kubectl
在所有节点上,安装 Kubernetes 组件。以下示例适用于 Ubuntu/Debian。有关其他发行版,请参考 Kubernetes 文档。
# 更新 apt 包索引并安装所需软件包sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl
# 下载 Google Cloud 公钥签名密钥curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
# 添加 Kubernetes apt 仓库echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 更新 apt 包索引并安装组件sudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl
# 防止它们自动更新sudo apt-mark hold kubelet kubeadm kubectl注意:确保安装的 kubelet 和 kubeadm 版本与您期望的 Kubernetes 集群版本匹配。
步骤 3:初始化控制平面节点
在指定为控制平面节点的机器/节点上,运行:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # Flannel 的 CIDR 示例--pod-network-cidr 参数是必需的,其值取决于您计划使用的 CNI(容器网络接口)插件。示例中的 10.244.0.0/16 常用于 Flannel CNI。
成功初始化后,kubeadm init 将输出:
- 为普通用户设置
kubectl的命令(复制 admin 配置文件)。 - 包含 token 和 hash 的
kubeadm join命令。安全地保存此命令 - 添加工作节点到集群时需要用到。
按照说明配置 kubectl:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config步骤 4:安装 Pod 网络插件 (CNI)
Pods 跨节点通信需要一个 CNI 插件。应用您选择的 CNI 的 manifest。以下是使用 Flannel 的示例:
kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml其他常用选项包括 Calico、Weave Net 等。确保 CNI 的配置与 kubeadm init 中指定的 CIDR 匹配。
步骤 5:加入工作节点(可选)
在每个工作节点上,运行由控制平面节点上 kubeadm init 命令输出的 kubeadm join 命令。它看起来大致如下:
sudo kubeadm join <控制平面主机>:<控制平面端口> --token <token> --discovery-token-ca-cert-hash sha256:<hash>短暂等待后,当您在控制平面节点上运行 kubectl get nodes 时,应该会看到列出的工作节点。
这提供了一个基本的 Kubernetes 集群设置。有关高级配置和故障排除,请参考 Kubernetes 官方文档。