手把手教你用Linux服务器部署Kubernete集群
作为当下最流行的容器编排系统,Kubernetes已经成为云原生应用的事实标准。本文将详细介绍如何在Linux服务器上从零开始部署一个生产可用的Kubernetes集群。
一、环境准备
- 服务器要求:至少2台Linux服务器(推荐Ubuntu 20.04或CentOS 8)
- 硬件配置:每台服务器至少2核CPU、4GB内存、30GB磁盘空间
- 网络要求:服务器之间需要互通,建议配置静态IP
⚠️ 注意:生产环境建议使用3台或以上服务器组成高可用集群。
二、基础环境配置
-
关闭交换空间
sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab -
配置内核参数
cat < -
安装Docker容器运行时
sudo apt-get update && sudo apt-get install -y docker.io sudo systemctl enable docker && sudo systemctl start docker
三、安装Kubernetes组件
-
添加Kubernetes源
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 - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list -
安装kubeadm、kubelet和kubectl
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
初始化完成后会输出加入集群的命令,类似:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
五、配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
六、安装网络插件(以Calico为例)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
七、加入Worker节点
在其他服务器上执行初始化时输出的kubeadm join命令:
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
八、验证集群状态
kubectl get nodes
kubectl get pods --all-namespaces
部署完成后检查清单
- 所有节点状态为Ready
- CoreDNS Pods运行正常
- 网络插件Pods运行正常
- 能够正常创建测试Pod
九、常见问题排查
- 节点NotReady状态
- 检查网络插件是否安装成功,查看kubelet日志:journalctl -u kubelet
- kubeadm init失败
- 检查端口6443是否开放,确保没有防火墙阻止通信
- Pod网络不通
- 确认网络插件的CIDR与kubeadm初始化时的参数一致
通过上述步骤,您已经成功在Linux服务器上部署了一个Kubernetes集群。接下来可以开始部署应用程序,或进一步配置Ingress、Storage等高级功能。
Kubernetes虽然复杂,但掌握其部署方法是使用这个强大编排系统的第一步。建议在生产环境部署前,先在测试环境充分验证。
