如何在Linux云服务器上搭建Kubernetes集群:从零到生产级部署指南
随着云原生技术的普及,Kubernetes已成为容器编排的事实标准。本文将手把手教您在Linux云服务器上部署生产可用的Kubernetes集群,涵盖从环境准备到高可用配置的全过程。
一、环境准备
在开始前,您需要准备:
- 至少3台Linux云服务器(推荐Ubuntu 20.04+或CentOS 7+)
- 每台服务器2核CPU/4GB内存以上配置
- 所有节点间网络互通且时间同步
- 开放以下端口:6443, 2379-2380, 10250-10252, 30000-32767
💡 生产环境建议使用5节点(3个master+2个worker)配置
二、详细安装步骤
1. 基础环境配置
# 所有节点执行
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
2. 安装容器运行时(以containerd为例)
# 安装依赖
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
# 添加Docker仓库
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 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
# 安装containerd
sudo apt-get update && sudo apt-get install -y containerd.io
# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
3. 安装kubeadm/kubelet/kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <
4. 初始化Master节点
# 在主节点执行
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=YOUR_SERVER_IP \
--control-plane-endpoint=LOAD_BALANCER_DNS:6443 \
--upload-certs
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5. 安装网络插件(以Calico为例)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
6. 加入Worker节点
# 在worker节点执行kubeadm join命令
kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
三、集群验证
# 检查节点状态
kubectl get nodes -o wide
# 检查所有Pod状态
kubectl get pods --all-namespaces
# 测试DNS解析
kubectl run -it --rm --restart=Never busybox --image=busybox -- nslookup kubernetes.default
四、生产环境优化建议
- 高可用控制平面:部署多个master节点并使用负载均衡器
- 持久化存储:配置CSI驱动连接云存储或本地存储
- 安全加固:
- 启用RBAC授权
- 配置网络策略
- 定期轮换证书
- 监控告警:部署Prometheus+Grafana监控体系
五、常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| kubelet无法启动 | cgroup驱动不匹配 | 修改/etc/docker/daemon.json和kubelet配置 |
| Pod网络不通 | 网络插件未正确安装 | 检查calico/node容器状态 |
| 节点NotReady | kubelet证书过期 | 执行kubeadm certs renew |
六、总结
通过本文的详细步骤,您已在Linux云服务器上成功部署了Kubernetes集群。后续可考虑:
- 配置HPA实现自动扩缩容
- 部署Ingress Controller暴露服务
- 设置CI/CD流水线
Kubernetes的学习曲线虽然陡峭,但掌握它将为您的云原生之旅打下坚实基础。
