volumeClaimTemplates使用示例

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

    凡是被这个 StatefulSet 管理的 Pod,都会声明一个对应的 PVC;而这个 PVC 的定义,就来自于 volumeClaimTemplates 这个模板字段。更重要的是,这个 PVC 的名字,会被分配一个与这个 Pod 完全一致的编号。

    1. # kubectl get persistentvolumeclaims
    2. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
    3. example-local-claim Pending local-storage 44m
    4. www-web-0 Bound work1-vol2-pv 20Gi RWO local-storage 3m41s
    5. www-web-1 Bound work1-vol1-pv 20Gi RWO local-storage 3m38s 17m