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

系列导读:本篇将深入讲解 Kubernetes 生产环境的部署与最佳实践。


文章目录

    • [一、Kubernetes 架构](#一、Kubernetes 架构)
      • [1.1 整体架构](#1.1 整体架构)
      • [1.2 核心组件](#1.2 核心组件)
    • 二、集群部署
      • [2.1 部署方式对比](#2.1 部署方式对比)
      • [2.2 kubeadm 部署](#2.2 kubeadm 部署)
      • [2.3 集群规划](#2.3 集群规划)
    • 三、核心概念
      • [3.1 资源对象](#3.1 资源对象)
      • [3.2 Pod 生命周期](#3.2 Pod 生命周期)
    • 四、部署应用
      • [4.1 Deployment](#4.1 Deployment)
      • [4.2 Service](#4.2 Service)
      • [4.3 Ingress](#4.3 Ingress)
    • 五、生产最佳实践
      • [5.1 资源限制](#5.1 资源限制)
      • [5.2 健康检查](#5.2 健康检查)
      • [5.3 配置管理](#5.3 配置管理)
      • [5.4 持久化存储](#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 API
Scheduler 调度器,分配 Pod
Controller Manager 控制器,维护集群状态
etcd 分布式存储,保存集群数据
Kubelet 节点代理,管理容器
Kube-proxy 网络代理,Service 实现

二、集群部署

2.1 部署方式对比

方式 说明 适用场景
kubeadm 官方工具 生产环境
kops AWS 专用 云环境
k3s 轻量级 边缘计算
minikube 单机 开发测试

2.2 kubeadm 部署

bash 复制代码
# 1. 安装 Docker
curl -fsSL https://get.docker.com | bash

# 2. 安装 kubeadm
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl

# 3. 初始化 Master
kubeadm init --pod-network-cidr=10.244.0.0/16

# 4. 配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# 5. 安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 6. Worker 节点加入
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

2.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

yaml 复制代码
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
  labels:
    app: order
spec:
  replicas: 3
  selector:
    matchLabels:
      app: order
  template:
    metadata:
      labels:
        app: order
    spec:
      containers:
      - name: order
        image: registry.example.com/order:v1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 512Mi
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5

4.2 Service

yaml 复制代码
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: order-service
spec:
  selector:
    app: order
  ports:
  - port: 80
    targetPort: 8080
  type: ClusterIP

4.3 Ingress

yaml 复制代码
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: order-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: order.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: order-service
            port:
              number: 80

五、生产最佳实践

5.1 资源限制

yaml 复制代码
resources:
  requests:
    cpu: 100m      # 最小保证
    memory: 128Mi
  limits:
    cpu: 500m      # 最大限制
    memory: 512Mi

5.2 健康检查

yaml 复制代码
livenessProbe:   # 存活检查
  httpGet:
    path: /health
    port: 8080

readinessProbe:  # 就绪检查
  httpGet:
    path: /ready
    port: 8080

5.3 配置管理

yaml 复制代码
# ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database.url: "jdbc:mysql://mysql:3306/mydb"

# 使用
env:
  - name: DATABASE_URL
    valueFrom:
      configMapKeyRef:
        name: app-config
        key: database.url

5.4 持久化存储

yaml 复制代码
# PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: standard

总结

Kubernetes 架构 :Master、Worker 节点

集群部署 :kubeadm、集群规划

核心概念 :Pod、Deployment、Service

部署应用 :YAML 配置

生产实践:资源限制、健康检查

下篇预告Docker 容器化最佳实践


作者 :刘~浪地球
系列 :云原生与容器(一)
更新时间:2026-04-14

相关推荐
海兰12 小时前
Kibana Dashboard as Code:Elastic 9.4 如何用 Terraform 和类型化 API 终结“JSON 垃圾袋“
云原生·json·terraform
geshifei13 小时前
K8s 容器运行 UnixBench — 代理机器执行记录
云原生·容器·kubernetes
Albert Edison15 小时前
【Docker】Ubuntu22.04 安装 Docker 教程
运维·docker·容器
codefan※16 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
阿里云云原生17 小时前
可观测性的终局?从“面向数据”到“面向对象”,UModel 如何为 AI Agent 注入认知地图
云原生·agent
李南想做条咸鱼18 小时前
k8s集群容器访问域名第一次不通,第二次必通如何解决
云原生·容器·kubernetes
FelixBitSoul18 小时前
K8s 调度器黑盒全拆解:拓扑约束数学陷阱 + Go 插件二开实战(避坑全记录)
容器·kubernetes
叶~小兮18 小时前
K8s常用组件学习笔记
笔记·学习·kubernetes
ん贤18 小时前
Volcano 详细笔记
云原生·volcano
IT策士19 小时前
Docker 网络进阶:容器间通信与 DNS 解析
网络·docker·容器