logo

从零到一:Kubernetes 集群标准化部署与运维实战教程

作者:很菜不狗2025.09.26 16:45浏览量:1

简介:本文详细介绍Kubernetes集群的标准化部署流程,涵盖环境准备、组件安装、集群验证及运维优化,帮助开发者快速掌握容器编排核心技能。

一、Kubernetes 部署前的环境准备

1.1 服务器资源规划

Kubernetes 集群部署前需明确节点角色与资源配置。典型生产环境建议采用 3 个控制平面节点(Master)和若干工作节点(Worker)的架构。控制平面节点建议配置 8 核 CPU、16GB 内存及 100GB 磁盘空间,工作节点则根据业务负载动态调整,建议不低于 4 核 CPU、8GB 内存。磁盘类型推荐使用 SSD 以提升 etcd 存储性能。

1.2 操作系统与网络要求

所有节点需安装兼容的 Linux 发行版(如 CentOS 7/8、Ubuntu 20.04 LTS),内核版本建议 4.15+。网络方面需配置静态 IP 地址,并确保节点间网络延迟低于 10ms。若使用云服务,需检查安全组规则是否放行 6443(Kube API)、2379-2380(etcd)、10250(Kubelet)等关键端口。

1.3 依赖工具安装

部署前需在所有节点安装 Docker(建议 19.03+版本)及 kubeadm 工具链。以 CentOS 为例,执行以下命令:

  1. # 安装 Docker CE
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. # 安装 Kubernetes 工具
  6. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  7. [kubernetes]
  8. name=Kubernetes
  9. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
  10. enabled=1
  11. gpgcheck=1
  12. repo_gpgcheck=1
  13. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  14. EOF
  15. sudo yum install -y kubelet kubeadm kubectl
  16. sudo systemctl enable --now docker kubelet

二、Kubernetes 集群标准化部署流程

2.1 初始化控制平面

选择一个节点作为主控节点,执行初始化命令时需指定 Pod 网络 CIDR(如 10.244.0.0/16):

  1. sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.28.0

初始化完成后,需执行以下命令配置 kubectl:

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

2.2 部署网络插件

推荐使用 Calico 作为网络插件,执行以下命令部署:

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

验证网络状态:

  1. kubectl get pods -n kube-system | grep calico
  2. # 正常应显示 calico-node 和 calico-kube-controllers 处于 Running 状态

2.3 加入工作节点

在主控节点执行 kubeadm token create --print-join-command 获取加入命令,然后在工作节点执行该命令。例如:

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

2.4 集群验证

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

  1. kubectl get nodes
  2. # 应显示所有节点 Ready 状态
  3. kubectl cluster-info
  4. # 应显示 Kubernetes 控制平面运行正常

三、Kubernetes 部署后的优化与运维

3.1 高可用配置

生产环境建议部署 3 个控制平面节点,通过 kubeadm init--control-plane-endpoint 参数指定负载均衡 VIP。同时配置 etcd 集群外置存储,使用云服务商提供的块存储或自建 NFS。

3.2 资源限制配置

通过 LimitRangeResourceQuota 对象限制命名空间资源使用:

  1. # limitrange-example.yaml
  2. apiVersion: v1
  3. kind: LimitRange
  4. metadata:
  5. name: mem-cpu-limit
  6. spec:
  7. limits:
  8. - default:
  9. cpu: 500m
  10. memory: 512Mi
  11. defaultRequest:
  12. cpu: 200m
  13. memory: 256Mi
  14. type: Container

应用配置:

  1. kubectl apply -f limitrange-example.yaml

3.3 监控与日志方案

部署 Prometheus + Grafana 监控栈:

  1. kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml

配置 EFK(Elasticsearch + Fluentd + Kibana)日志系统:

  1. # 部署 Elasticsearch
  2. kubectl apply -f https://download.elastic.co/downloads/eck/2.8.0/operator.yaml
  3. # 部署 Fluentd DaemonSet
  4. kubectl apply -f https://raw.githubusercontent.com/fluent/fluentd-kubernetes-daemonset/master/fluentd-daemonset-elasticsearch.yaml

四、常见问题与解决方案

4.1 节点 NotReady 状态

检查 kubectl describe node <节点名> 输出,常见原因包括:

  • 网络连接问题(验证 pingtelnet 测试)
  • Kubelet 服务未运行(systemctl status kubelet
  • 证书过期(执行 kubeadm certs renew all

4.2 Pod 一直 Pending

执行 kubectl describe pod <pod名> 查看 Events,常见原因:

  • 资源不足(检查节点资源使用情况)
  • 持久卷绑定失败(验证 StorageClass 配置)
  • 调度器问题(检查 kube-scheduler 日志)

4.3 API Server 不可用

检查 etcd 集群健康状态:

  1. ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  2. --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  3. --cert=/etc/kubernetes/pki/etcd/server.crt \
  4. --key=/etc/kubernetes/pki/etcd/server.key \
  5. endpoint health

五、进阶部署建议

5.1 使用 Ansible 自动化部署

创建 Ansible Playbook 实现多节点批量部署:

  1. # k8s-deploy.yml
  2. - hosts: k8s_cluster
  3. tasks:
  4. - name: Install Docker
  5. yum:
  6. name: docker-ce
  7. state: present
  8. - name: Install Kubernetes tools
  9. yum:
  10. name: "{{ item }}"
  11. state: present
  12. loop:
  13. - kubelet
  14. - kubeadm
  15. - kubectl

5.2 混合云部署方案

对于跨云部署场景,建议:

  1. 使用 MetalLB 实现裸机 LoadBalancer
  2. 配置 CNI 插件支持多云网络(如 Cilium)
  3. 通过 CSI 驱动实现跨云存储访问

5.3 安全加固建议

实施以下安全措施:

  • 启用 RBAC 权限控制
  • 定期轮换证书(kubeadm certs renew
  • 限制 API Server 访问 IP(--advertise-address 参数)
  • 启用 Pod 安全策略(PSP)或 OPA Gatekeeper

六、总结与最佳实践

Kubernetes 部署的核心在于标准化和可维护性。建议:

  1. 使用基础设施即代码(IaC)工具(如 Terraform)管理集群
  2. 建立完整的 CI/CD 流水线实现自动化部署
  3. 定期进行集群健康检查(如 kubeadm certs check-expiration
  4. 保持组件版本一致(避免混合不同小版本)

通过本文介绍的标准化流程,开发者可在 2 小时内完成生产级 Kubernetes 集群部署。实际部署中需根据业务需求调整组件配置,并建立完善的监控告警体系确保集群稳定运行。

相关文章推荐

发表评论

活动