logo

Kubernetes部署全流程指南:从零到生产环境实践

作者:有好多问题2025.09.26 16:38浏览量:2

简介:本文详细讲解Kubernetes集群部署的核心步骤,涵盖环境准备、集群安装、节点管理、网络配置及生产环境优化建议,帮助开发者快速构建高可用容器编排平台。

一、Kubernetes部署前的环境准备

1.1 硬件资源规划

生产环境建议采用3节点(1主2从)或5节点(3主2从)架构,单节点配置需满足:

  • CPU:4核以上(控制平面节点建议8核)
  • 内存:16GB以上(etcd节点需单独配置8GB+内存)
  • 磁盘:200GB+ SSD(建议分区:/var/lib/docker 100GB,/var/lib/kubelet 50GB)
  • 网络:千兆网卡(万兆网卡更佳)

1.2 操作系统选择

推荐使用以下Linux发行版:

  • Ubuntu 22.04 LTS:社区支持完善,软件包更新及时
  • CentOS 7/8:企业级稳定性,但需注意CentOS 8已停止维护
  • RHEL 8:付费版本,提供长期技术支持

系统优化项:

  1. # 禁用swap分区
  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

1.3 容器运行时选择

Kubernetes 1.24+版本已移除Docker支持,推荐方案:

  • containerd:轻量级,CNCF维护
  • CRI-O:专注于Kubernetes的容器运行时
  • Docker Engine(需配合cri-dockerd):传统方案,兼容性最佳

containerd安装示例:

  1. cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
  2. overlay
  3. br_netfilter
  4. EOF
  5. sudo modprobe overlay
  6. sudo modprobe br_netfilter
  7. # 安装containerd
  8. sudo apt-get update && sudo apt-get install -y containerd
  9. sudo mkdir -p /etc/containerd
  10. containerd config default | sudo tee /etc/containerd/config.toml
  11. sudo systemctl restart containerd

二、Kubernetes集群安装

2.1 使用kubeadm初始化集群

  1. # 安装kubeadm/kubelet/kubectl
  2. sudo apt-get update
  3. sudo apt-get install -y apt-transport-https ca-certificates curl
  4. curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
  5. echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  6. sudo apt-get update
  7. sudo apt-get install -y kubelet kubeadm kubectl
  8. # 初始化控制平面节点
  9. sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
  10. # 配置kubectl
  11. mkdir -p $HOME/.kube
  12. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  13. sudo chown $(id -u):$(id -g) $HOME/.kube/config

2.2 添加工作节点

在从节点执行:

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

2.3 验证集群状态

  1. kubectl get nodes
  2. # 预期输出:
  3. # NAME STATUS ROLES AGE VERSION
  4. # master01 Ready control-plane 5m20s v1.28.0
  5. # worker01 Ready <none> 2m30s v1.28.0

三、网络配置与存储方案

3.1 CNI插件选择

插件 特点 适用场景
Calico 基于BGP的网络策略,性能优异 安全要求高的生产环境
Flannel 简单易用,VXLAN隧道 开发测试环境
Cilium 基于eBPF,支持高级网络功能 需要高性能L4/L7过滤

Calico安装示例:

  1. kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

3.2 存储类配置

生产环境推荐使用以下存储方案:

示例StorageClass配置:

  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4. name: standard
  5. provisioner: kubernetes.io/aws-ebs
  6. parameters:
  7. type: gp2
  8. fsType: ext4
  9. reclaimPolicy: Retain
  10. allowVolumeExpansion: true

四、生产环境优化建议

4.1 高可用架构设计

  • 控制平面高可用:使用3个etcd节点+3个控制平面节点
  • 负载均衡:配置Nginx或HAProxy作为API Server入口
  • 节点自动修复:启用NodeProblemDetector和Kubelet自动修复

4.2 监控与日志方案

推荐组合:

  • 监控:Prometheus + Grafana + AlertManager
  • 日志:EFK(Elasticsearch-Fluentd-Kibana)或Loki-Promtail-Grafana

Prometheus安装示例:

  1. helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  2. helm install prometheus prometheus-community/prometheus

4.3 安全加固措施

  • RBAC权限控制:最小权限原则
  • Pod安全策略:限制特权容器
  • 网络策略:默认拒绝所有入站流量
  • 镜像签名:使用cosign或Notary验证镜像

五、常见问题解决方案

5.1 节点状态异常处理

  1. # 查看节点详细信息
  2. kubectl describe node worker01
  3. # 常见问题排查:
  4. # 1. 磁盘空间不足:df -h
  5. # 2. 内存不足:free -h
  6. # 3. 网络连通性问题:ping <api-server-ip>
  7. # 4. 证书过期:kubeadm certs renew all

5.2 Pod调度失败处理

  1. # 查看未调度的Pod
  2. kubectl get pods -n default -o wide | grep Pending
  3. # 常见原因:
  4. # 1. 资源不足:kubectl describe node | grep Allocated
  5. # 2. 节点选择器不匹配:检查Pod的nodeSelector
  6. # 3. 污点容忍度不足:kubectl describe node | grep Taints

六、升级与维护策略

6.1 版本升级流程

  1. # 1. 升级kubeadm
  2. apt-get install -y kubeadm=1.28.1-00
  3. # 2. 升级控制平面
  4. kubeadm upgrade plan
  5. kubeadm upgrade apply v1.28.1
  6. # 3. 升级kubelet
  7. apt-get install -y kubelet=1.28.1-00
  8. systemctl restart kubelet
  9. # 4. 升级工作节点(逐个进行)
  10. kubeadm upgrade node

6.2 备份与恢复方案

  • etcd备份:使用etcdctl snapshot save
  • 集群配置备份:备份/etc/kubernetes/目录
  • 资源定义备份:使用kubectl get all --all-namespaces -o yaml > backup.yaml

七、总结与扩展建议

Kubernetes部署是一个系统工程,需要综合考虑硬件选型、网络架构、存储方案和安全策略。对于生产环境,建议:

  1. 采用自动化工具(如Ansible、Terraform)实现基础设施即代码
  2. 实施CI/CD流水线自动化部署流程
  3. 建立完善的监控告警体系
  4. 定期进行混沌工程测试

通过以上实践,可以构建出高可用、可扩展的Kubernetes平台,为容器化应用提供稳定的基础设施支持。

相关文章推荐

发表评论

活动