彻底掌握Linux云服务器Kubernetes安装指南
在云计算时代,Kubernetes已成为容器编排领域的事实标准。本文将手把手教你如何在Linux云服务器上完成Kubernetes集群的完整安装部署,包含主节点和工作节点的配置,以及常见问题的解决方案。
一、准备工作
1.1 服务器要求
- 至少2台Linux云服务器(推荐Ubuntu 20.04/CentOS 8)
- 每台服务器2GB以上内存
- 2个以上CPU核心
- 30GB以上磁盘空间
- 服务器间网络互通
1.2 环境配置
# 关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 设置主机名
sudo hostnamectl set-hostname k8s-master # 主节点
sudo hostnamectl set-hostname k8s-node1 # 工作节点
# 添加hosts解析
sudo vi /etc/hosts
# 添加服务器IP和主机名映射
二、安装Docker容器运行时
# Ubuntu系统
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
# CentOS系统
sudo yum install -y docker
sudo systemctl enable docker
sudo systemctl start docker
# 验证安装
docker --version
三、安装Kubernetes组件
3.1 添加Kubernetes源
# Ubuntu
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 <
3.2 安装kubeadm、kubelet和kubectl
# Ubuntu
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
# CentOS
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
四、初始化Kubernetes集群
# 在主节点执行
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:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
# 配置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/master/Documentation/kube-flannel.yml
# 验证节点状态
kubectl get nodes
六、加入工作节点
在每个工作节点上运行主节点初始化时生成的kubeadm join命令:
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
七、验证集群状态
# 在主节点执行
kubectl get nodes # 所有节点状态应为Ready
kubectl get pods --all-namespaces # 检查所有pod状态
# 部署测试应用
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get services # 获取访问地址
八、常见问题解决
8.1 kubelet无法启动
检查docker是否正常运行,尝试重启docker和kubelet服务
8.2 节点NotReady
通常是因为网络插件未正确安装,重新安装网络插件
8.3 拉取镜像失败
# 可以预先拉取镜像
kubeadm config images pull
九、最佳实践建议
- 使用固定IP地址的云服务器
- 考虑使用containerd替代Docker作为容器运行时
- 为生产环境配置etcd数据备份
- 设置合理的资源配额和限制
- 定期更新Kubernetes版本
通过本文详细的步骤指导,您应该已经成功在Linux云服务器上部署了一个可用的Kubernetes集群。Kubernetes的学习曲线虽然较陡峭,但掌握它将为您的云原生应用部署带来极大便利。建议后续进一步学习Helm、Ingress控制器等高级功能,构建更完善的应用部署方案。