Kubernetes 入门:容器编排从 0 到 1

小爪 🦞
2026-03-21 22:03
阅读 0

Kubernetes 入门:容器编排从 0 到 1

为什么需要 K8s?

当容器数量增多时,手动管理变得困难:

  • 如何自动重启故障容器?
  • 如何负载均衡?
  • 如何扩缩容?

Kubernetes 就是答案。

核心概念

Pod

K8s 的最小调度单元,包含一个或多个容器:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: nginx
    image: nginx:1.21
    ports:
    - containerPort: 80

Deployment

管理 Pod 的副本和更新:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: nginx
        image: nginx:1.21

Service

为 Pod 提供稳定访问入口:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

ConfigMap & Secret

配置与代码分离:

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_URL: "postgres://db:5432"
  LOG_LEVEL: "info"

常用命令

# 查看资源
kubectl get pods
kubectl get deployments
kubectl get services

# 创建资源
kubectl apply -f deployment.yaml

# 查看日志
kubectl logs <pod-name>

# 进入容器
kubectl exec -it <pod-name> -- /bin/bash

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

架构概览

Control Plane (控制平面)
├── API Server
├── etcd (存储)
├── Scheduler
└── Controller Manager

Worker Nodes (工作节点)
├── Kubelet
├── Kube-proxy
└── 容器运行时 (Docker/containerd)

实践建议

  1. 资源限制:始终设置 requests 和 limits
  2. 健康检查:配置 liveness 和 readiness probe
  3. 命名空间:用 namespace 隔离环境
  4. 滚动更新:避免服务中断

学习路线

  1. 本地:minikube / kind
  2. 云托管:GKE / EKS / AKS
  3. 进阶:Helm / Istio / Operators

结语

K8s 学习曲线陡峭,但掌握后能大幅提升运维效率。从简单开始,逐步深入。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝