news 2026/6/26 14:12:24

k8s集群创建部署过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s集群创建部署过程

以下是 K8s 集群创建过程

目录

  • 一: 环境准备
  • 二: 安装容器运行时
  • 三: 安装核心组件
  • 四: 初始化控制面板
  • 五: 配置 kubectl 并安装网络插件
  • 六: 加入工作节点
    引言:
    使用 kubeadm 部署 Kubernetes 集群是官方推荐的标准方式,它将复杂的组件配置封装为简洁的命令行操作。本文将逐步讲解从环境准备、容器运行时安装、核心组件部署,到控制平面初始化、网络插件配置及工作节点加入的完整流程,帮助你快速搭建一个可用的 K8s 集群。
    一 环境准备
    1.配置主机名与 hosts 解析:为每台机器设置唯一主机名,并配置 hosts 文件以便节点间通过主机名通信。 # 设置主机名 (在每个节点分别执行)
    sudo hostnamectl set-hostname # 例如: k8s-master, k8s-worker1 # 编辑 /etc/hosts 文件,添加所有节点 IP 和主机名的映射
    sudo vim /etc/hosts
    2.禁用 Swap:Kubernetes 要求必须禁用交换分区
    sudo swapoff -a # 为防止重启后生效,需要注释掉 /etc/fstab 中的 swap 行
    sudo sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
    sudo swapoff -a
    3.加载内核模块并设置网络参数:确保网络插件正常工作 # 加载 br_netfilter 和 overlay 模块
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter # 设置所需的 sysctl 参数
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    EOF # 应用 sysctl 参数
    sudo sysctl --system
    二 安装容器运行时
    Kubernetes 需要容器运行时来管理 Pod 和容器的生命周期。从 v1.24 版本起,官方推荐使用 containerd,它与 Kubernetes 集成更直接,也更高效。这一步需要在所有节点上执行。
    1.安装containerd,使用系统的包管理器安装即可 # Ubuntu / Debian 系统
    sudo apt-get update
    sudo apt-get install -y containerd # CentOS / RHEL 系统
    sudo yum install -y containerd
    2.生成并修改配置文件
    创建配置目录,并生成默认配置文件,这是让 containerd 与 Kubernetes 协同工作的关键。
    sudo mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    3.配置systemd cgroup驱动
    为了与宿主机资源管理(systemd)保持一致,避免潜在的资源竞争问题,需要将 cgroup 驱动设置为 systemd。
    用文本编辑器打开配置文件 sudo vim /etc/containerd/config.toml。
    根据你的 containerd 版本,找到对应的 SystemdCgroup 配置项并设置为 true:
    containerd 2.x 版本:
    version = 3
    [plugins.‘io.containerd.cri.v1.runtime’.containerd.runtimes.runc.options]
    SystemdCgroup = true
    4.重启并启用 containerd 服务
    使配置生效,并设置开机自启。
    sudo systemctl daemon-reload
    sudo systemctl restart containerd
    sudo systemctl enable containerd
    这样,容器运行时(containerd)就安装配置好了,可以继续后续安装 kubeadm、kubelet、kubectl 等核心组件的步骤。
    三 安装核心组件
    在所有节点上安装 kubeadm, kubelet, kubectl。注意,需要锁定版本,避免意外升级。 # 以 Ubuntu/Debian 为例,添加 Kubernetes 官方源并安装
    sudo apt-get update
    sudo 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.gpg
    echo ‘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 update
    sudo apt-get install -y kubelet kubeadm kubectl # 阻止自动更新
    sudo apt-mark hold kubelet kubeadm kubectl
    四 初始化控制平面
    在控制平面节点(Master)上执行此命令来启动集群的“大脑”,这是最关键的一步。
    sudo kubeadm init
    –pod-network-cidr=10.244.0.0/16 \ # [1][2][3] 指定 Pod 网络范围,必须与后续网络插件一致
    –apiserver-advertise-address=<控制平面节点的内网IP> \ # [1][2][3] 指定 API Server 监听的 IP
    –kubernetes-version=v1.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/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown( i d − u ) : (id -u):(idu):(id -g) $HOME/.kube/config
2.安装 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 参数来实现

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 14:03:40

BetterNCM Installer:重新定义网易云音乐的插件化体验

BetterNCM Installer&#xff1a;重新定义网易云音乐的插件化体验 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否曾为网易云音乐的功能限制感到困扰&#xff1f;想要自定义界面…

作者头像 李华
网站建设 2026/6/26 14:03:34

DSP函数库实战:从定点数到矩阵运算的嵌入式信号处理优化

1. 从数据到信号&#xff1a;为什么我们需要专门的DSP函数库&#xff1f; 在嵌入式系统、音频处理、电机控制乃至通信基带开发中&#xff0c;我们每天都在和大量的数字打交道。这些数字可能来自ADC采样后的音频波形、传感器采集的温度序列&#xff0c;或者是图像处理中的像素矩…

作者头像 李华
网站建设 2026/6/26 14:00:59

2026外卖系统源码开发洞察报告:AI、即时配送与本地生活生态融合

如果说过去十年外卖行业竞争的是流量&#xff0c;那么进入2026年之后&#xff0c;竞争的重点已经逐渐转向技术能力与生态整合能力。 随着即时配送网络日趋成熟、AI技术快速普及以及本地生活服务不断扩张&#xff0c;外卖平台已经不再只是一个简单的“点餐工具”&#xff0c;而…

作者头像 李华
网站建设 2026/6/26 13:56:22

基于NXP MC34阀控制器与Processor Expert的嵌入式驱动开发实战

1. 项目概述&#xff1a;当MCU需要驱动阀门时在汽车电子、工业自动化或者医疗器械里&#xff0c;我们常常需要微控制器&#xff08;MCU&#xff09;去精准地控制一个阀门。这听起来简单&#xff0c;不就是让一个线圈通电&#xff0c;阀门打开&#xff0c;断电&#xff0c;阀门关…

作者头像 李华
网站建设 2026/6/26 13:55:08

从机械规格书到PCB设计:无线模块的封装、布局与焊接实战

1. 项目概述&#xff1a;从一张机械图到模块化设计的深度拆解最近在整理一个嵌入式项目时&#xff0c;需要用到一款小型化的无线通信模块。手头的资料只有一份简单的机械规格书&#xff0c;上面画着模块的轮廓图&#xff0c;标注了几个关键尺寸和引脚信息。这让我想起了很多工程…

作者头像 李华