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:付费版本,提供长期技术支持
系统优化项:
# 禁用swap分区sudo swapoff -asudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab# 配置内核参数cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOFsudo sysctl --system
1.3 容器运行时选择
Kubernetes 1.24+版本已移除Docker支持,推荐方案:
- containerd:轻量级,CNCF维护
- CRI-O:专注于Kubernetes的容器运行时
- Docker Engine(需配合cri-dockerd):传统方案,兼容性最佳
containerd安装示例:
cat <<EOF | sudo tee /etc/modules-load.d/containerd.confoverlaybr_netfilterEOFsudo modprobe overlaysudo modprobe br_netfilter# 安装containerdsudo apt-get update && sudo apt-get install -y containerdsudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.tomlsudo systemctl restart containerd
二、Kubernetes集群安装
2.1 使用kubeadm初始化集群
# 安装kubeadm/kubelet/kubectlsudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curlcurl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpgecho "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.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl# 初始化控制平面节点sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12# 配置kubectlmkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
2.2 添加工作节点
在从节点执行:
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxx
2.3 验证集群状态
kubectl get nodes# 预期输出:# NAME STATUS ROLES AGE VERSION# master01 Ready control-plane 5m20s v1.28.0# worker01 Ready <none> 2m30s v1.28.0
三、网络配置与存储方案
3.1 CNI插件选择
| 插件 | 特点 | 适用场景 |
|---|---|---|
| Calico | 基于BGP的网络策略,性能优异 | 安全要求高的生产环境 |
| Flannel | 简单易用,VXLAN隧道 | 开发测试环境 |
| Cilium | 基于eBPF,支持高级网络功能 | 需要高性能L4/L7过滤 |
Calico安装示例:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
3.2 存储类配置
生产环境推荐使用以下存储方案:
示例StorageClass配置:
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:name: standardprovisioner: kubernetes.io/aws-ebsparameters:type: gp2fsType: ext4reclaimPolicy: RetainallowVolumeExpansion: 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安装示例:
helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm install prometheus prometheus-community/prometheus
4.3 安全加固措施
- RBAC权限控制:最小权限原则
- Pod安全策略:限制特权容器
- 网络策略:默认拒绝所有入站流量
- 镜像签名:使用cosign或Notary验证镜像
五、常见问题解决方案
5.1 节点状态异常处理
# 查看节点详细信息kubectl describe node worker01# 常见问题排查:# 1. 磁盘空间不足:df -h# 2. 内存不足:free -h# 3. 网络连通性问题:ping <api-server-ip># 4. 证书过期:kubeadm certs renew all
5.2 Pod调度失败处理
# 查看未调度的Podkubectl get pods -n default -o wide | grep Pending# 常见原因:# 1. 资源不足:kubectl describe node | grep Allocated# 2. 节点选择器不匹配:检查Pod的nodeSelector# 3. 污点容忍度不足:kubectl describe node | grep Taints
六、升级与维护策略
6.1 版本升级流程
# 1. 升级kubeadmapt-get install -y kubeadm=1.28.1-00# 2. 升级控制平面kubeadm upgrade plankubeadm upgrade apply v1.28.1# 3. 升级kubeletapt-get install -y kubelet=1.28.1-00systemctl restart kubelet# 4. 升级工作节点(逐个进行)kubeadm upgrade node
6.2 备份与恢复方案
- etcd备份:使用
etcdctl snapshot save - 集群配置备份:备份
/etc/kubernetes/目录 - 资源定义备份:使用
kubectl get all --all-namespaces -o yaml > backup.yaml
七、总结与扩展建议
Kubernetes部署是一个系统工程,需要综合考虑硬件选型、网络架构、存储方案和安全策略。对于生产环境,建议:
- 采用自动化工具(如Ansible、Terraform)实现基础设施即代码
- 实施CI/CD流水线自动化部署流程
- 建立完善的监控告警体系
- 定期进行混沌工程测试
通过以上实践,可以构建出高可用、可扩展的Kubernetes平台,为容器化应用提供稳定的基础设施支持。

发表评论
登录后可评论,请前往 登录 或 注册