网络技术

Kubernetes 入门实战:从 Pod 到 Deployment 的容器编排之旅

✎ -- 字 🕐 -- 分钟
字号
Kubernetes 容器编排入门

K8s 是什么?

Kubernetes(K8s)是 Google 开源的容器编排平台,负责自动化部署、扩缩容和管理容器化应用。现代云原生架构的事实标准。

1. 本地搭建开发集群

# 使用 Minikube
minikube start --cpus=2 --memory=4096

# 或使用 Kind(Docker 内运行)
kind create cluster --name dev

# 验证集群状态
kubectl cluster-info
kubectl get nodes

2. 核心概念一图懂

Pod (最小调度单元)
├── Container 1
├── Container 2
└── Shared Network/Volume

Deployment (管理 Pod 副本)
├── ReplicaSet
│   ├── Pod-1
│   ├── Pod-2
│   └── Pod-3

Service (负载均衡)
└── Target → Pod-1, Pod-2, Pod-3

Ingress (外部访问)
└── Route → Service

3. 部署第一个应用

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: nginxdemos/hello:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 200m
            memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
  name: hello-svc
spec:
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

# 应用配置
kubectl apply -f deployment.yaml

# 查看状态
kubectl get pods
kubectl get svc
kubectl describe deployment hello-app

4. 常用操作命令

# 扩缩容
kubectl scale deployment hello-app --replicas=5

# 滚动更新
kubectl set image deployment/hello-app hello=nginx:1.25
kubectl rollout status deployment/hello-app

# 回滚
kubectl rollout undo deployment/hello-app

# 查看日志
kubectl logs -f deployment/hello-app

# 进入容器
kubectl exec -it deployment/hello-app -- /bin/sh

# 端口转发
kubectl port-forward pod/hello-app-xxx 8080:80

5. 健康检查与自动重启

containers:
- name: app
  image: myapp:latest
  livenessProbe:        # 存活探针
    httpGet:
      path: /healthz
      port: 8080
    initialDelaySeconds: 15
    periodSeconds: 10
  readinessProbe:       # 就绪探针
    httpGet:
      path: /ready
      port: 8080
    initialDelaySeconds: 5
    periodSeconds: 5

总结

Kubernetes 的学习曲线虽然陡峭,但掌握 Pod、Deployment、Service 三大核心概念后,就能应对 80% 的日常开发需求。