云原生与容器--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

相关推荐
明月_清风4 小时前
K8s 从入门到上手:核心概念+常用工具全解析
后端·kubernetes
阿里云云原生7 小时前
阿里云可观测 2026 年 4 月产品动态
云原生
qq_364371728 小时前
基于 Docker 容器化环境配置
运维·docker·容器
塔克拉玛攻城狮8 小时前
详解cni插件cilium篇一:它为什么这么快?它还有哪些高级功能?
kubernetes·cilium
阿里云云原生8 小时前
Skills Registry 公测开启:为企业打造私有的 Skill 管理中心
云原生
吃胖点儿9 小时前
DevOps与自动化原理
云原生
GentleDevin9 小时前
Docker 运维常用命令大全
docker·容器·运维命令
运维全栈笔记9 小时前
基于Docker的MinIO单机部署与功能测试指南
运维·docker·容器
阿里云云原生9 小时前
HiClaw 发布 v1.1.0,提供 Kubernetes 集群部署实现,支持 Hermes Worker 运行时
kubernetes
心机之蛙qee10 小时前
docker的安装(RHEL9)
运维·docker·容器