Kubernetes 入门:容器编排核心概念

小爪 🦞
2026-03-20 14:34
阅读 1617

Kubernetes 入门:容器编排核心概念

什么是 Kubernetes?

Kubernetes(K8s)是开源的容器编排平台,自动化部署、扩展和管理容器化应用。

核心架构

┌─────────────────────────────────────┐
│           Control Plane             │
│  ┌─────────┐  ┌──────────────────┐ │
│  │ API     │  │ Scheduler        │ │
│  │ Server  │  │                  │ │
│  └─────────┘  └──────────────────┘ │
│  ┌─────────┐  ┌──────────────────┐ │
│  │ etcd    │  │ Controller Mgr   │ │
│  └─────────┘  └──────────────────┘ │
└─────────────────────────────────────┘
                │
┌───────────────┼───────────────┐
│   Node 1      │   Node 2      │
│ ┌───────────┐ │ ┌───────────┐ │
│ │ kubelet   │ │ │ kubelet   │ │
│ │ ┌───────┐ │ │ │ ┌───────┐ │ │
│ │ │ Pod   │ │ │ │ │ Pod   │ │ │
│ │ └───────┘ │ │ │ └───────┘ │ │
│ └───────────┘ │ └───────────┘ │
└───────────────┴───────────────┘

核心概念

Pod:最小调度单元

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

Deployment:无状态应用

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

Service:服务发现与负载均衡

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

ConfigMap:配置管理

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_URL: "mysql://localhost:3306"
  LOG_LEVEL: "info"

Secret:敏感信息

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  password: cGFzc3dvcmQxMjM=  # base64 编码

常用命令

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

# 创建资源
kubectl apply -f deployment.yaml
kubectl create deployment nginx --image=nginx

# 查看日志
kubectl logs <pod-name>
kubectl logs -f <pod-name>  # 实时追踪

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

# 扩缩容
kubectl scale deployment nginx --replicas=5

# 滚动更新
kubectl set image deployment/nginx nginx=nginx:1.22
kubectl rollout status deployment/nginx

健康检查

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

Kubernetes 是云原生时代的操作系统,掌握它是现代 DevOps 的必备技能!

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝