k8s集群创建部署过程

发布时间:2026/6/26 14:12:47

k8s集群创建部署过程 以下是 K8s 集群创建过程目录一: 环境准备二: 安装容器运行时三: 安装核心组件四: 初始化控制面板五: 配置 kubectl 并安装网络插件六: 加入工作节点引言使用 kubeadm 部署 Kubernetes 集群是官方推荐的标准方式它将复杂的组件配置封装为简洁的命令行操作。本文将逐步讲解从环境准备、容器运行时安装、核心组件部署到控制平面初始化、网络插件配置及工作节点加入的完整流程帮助你快速搭建一个可用的 K8s 集群。一 环境准备1.配置主机名与 hosts 解析为每台机器设置唯一主机名并配置 hosts 文件以便节点间通过主机名通信。 # 设置主机名 (在每个节点分别执行)sudo hostnamectl set-hostname # 例如: k8s-master, k8s-worker1 # 编辑 /etc/hosts 文件添加所有节点 IP 和主机名的映射sudo vim /etc/hosts2.禁用 SwapKubernetes 要求必须禁用交换分区sudo swapoff -a # 为防止重启后生效需要注释掉 /etc/fstab 中的 swap 行sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstabsudo swapoff -a3.加载内核模块并设置网络参数确保网络插件正常工作 # 加载 br_netfilter 和 overlay 模块cat EOF | sudo tee /etc/modules-load.d/k8s.confoverlaybr_netfilterEOFsudo modprobe overlaysudo modprobe br_netfilter # 设置所需的 sysctl 参数cat EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables 1net.bridge.bridge-nf-call-ip6tables 1net.ipv4.ip_forward 1EOF # 应用 sysctl 参数sudo sysctl --system二 安装容器运行时Kubernetes 需要容器运行时来管理 Pod 和容器的生命周期。从 v1.24 版本起官方推荐使用 containerd它与 Kubernetes 集成更直接也更高效。这一步需要在所有节点上执行。1.安装containerd使用系统的包管理器安装即可 # Ubuntu / Debian 系统sudo apt-get updatesudo apt-get install -y containerd # CentOS / RHEL 系统sudo yum install -y containerd2.生成并修改配置文件创建配置目录并生成默认配置文件这是让 containerd 与 Kubernetes 协同工作的关键。sudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.toml3.配置systemd cgroup驱动为了与宿主机资源管理systemd保持一致避免潜在的资源竞争问题需要将 cgroup 驱动设置为 systemd。用文本编辑器打开配置文件 sudo vim /etc/containerd/config.toml。根据你的 containerd 版本找到对应的 SystemdCgroup 配置项并设置为 truecontainerd 2.x 版本version 3[plugins.‘io.containerd.cri.v1.runtime’.containerd.runtimes.runc.options]SystemdCgroup true4.重启并启用 containerd 服务使配置生效并设置开机自启。sudo systemctl daemon-reloadsudo systemctl restart containerdsudo systemctl enable containerd这样容器运行时containerd就安装配置好了可以继续后续安装 kubeadm、kubelet、kubectl 等核心组件的步骤。三 安装核心组件在所有节点上安装 kubeadm, kubelet, kubectl。注意需要锁定版本避免意外升级。 # 以 Ubuntu/Debian 为例添加 Kubernetes 官方源并安装sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl # 添加 Kubernetes 的 GPG 密钥和软件源curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpgecho ‘deb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /’ | sudo tee /etc/apt/sources.list.d/kubernetes.list # 安装sudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl # 阻止自动更新sudo apt-mark hold kubelet kubeadm kubectl四 初始化控制平面在控制平面节点Master上执行此命令来启动集群的“大脑”这是最关键的一步。sudo kubeadm init–pod-network-cidr10.244.0.0/16 \ # [1][2][3] 指定 Pod 网络范围必须与后续网络插件一致–apiserver-advertise-address控制平面节点的内网IP \ # [1][2][3] 指定 API Server 监听的 IP–kubernetes-versionv1.29.0 # [3] 指定版本确保与安装版本一致–pod-network-cidr这是 Pod 网络的 IP 地址段非常重要不能与宿主机网络冲突。这里使用 10.244.0.0/16 是 Flannel 的默认值。–apiserver-advertise-address指定 API Server 对外公布的 IP填你的 Master 节点内网 IP。成功执行后命令会输出三部分关键信息务必保存好kubeconfig 配置命令让你能作为普通用户管理集群。kubeadm join 命令这是工作节点加入集群的凭证和指令包含了 token 和 hash 值。五 配置 kubectl 并安装网络插件1 配置 kubectl在控制平面节点执行让 kubectl 命令可以正常使用mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown( i d − u ) : (id -u):(id−u):(id -g) $HOME/.kube/config2.安装 Pod 网络插件此时节点状态是 NotReady需要安装网络插件。以 Flannel 为例kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml等待片刻再次执行 kubectl get nodes你会看到 Master 节点状态变为 Ready。六 加入工作节点在每个工作节点上使用之前保存的 kubeadm join 命令以 root 权限执行。sudo kubeadm join 控制平面IP:6443 --token --discovery-token-ca-cert-hash sha256:如果你忘记了 token 或命令可以在控制平面节点上执行以下命令重新生成kubeadm token create --print-join-command所有节点加入后在控制平面节点再次运行 kubectl get nodes如果所有节点状态都是 Ready那么你的 K8s 集群就创建成功了。生产环境考虑以上是搭建单控制平面节点集群的基础流程。对于生产环境需要考虑高可用HA配置即设置多个控制平面节点和一个负载均衡器。这通常通过 kubeadm init 的 --control-plane-endpoint 和 --upload-certs 参数来实现。

相关新闻