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

相关推荐
AOwhisky4 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
极客先躯4 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
Waay5 小时前
Linux 三个核心环境变量配置文件、作用域、生效方式完整梳理
linux·运维·学习·云原生·容器
大E帝国子民16 小时前
Docker 部署 RocketMQ 5
docker·容器·rocketmq
SelectDB6 小时前
云数仓费钱?用 SelectDB Serverless 三步配出秒级弹性,最高降本 70%
数据库·云原生·数据分析
江湖有缘7 小时前
【保姆级教程】使用Docker Compose一键搭建Picsur私有图床服务
java·docker·容器
长不胖的路人甲9 小时前
微服务限流
微服务·云原生·架构
java_logo10 小时前
5 分钟共享打印机:用 Docker 一键部署 CUPS
运维·docker·容器·cups·网络打印机·共享打印机·docker部署cups
fen_fen10 小时前
Docker部署PostgreSQL10 开启SSL和证书安装文档
docker·容器·ssl
ai_coder_ai11 小时前
编写自动化脚本,在自己后端服务中使用云原生Baas服务进行设备相关操作
数据库·云原生·自动化