【问题标题】:Scale statefulset based on latest volumeSnapshot根据最新的 volumeSnapshot 扩展 statefulset
【发布时间】:2022-06-11 12:13:06
【问题描述】:

如果有人知道解决方案,请帮助我如何做到这一点。
我有“statefulset”,里面有以下“volumeClaimTemplates”:
当我扩展我的副本数时:
“kubectl scale statefulset --replicas=2 my-statefulset”
从名为 = “MySnapshot”

的“volumesnapshot”对象创建新的“PVC”
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: data
    spec:
      accessModes:
      - ReadWriteOnce
      dataSource:
        apiGroup: snapshot.storage.k8s.io
        kind: VolumeSnapshot
        name: MySnapshot
      resources:
        requests:
          storage: 800Gi
      storageClassName: ebs-sc
      volumeMode: Filesystem

我的问题:
是否可以在字段中使用动态名称

volumeClaimTemplates:
  dataSource:
    apiGroup: snapshot.storage.k8s.io
    kind: VolumeSnapshot
    name: ?  

澄清:
创建新快照时,修改 statefulset 并设置 volumeClaimTemplates.dataSource.name = new-name
为什么需要这个:
我有 cronjob,它会自动创建具有新名称的快照,例如:MySnapshot_1、MySnapshot_2 ... 创建新副本时,我需要将最新数据放入我的“PVC”中。

【问题讨论】:

  • 您找到解决方案了吗?此外,如果您可以分享您是如何创建自动快照创建的,那将有助于我探索类似的事情

标签: kubernetes kubernetes-statefulset persistent-volume-claims csi-driver volume-claim-template


【解决方案1】:

https://kyverno.io/ 可以做这个工作

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: mutate-pvc
spec:
  rules:
    - name: set-name-latest-snapshot
      match:
        any:
        - resources:
            kinds:
            - PersistentVolumeClaim
      context:
      - name: latestSnapshotTime
        apiCall:
          urlPath: "/apis/snapshot.storage.k8s.io/v1/namespaces/{{request.namespace}}/volumesnapshots"
          jmesPath: "items[?status.readyToUse].status.creationTime | sort(@)[-1]" 
      - name: latestSnapshotName
        apiCall:
          urlPath: "/apis/snapshot.storage.k8s.io/v1/namespaces/{{request.namespace}}/volumesnapshots"
          jmesPath: "items[?status.creationTime == '{{latestSnapshotTime}}'][].metadata.name | [0]"
      mutate:
        patchStrategicMerge: 
          spec:
            dataSource:
              name: "{{latestSnapshotName}}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2022-10-14
    • 2020-11-11
    • 2020-12-16
    • 2015-03-04
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多