返回主页 学习路径
Kubernetes
自动化部署 · 弹性伸缩 · 服务发现
Kubernetes(简称 K8s)是由 Google 于 2014 年开源的容器编排平台,是云原生计算基金会(CNCF)的核心项目。Kubernetes 提供了容器化的应用部署、弹性伸缩、服务发现、负载均衡、自动恢复和滚动更新等能力,是全球最流行的容器编排系统。Kubernetes 是 Docker Swarm 的终结者,也是现代云原生应用的标准平台,几乎所有的云服务商都提供 Kubernetes 服务。
容器编排之王 · 云原生核心
📅 诞生时间2014年 · Google
🧩 类型容器编排 · 声明式API
📊 配置语言YAML / 命令行
⚡性能
8/10
📦生态
9/10
🧠易用
6/10
🚀扩展性
9/10

📑 本文目录

📌 第一部分:Kubernetes 概览与定位

1.1 定义与全称

Kubernetes(简称 K8s)是由 Google 于 2014 年开源的容器编排平台,是云原生计算基金会(CNCF)的核心项目。Kubernetes 的名字来源于希腊语,意为"舵手"或"飞行员"。K8s 中的 8 代表 "ubernete" 的 8 个字母。

1.2 核心定位

Kubernetes 的核心定位是 容器化应用的自动化管理平台。它提供了:

1.3 主要应用领域

1.4 知名案例


🏗️ 第二部分:Kubernetes 核心架构

2.1 控制平面(Control Plane)

2.2 工作节点(Worker Node)

2.3 核心概念


⚙️ 第三部分:核心操作

3.1 基础命令

# 查看集群
kubectl version
kubectl cluster-info

# 查看节点
kubectl get nodes
kubectl describe node node1

# 查看资源
kubectl get pods
kubectl get pods -A          # 所有命名空间
kubectl get deployments
kubectl get services
kubectl get ingress
kubectl get configmaps
kubectl get secrets
kubectl get all              # 所有资源

# 创建资源
kubectl create deployment nginx --image=nginx
kubectl create -f deployment.yaml
kubectl apply -f deployment.yaml  # 声明式(推荐)

# 删除资源
kubectl delete pod nginx-xxx
kubectl delete -f deployment.yaml
kubectl delete deployment nginx

# 查看日志
kubectl logs pod_name
kubectl logs -f pod_name     # 实时日志
kubectl logs pod_name -c container_name

# 进入容器
kubectl exec -it pod_name -- /bin/bash
kubectl exec -it pod_name -c container_name -- /bin/bash

# 端口转发
kubectl port-forward pod_name 8080:80

# 标签操作
kubectl label pods nginx app=web
kubectl get pods -l app=web

# 命名空间
kubectl create namespace dev
kubectl get pods -n dev
kubectl config set-context --current --namespace=dev

3.2 Deployment 配置

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        env:
        - name: ENV
          value: "production"
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10

3.3 Service 配置

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP           # ClusterIP / NodePort / LoadBalancer

---
# NodePort 示例
apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30080
  type: NodePort

3.4 Ingress 配置

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80
  tls:
  - hosts:
    - myapp.example.com
    secretName: tls-secret

3.5 ConfigMap 配置

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  app.properties: |
    ENV=production
    LOG_LEVEL=info
  settings.json: |
    {"debug": false, "timeout": 30}

# 在 Pod 中使用
envFrom:
- configMapRef:
    name: app-config

# volume 挂载
volumes:
- name: config
  configMap:
    name: app-config

3.6 HPA 弹性伸缩

# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

3.7 滚动更新与回滚

# 更新镜像
kubectl set image deployment/nginx nginx=nginx:1.22

# 查看更新状态
kubectl rollout status deployment/nginx

# 查看历史
kubectl rollout history deployment/nginx

# 回滚到上一版本
kubectl rollout undo deployment/nginx

# 回滚到特定版本
kubectl rollout undo deployment/nginx --to-revision=2

# 暂停更新
kubectl rollout pause deployment/nginx

# 恢复更新
kubectl rollout resume deployment/nginx

⚖️ 第四部分:Kubernetes 与其他技术对比

4.1 Kubernetes vs Docker Swarm

4.2 Kubernetes vs Nomad

4.3 Kubernetes vs Serverless


🧠 第五部分:学习建议

1
前置知识

Docker 容器化、Linux 基础、YAML 语法

2
基础入门

K8s 架构、核心概念(Pod/Deployment/Service)、kubectl 命令

3
核心进阶

ConfigMap/Secret、Ingress、PV/PVC、HPA 弹性伸缩

4
高级方向

Helm(包管理)、Istio(服务网格)、Operator(自动化运维)

推荐学习资源


🎯 总结升华

Kubernetes 是云原生时代的"操作系统"。

它用 声明式配置、自动化管理、弹性伸缩 重新定义了应用部署的方式。Kubernetes 是 DevOps 工程师的必修课,也是云原生技术的核心平台。

掌握 Kubernetes,意味着你能 管理大规模容器集群、实现高可用部署、构建弹性架构

"Kubernetes 是未来十年应用平台的标准。" 🚀

—— 技术社区评价

🔖 相关标签
#容器编排 #云原生 #K8s #DevOps #微服务 #CNCF #自动化
📄 本文档为 Kubernetes 完整白皮书 · 最后更新于 2026年06月28日