云服务器部署K8s集群软件全流程指南
文章分类:行业新闻 /
创建时间:2025-11-04
在云服务器上部署K8s(Kubernetes)集群是企业实现容器化运维的关键一步,尽管流程涉及多个技术环节,但掌握核心步骤并规避常见问题后,完全能高效完成部署。以下结合实际运维经验,详解从准备到验证的全流程操作。
前期准备:避免"地基不稳"的隐患
某互联网团队曾因准备不足吃过大亏——采购的云服务器内存仅4GB,部署K8s集群后频繁出现Pod资源抢占,最终不得不升级至8GB内存节点才恢复稳定。因此前期准备需重点关注三点:
- 云服务器配置:根据业务规模选择CPU(至少2核)、内存(8GB起步)、存储(系统盘40GB+数据盘),测试表明4核16GB配置可支撑中小型集群日常负载。
- 操作系统:优先选择CentOS 7.6+或Ubuntu 18.04+,这两个版本对K8s兼容性经过大量实践验证,避免使用冷门发行版。
- 网络互通:除开放6443(API Server)、2379-2380(Etcd)等标准端口,建议在云控制台配置安全组时,额外放行节点间4789(Flannel网络)和10250(Kubelet)端口,防止后续网络插件安装失败。
安装容器运行时:奠定容器化基础
容器运行时是K8s调度容器的底层支撑,版本不兼容曾导致某团队K8s调度容器时反复报错。目前主流选择有两种:
- Docker:最广泛使用的运行时,CentOS安装命令如下(需先关闭SELinux和Swap):
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io-1.6.8
systemctl start docker && systemctl enable docker
- Containerd:K8s官方推荐的轻量级运行时,安装步骤类似,适合对资源占用敏感的场景。
安装Kube组件:确保版本协同
Kubeadm(集群管理工具)、Kubelet(节点代理)、Kubectl(命令行工具)需保持版本一致,某运维团队曾因Kubeadm与Kubelet版本差2个小版本,导致集群初始化卡在"等待控制平面"阶段。安装步骤如下:
1. 添加Kubernetes仓库(以CentOS为例):
cat <[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
2. 安装并启动Kubelet:
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0 --disableexcludes=kubernetes
systemctl enable --now kubelet
初始化集群与网络插件:打通通信链路
主节点初始化时需指定Pod网络地址段(与云服务器VPC不重叠),某团队曾因未设置--pod-network-cidr参数,导致后续Flannel插件无法分配IP。执行命令:
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.25.0
初始化成功后配置Kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
接下来安装Flannel网络插件(适合中小型集群):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.17.0/Documentation/kube-flannel.yml
节点加入与集群验证:确保全链路可用
主节点初始化会输出工作节点加入命令(有效期24小时),需及时记录。在工作节点执行:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
最后通过以下命令验证:
kubectl get nodes # 查看节点状态是否为Ready
kubectl get pods -A # 检查所有命名空间Pod是否Running
kubectl cluster-info # 确认API Server等组件运行正常
完成上述步骤,云服务器上的K8s集群即可投入使用。实际部署中建议先在测试环境模拟操作,熟悉各环节细节后再迁移至生产环境,既能降低出错风险,也能更快掌握集群运维技巧。
工信部备案:苏ICP备2025168537号-1