logo

从零到一:Kubernetes集群部署全流程实战指南

作者:很酷cat2025.09.26 16:38浏览量:0

简介:本文详细讲解Kubernetes集群部署的完整流程,涵盖环境准备、核心组件安装、集群验证及运维要点,提供可落地的操作指南。

一、部署前环境准备

1.1 硬件资源规划

生产环境建议采用3节点主控集群+N工作节点架构。主控节点需配置至少2核CPU、4GB内存及50GB磁盘空间,工作节点根据业务负载动态调整,建议每节点预留20%资源用于系统调度。以AWS EC2为例,推荐使用m5.large实例作为主控节点,c5.xlarge作为计算节点。

1.2 操作系统配置

推荐使用CentOS 7/8或Ubuntu 20.04 LTS系统,需完成以下基础配置:

  1. # 禁用SELinux(CentOS)
  2. sudo setenforce 0
  3. sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  4. # 配置内核参数
  5. cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
  6. net.bridge.bridge-nf-call-ip6tables = 1
  7. net.bridge.bridge-nf-call-iptables = 1
  8. EOF
  9. sudo sysctl --system

1.3 容器运行时选择

Kubernetes 1.24+版本已移除Docker支持,推荐使用containerd或CRI-O。以containerd为例安装步骤:

  1. # 安装containerd
  2. sudo apt-get install -y containerd
  3. # 配置镜像加速
  4. sudo mkdir -p /etc/containerd
  5. containerd config default | sudo tee /etc/containerd/config.toml
  6. sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
  7. sudo systemctl restart containerd

二、核心组件安装

2.1 控制平面部署

采用kubeadm工具初始化集群,需先安装依赖组件:

  1. # 安装kubeadm/kubelet/kubectl
  2. sudo apt-get install -y apt-transport-https ca-certificates curl
  3. curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
  4. echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  5. sudo apt-get update
  6. sudo apt-get install -y kubelet kubeadm kubectl

初始化主节点时需指定Pod网络CIDR(以Calico为例):

  1. sudo kubeadm init --pod-network-cidr=192.168.0.0/16
  2. # 配置kubectl
  3. mkdir -p $HOME/.kube
  4. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  5. sudo chown $(id -u):$(id -g) $HOME/.kube/config

2.2 工作节点加入

在主节点获取加入命令:

  1. kubeadm token create --print-join-command

在工作节点执行获取的命令,示例:

  1. kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
  2. --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxx

2.3 网络插件部署

推荐使用Calico实现网络功能:

  1. kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
  2. # 验证网络状态
  3. kubectl get pods -n kube-system | grep calico

三、集群验证与测试

3.1 基础组件检查

执行以下命令验证集群状态:

  1. # 检查节点状态
  2. kubectl get nodes
  3. # 检查核心组件Pod
  4. kubectl get pods -n kube-system
  5. # 验证API Server
  6. curl -k https://<master-ip>:6443/version

3.2 部署测试应用

创建nginx部署并暴露服务:

  1. # nginx-deployment.yaml
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: nginx-deployment
  6. spec:
  7. replicas: 3
  8. selector:
  9. matchLabels:
  10. app: nginx
  11. template:
  12. metadata:
  13. labels:
  14. app: nginx
  15. spec:
  16. containers:
  17. - name: nginx
  18. image: nginx:latest
  19. ports:
  20. - containerPort: 80
  21. ---
  22. apiVersion: v1
  23. kind: Service
  24. metadata:
  25. name: nginx-service
  26. spec:
  27. type: NodePort
  28. selector:
  29. app: nginx
  30. ports:
  31. - protocol: TCP
  32. port: 80
  33. targetPort: 80

执行部署并验证:

  1. kubectl apply -f nginx-deployment.yaml
  2. kubectl get pods -o wide
  3. kubectl get service nginx-service

四、运维与故障排查

4.1 常用诊断命令

  1. # 查看节点资源使用
  2. kubectl top nodes
  3. # 查看Pod日志
  4. kubectl logs <pod-name> -n <namespace>
  5. # 描述资源详情
  6. kubectl describe node <node-name>
  7. # 检查事件日志
  8. kubectl get events --sort-by='.metadata.creationTimestamp'

4.2 常见问题处理

节点NotReady状态

  1. 检查kubelet服务状态:systemctl status kubelet
  2. 查看网络连接:ping <api-server-ip>
  3. 检查证书有效期:openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"

Pod一直Pending

  1. 检查资源配额:kubectl describe quota -n <namespace>
  2. 验证存储类:kubectl get sc
  3. 查看事件详情:kubectl describe pod <pod-name>

五、生产环境优化建议

  1. 高可用配置:使用keepalived+haproxy实现控制平面负载均衡
  2. 资源限制:通过LimitRange和ResourceQuota控制资源使用
  3. 监控体系:集成Prometheus+Grafana实现可视化监控
  4. 备份方案:使用Velero定期备份ETCD数据和应用状态
  5. 升级策略:遵循”先测试后生产”原则,使用kubeadm upgrade分阶段升级

六、进阶部署方案

6.1 使用kubespray自动化部署

  1. # 安装依赖
  2. pip install ansible jmespath
  3. # 克隆kubespray仓库
  4. git clone https://github.com/kubernetes-sigs/kubespray.git
  5. cd kubespray
  6. # 配置inventory文件
  7. cp -rfp inventory/sample inventory/mycluster
  8. # 执行部署
  9. ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b -v

6.2 混合云部署架构

采用”中心+边缘”架构时,需注意:

  1. 边缘节点使用--node-labels标记特殊区域
  2. 通过Taint/Toleration机制控制Pod调度
  3. 配置联邦集群实现跨云资源管理

本教程完整覆盖了从环境准备到生产运维的Kubernetes部署全流程,通过标准化操作流程和故障处理指南,帮助运维人员快速构建稳定可靠的容器编排平台。实际部署时建议先在测试环境验证所有步骤,再逐步推广到生产环境。

相关文章推荐

发表评论

活动