logo

从零到一:Kubernetes集群部署与运维全流程指南

作者:问答酱2025.09.26 16:39浏览量:0

简介:本文详细解析Kubernetes集群部署全流程,涵盖环境准备、安装配置、核心组件验证及生产级优化建议,适合运维工程师和开发人员系统学习。

一、环境准备与前置条件

1.1 硬件资源规划

生产环境建议采用3节点高可用架构,每个节点配置:

  • CPU:4核以上(支持虚拟化)
  • 内存:16GB以上(Worker节点建议32GB+)
  • 磁盘:200GB+ SSD(系统盘与数据盘分离)
  • 网络:千兆网卡(推荐万兆网络)

测试环境可使用单节点部署,但需注意资源隔离。例如在Ubuntu 22.04系统上,需预留至少4GB内存给kubelet进程。

1.2 操作系统调优

执行以下系统级配置:

  1. # 禁用交换分区(Kubernetes要求)
  2. sudo swapoff -a
  3. sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  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. net.ipv4.ip_forward = 1
  9. EOF
  10. sudo sysctl --system
  11. # 安装依赖组件
  12. sudo apt update
  13. sudo apt install -y containerd apt-transport-https curl

1.3 容器运行时选择

推荐使用containerd作为运行时:

  1. # 配置containerd
  2. sudo mkdir -p /etc/containerd
  3. containerd config default | sudo tee /etc/containerd/config.toml
  4. sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.toml
  5. sudo systemctl restart containerd

二、Kubernetes集群安装

2.1 使用kubeadm初始化控制平面

  1. # 安装kubeadm/kubelet/kubectl
  2. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  3. echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  4. sudo apt update
  5. sudo apt install -y kubelet kubeadm kubectl
  6. # 初始化控制节点(使用指定版本)
  7. sudo kubeadm init --kubernetes-version v1.28.0 \
  8. --pod-network-cidr=10.244.0.0/16 \
  9. --service-cidr=10.96.0.0/12 \
  10. --control-plane-endpoint="192.168.1.100:6443"
  11. # 配置kubectl
  12. mkdir -p $HOME/.kube
  13. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  14. sudo chown $(id -u):$(id -g) $HOME/.kube/config

2.2 添加Worker节点

在Worker节点执行:

  1. # 获取加入命令(在控制节点执行)
  2. kubeadm token create --print-join-command
  3. # Worker节点执行返回的命令
  4. # 示例:
  5. kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
  6. --discovery-token-ca-cert-hash sha256:xxxxxx

2.3 网络插件部署(Calico示例)

  1. kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/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://192.168.1.100:6443/version

3.2 部署测试应用

  1. # nginx-deployment.yaml
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: nginx-demo
  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:1.25
  19. ports:
  20. - containerPort: 80

执行部署:

  1. kubectl apply -f nginx-deployment.yaml
  2. kubectl get pods -l app=nginx

3.3 服务暴露测试

  1. # nginx-service.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: nginx-service
  6. spec:
  7. selector:
  8. app: nginx
  9. ports:
  10. - protocol: TCP
  11. port: 80
  12. targetPort: 80
  13. type: NodePort

验证服务:

  1. kubectl apply -f nginx-service.yaml
  2. kubectl get svc nginx-service
  3. # 获取NodePort端口后,通过任意节点IP访问
  4. curl http://<node-ip>:<node-port>

四、生产环境优化建议

4.1 高可用架构设计

  • 控制平面三节点部署
  • 使用负载均衡器(如HAProxy)暴露API Server
  • etcd集群独立部署(建议5节点)

4.2 资源管理策略

  1. # 配置ResourceQuota
  2. apiVersion: v1
  3. kind: ResourceQuota
  4. metadata:
  5. name: mem-cpu-quota
  6. spec:
  7. hard:
  8. requests.cpu: "10"
  9. requests.memory: 20Gi
  10. limits.cpu: "20"
  11. limits.memory: 40Gi

4.3 监控体系搭建

推荐Prometheus+Grafana方案:

  1. # 使用kube-prometheus-stack
  2. helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  3. helm install prometheus prometheus-community/kube-prometheus-stack

五、常见问题处理

5.1 节点NotReady状态

检查步骤:

  1. journalctl -u kubelet查看日志
  2. 验证网络插件Pod状态
  3. 检查/etc/kubernetes/kubelet.conf配置

5.2 证书过期处理

  1. # 查看证书有效期
  2. openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"
  3. # 手动更新证书(控制节点)
  4. kubeadm certs renew all
  5. systemctl restart kubelet

5.3 版本升级流程

  1. # 升级前备份
  2. kubeadm config view > cluster-config.yaml
  3. # 升级控制节点
  4. apt install -y kubelet=1.28.1-00 kubeadm=1.28.1-00 kubectl=1.28.1-00
  5. kubeadm upgrade apply v1.28.1
  6. # 升级Worker节点
  7. apt install -y kubelet=1.28.1-00 kubeadm=1.28.1-00
  8. kubeadm upgrade node

六、进阶实践建议

  1. 基础设施即代码:使用Terraform管理云资源,ArgoCD实现GitOps
  2. 安全加固:启用PodSecurityPolicy,配置NetworkPolicy
  3. 性能调优:调整--kube-reserved--system-reserved参数
  4. 备份方案:使用Velero进行集群资源备份

本教程覆盖了从环境准备到生产运维的全流程,建议结合官方文档https://kubernetes.io/docs/)进行深入学习。实际部署时需根据业务需求调整参数配置,并建立完善的监控告警体系。

相关文章推荐

发表评论