CKAD 常用资源:StatefulSet

StatefulSet 的 YAML 模板和 CKAD 常考字段解析

StatefulSet 用于有稳定网络标识和稳定存储的应用。CKAD 出现频率不如 Deployment,但存储综合题可能会考。

YAML 模板

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  namespace: state
spec:
  serviceName: web
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 500Mi

常考字段解析

  • spec.serviceName:关联 headless Service 名称,用于稳定 DNS。
  • spec.replicas:副本数,Pod 名称会是 web-0web-1
  • spec.selector.matchLabels:必须匹配 Pod 模板标签。
  • volumeClaimTemplates:为每个 Pod 自动创建独立 PVC。
  • volumeMounts[].name:要匹配 volumeClaimTemplates[].metadata.name

常用命令

1
2
3
4
k get statefulset,pod,pvc -n state
k scale statefulset web -n state --replicas=3
k describe statefulset web -n state
k rollout status statefulset/web -n state

易错点

  • StatefulSet 通常需要一个同名或指定名的 headless Service。
  • 删除 StatefulSet 不一定删除 PVC,存储可能会保留。
comments powered by Disqus