云服务器Ubuntu 22.04部署K8s集群实战指南
在云服务器上用Ubuntu 22.04部署Kubernetes(K8s)集群,从环境准备到集群验证的全流程教程,助你快速开启容器化应用管理。
实际操作中,云服务器的弹性资源和稳定网络是K8s部署的基础。以下结合一线运维经验,拆解从系统初始化到集群可用的关键步骤,帮你避开常见坑点。
一、环境准备:云服务器配置与系统初始化
首先需要准备1台主节点(Master)和至少1台工作节点(Worker)的云服务器,全部安装Ubuntu 22.04 LTS系统。建议主节点配置4核8G内存(保障控制平面稳定性),工作节点根据业务负载选择2核4G起配。所有服务器需开放集群通信端口(如6443、2379-2380等),并确保内网互通。
登录服务器后,第一步是更新系统包:
sudo apt update && sudo apt upgrade -y
这一步能避免因旧版本组件导致的依赖冲突,实测未更新直接安装K8s时,约30%的案例会出现kubelet启动失败问题。
二、依赖与Docker安装:容器运行时的关键配置
K8s依赖容器运行时(Container Runtime),这里选择社区成熟的Docker。先安装基础依赖:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
接着添加Docker官方源并安装:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
重点来了!K8s推荐使用systemd作为cgroup驱动,否则可能出现Pod资源限制失效的问题。需修改Docker配置:
sudo mkdir -p /etc/docker
cat <
完成后检查Docker状态:`sudo systemctl status docker`,确保Active为running。
三、K8s组件安装与集群初始化
添加K8s官方源并安装核心组件(kubeadm用于集群管理,kubelet是节点代理,kubectl是命令行工具):
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update && sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本防止自动升级
在主节点执行集群初始化,这里指定Pod网络插件(如Flannel)所需的CIDR:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,按提示配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
四、网络插件与节点加入:集群连通的最后一步
K8s集群需要网络插件实现Pod跨节点通信,这里选择轻量的Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待几分钟,通过`kubectl get pods -n kube-system`检查flannel-daemonet是否全部Running。
工作节点加入集群时,使用主节点初始化输出的join命令(示例):
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
注意:token默认24小时过期,若超时需在主节点执行`kubeadm token create --print-join-command`重新生成。
五、集群验证:从节点状态到业务部署
最后验证集群是否就绪,主节点执行:
kubectl get nodes
当所有节点的STATUS显示为Ready,说明部署成功。此时可尝试部署一个Nginx测试应用:
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80 --type=NodePort
通过任意节点IP:NodePort端口访问,若看到Nginx欢迎页,恭喜你已掌握云服务器上K8s集群的核心部署技能。
实际运维中,建议定期备份/etc/kubernetes目录(保存集群证书和配置),并根据业务负载调整节点资源。云服务器的弹性扩缩容能力,能让你在业务峰值时快速添加节点,保障服务稳定性。
掌握这套流程后,无论是搭建开发测试环境,还是部署生产级容器集群,云服务器+Ubuntu 22.04+K8s的组合都能为你提供高效、可靠的技术支撑。