云原生与容器--Kubernetes 生产环境部署实战

张开发
2026/5/28 3:06:34 15 分钟阅读
云原生与容器--Kubernetes 生产环境部署实战
系列导读本篇将深入讲解 Kubernetes 生产环境的部署与最佳实践。文章目录一、Kubernetes 架构1.1 整体架构1.2 核心组件二、集群部署2.1 部署方式对比2.2 kubeadm 部署2.3 集群规划三、核心概念3.1 资源对象3.2 Pod 生命周期四、部署应用4.1 Deployment4.2 Service4.3 Ingress五、生产最佳实践5.1 资源限制5.2 健康检查5.3 配置管理5.4 持久化存储总结一、Kubernetes 架构1.1 整体架构┌─────────────────────────────────────────────────────────────┐ │ Kubernetes 集群架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Master 节点 │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │API Server│ │Scheduler│ │Controller│ │ etcd │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────┼─────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Worker 节点 │ │ Worker 节点 │ │ Worker 节点 │ │ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │ │ │ Kubelet │ │ │ │ Kubelet │ │ │ │ Kubelet │ │ │ │ │ │Kube-proxy│ │ │ │Kube-proxy│ │ │ │Kube-proxy│ │ │ │ │ │ Runtime │ │ │ │ Runtime │ │ │ │ Runtime │ │ │ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘1.2 核心组件组件说明API Server集群入口RESTful APIScheduler调度器分配 PodController Manager控制器维护集群状态etcd分布式存储保存集群数据Kubelet节点代理管理容器Kube-proxy网络代理Service 实现二、集群部署2.1 部署方式对比方式说明适用场景kubeadm官方工具生产环境kopsAWS 专用云环境k3s轻量级边缘计算minikube单机开发测试2.2 kubeadm 部署# 1. 安装 Dockercurl-fsSLhttps://get.docker.com|bash# 2. 安装 kubeadmapt-getupdateapt-getinstall-yapt-transport-httpscurl-shttps://packages.cloud.google.com/apt/doc/apt-key.gpg|apt-keyadd-catEOF/etc/apt/sources.list.d/kubernetes.listdeb https://apt.kubernetes.io/ kubernetes-xenial main EOFapt-getupdateapt-getinstall-ykubelet kubeadm kubectl# 3. 初始化 Masterkubeadm init --pod-network-cidr10.244.0.0/16# 4. 配置 kubectlmkdir-p$HOME/.kubecp-i/etc/kubernetes/admin.conf$HOME/.kube/config# 5. 安装网络插件kubectl apply-fhttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 6. Worker 节点加入kubeadmjoinmaster-ip:6443--tokentoken--discovery-token-ca-cert-hashhash2.3 集群规划生产环境推荐配置 Master 节点3个 - CPU: 4核 - 内存: 8GB - 磁盘: 100GB SSD Worker 节点N个 - CPU: 8核 - 内存: 16GB - 磁盘: 200GB SSD三、核心概念3.1 资源对象对象说明Pod最小部署单元Deployment无状态应用管理Service服务发现与负载均衡ConfigMap配置管理Secret敏感信息管理PersistentVolume持久化存储3.2 Pod 生命周期Pending → Running → Succeeded/Failed │ └──► CrashLoopBackOff异常重启四、部署应用4.1 Deployment# deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:order-servicelabels:app:orderspec:replicas:3selector:matchLabels:app:ordertemplate:metadata:labels:app:orderspec:containers:-name:orderimage:registry.example.com/order:v1.0ports:-containerPort:8080resources:requests:cpu:100mmemory:128Milimits:cpu:500mmemory:512MilivenessProbe:httpGet:path:/healthport:8080initialDelaySeconds:30periodSeconds:10readinessProbe:httpGet:path:/readyport:8080initialDelaySeconds:5periodSeconds:54.2 Service# service.yamlapiVersion:v1kind:Servicemetadata:name:order-servicespec:selector:app:orderports:-port:80targetPort:8080type:ClusterIP4.3 Ingress# ingress.yamlapiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:order-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target:/spec:rules:-host:order.example.comhttp:paths:-path:/pathType:Prefixbackend:service:name:order-serviceport:number:80五、生产最佳实践5.1 资源限制resources:requests:cpu:100m# 最小保证memory:128Milimits:cpu:500m# 最大限制memory:512Mi5.2 健康检查livenessProbe:# 存活检查httpGet:path:/healthport:8080readinessProbe:# 就绪检查httpGet:path:/readyport:80805.3 配置管理# ConfigMapapiVersion:v1kind:ConfigMapmetadata:name:app-configdata:database.url:jdbc:mysql://mysql:3306/mydb# 使用env:-name:DATABASE_URLvalueFrom:configMapKeyRef:name:app-configkey:database.url5.4 持久化存储# PersistentVolumeClaimapiVersion:v1kind:PersistentVolumeClaimmetadata:name:mysql-pvcspec:accessModes:-ReadWriteOnceresources:requests:storage:10GistorageClassName:standard总结✅Kubernetes 架构Master、Worker 节点✅集群部署kubeadm、集群规划✅核心概念Pod、Deployment、Service✅部署应用YAML 配置✅生产实践资源限制、健康检查下篇预告Docker 容器化最佳实践作者刘~浪地球系列云原生与容器一更新时间2026-04-14

更多文章