当前位置:首页 > Ubuntu > 正文

Ubuntu Kubernetes集群部署(手把手教你从零搭建高可用K8s环境)

在当今云原生时代,Kubernetes(简称 K8s)已成为容器编排系统的事实标准。本教程将详细讲解如何在 Ubuntu 系统上部署一个完整的 Kubernetes 集群,适合零基础的小白用户。我们将使用最新稳定版本的工具链,包括 kubeadm、kubelet 和 kubectl,并配置网络插件 Calico,确保你的集群能够正常运行 Pod 通信。

一、准备工作

你需要准备以下资源:

  • 至少两台运行 Ubuntu 20.04 或 22.04 的服务器(一台 Master 节点,一台 Worker 节点)
  • 每台机器至少 2GB 内存、2 核 CPU
  • 稳定的网络连接和 root 权限
  • 关闭防火墙或开放必要端口(如 6443、2379-2380、10250 等)
Ubuntu Kubernetes集群部署(手把手教你从零搭建高可用K8s环境) Kubernetes集群部署  Kubernetes安装教程 Ubuntu搭建K8s 容器编排系统 第1张

二、在所有节点上执行的基础配置

首先,在每台机器上执行以下命令:

# 关闭 swap(Kubernetes 不支持启用 swap)sudo swapoff -a# 永久禁用 swap(注释掉 /etc/fstab 中的 swap 行)sudo sed -i '/ swap / s/^/#/' /etc/fstab# 更新系统并安装必要工具sudo apt update && sudo apt upgrade -ysudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release# 添加 Docker 官方 GPG 密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加 Docker APT 仓库echo \  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Dockersudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io# 将当前用户加入 docker 组(可选,避免每次用 sudo)sudo usermod -aG docker $USER# 配置 containerd 使用 systemd 作为 cgroup 驱动sudo mkdir -p /etc/containerdcat <

三、安装 Kubernetes 组件

在所有节点(Master 和 Worker)上安装 kubeadm、kubelet 和 kubectl:

# 添加 Kubernetes APT 密钥curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg# 添加 Kubernetes APT 仓库echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list# 安装指定版本(建议锁定版本避免自动升级)sudo apt updatesudo apt install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00# 锁定版本防止意外升级sudo apt-mark hold kubelet kubeadm kubectl

四、初始化 Master 节点

在 Master 节点上执行以下命令初始化集群:

# 初始化 Kubernetes 控制平面sudo kubeadm init --pod-network-cidr=192.168.0.0/16# 配置 kubectl(非 root 用户)mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

初始化成功后,你会看到类似如下的输出,其中包含添加 Worker 节点的命令,请妥善保存:

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:...

五、安装网络插件(Calico)

Kubernetes 需要 CNI(容器网络接口)插件来实现 Pod 之间的通信。我们使用 Calico:

kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

六、添加 Worker 节点

在每台 Worker 节点上,运行之前 kubeadm init 输出的 join 命令:

# 示例命令(请替换为你自己的 token 和 hash)sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

七、验证集群状态

回到 Master 节点,运行以下命令检查节点是否就绪:

kubectl get nodes

如果一切正常,你会看到类似如下输出,所有节点状态为 Ready

NAME       STATUS   ROLES           AGE   VERSIONmaster     Ready    control-plane   10m   v1.28.0worker01   Ready    <none>          5m    v1.28.0

八、总结

恭喜!你已经成功完成了 Ubuntu Kubernetes集群部署。现在你可以开始部署应用、学习 Helm、Ingress 控制器等高级功能。记住,Kubernetes安装教程只是第一步,持续学习和实践才能真正掌握这个强大的容器编排系统。如果你是在生产环境中部署,建议进一步配置高可用(HA)控制平面、备份 etcd、设置监控告警等。

希望这篇 Ubuntu搭建K8s 教程对你有帮助!如有疑问,欢迎在评论区交流。