kubeblocks icon indicating copy to clipboard operation
kubeblocks copied to clipboard

[BUG] upgrade kb from 0.8.3 to 0.9.0 some cluster pod restart

Open JashBook opened this issue 8 months ago • 2 comments

Describe the bug

To Reproduce Steps to reproduce the behavior:

  1. install kubeblocks 0.8.3
curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s v0.8.4-beta.3

kbcli kubeblocks install --create-namespace --version 0.8.3 --set image.registry=docker.io --set dataProtection.image.registry=docker.io --set addonChartsImage.registry=docker.io --set dataProtection.image.datasafed.tag=0.1.0  --namespace kb-cluster
  1. create cluster
  2. upgrade kubeblocks to 0.9.0
curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s v0.9.0-beta.27

kbcli kubeblocks upgrade --auto-approve --version 0.9.0-beta.33 --set image.registry=docker.io --set dataProtection.image.registry=docker.io --set addonChartsImage.registry=docker.io --set dataProtection.image.datasafed.tag=0.2.0  --namespace kb-cluster 
  1. See error: pod restart
kubectl get pod -n ns-cluster
NAME                                READY   STATUS     RESTARTS        AGE
postgres-cluster-postgresql-0       5/5     Running    0               3h36m
postgres-cluster-postgresql-1       5/5     Running    0               8m10s
postgres-cluster-postgresql-2       5/5     Running    0               3h36m

kafka-cluster-broker-0              2/2     Running    0               6m6s

pulsar-cluster-bookies-0            2/2     Running    0               6m5s
pulsar-cluster-bookies-1            2/2     Running    2 (3h34m ago)   3h43m
pulsar-cluster-bookies-2            2/2     Running    0               3h44m
pulsar-cluster-bookies-3            2/2     Running    0               3h33m
pulsar-cluster-bookies-4            2/2     Running    0               3h33m
pulsar-cluster-pulsar-broker-0      3/3     Running    1 (34m ago)     3h36m
pulsar-cluster-pulsar-broker-1      3/3     Running    1 (34m ago)     3h37m
pulsar-cluster-pulsar-proxy-0       2/2     Running    0               3h48m
pulsar-cluster-zookeeper-0          2/2     Running    0               3h34m
pulsar-cluster-zookeeper-1          2/2     Running    0               3h34m
pulsar-cluster-zookeeper-2          2/2     Running    0               3h35m

diff pg cluster yaml

diff 0.8.3/cluster/cluster-postgres-cluster.yaml 0.9.0/cluster/cluster-postgres-cluster.yaml
16c16
<   resourceVersion: "829948"
---
>   resourceVersion: "981306"
32d31
<     noCreatePDB: false
41d39
<     rsmTransformPolicy: ToSts
53d50
<   monitor: {}

diff pg component yaml

diff 0.8.3/component/component-postgres-cluster-postgresql.yaml 0.9.0/component/component-postgres-cluster-postgresql.yaml 
8a9
>   - component.kubeblocks.io/finalizer
26c27
<   resourceVersion: "817808"
---
>   resourceVersion: "981215"
37d37
<   monitor: true
46d45
<   rsmTransformPolicy: ToSts

diff sts yaml

diff 0.8.3/sts/sts-postgres-cluster-postgresql.yaml  0.9.0/sts/sts-postgres-cluster-postgresql.yaml 
24,31c24
<   ownerReferences:
<   - apiVersion: workloads.kubeblocks.io/v1alpha1
<     blockOwnerDeletion: true
<     controller: true
<     kind: ReplicatedStateMachine
<     name: postgres-cluster-postgresql
<     uid: 746d8465-33eb-4f6d-84ba-789493d9fd16
<   resourceVersion: "817646"
---
>   resourceVersion: "982037"

  1. get pg upgrade before cluster yaml
apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
  annotations:
    kubeblocks.io/reconcile: "2024-06-19T06:53:52.035009079Z"
  creationTimestamp: "2024-06-19T06:13:55Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  generation: 10
  labels:
    app.kubernetes.io/instance: postgres-cluster
    clusterdefinition.kubeblocks.io/name: postgresql
    clusterversion.kubeblocks.io/name: postgresql-12.14.0-pgvector-v0.6.1
  name: postgres-cluster
  namespace: ns-cluster
  resourceVersion: "829948"
  uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
spec:
  affinity:
    podAntiAffinity: Preferred
    tenancy: SharedNode
  clusterDefinitionRef: postgresql
  clusterVersionRef: postgresql-12.14.0-pgvector-v0.6.1
  componentSpecs:
  - classDefRef:
      class: ""
    componentDefRef: postgresql
    enabledLogs:
    - running
    monitor: true
    name: postgresql
    noCreatePDB: false
    replicas: 3
    resources:
      limits:
        cpu: 200m
        memory: 644245094400m
      requests:
        cpu: 200m
        memory: 644245094400m
    rsmTransformPolicy: ToSts
    serviceAccountName: kb-postgres-cluster
    switchPolicy:
      type: Noop
    volumeClaimTemplates:
    - name: data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 3Gi
  monitor: {}
  resources:
    cpu: "0"
    memory: "0"
  services:
  - componentSelector: postgresql
    name: postgresql-internet
    roleSelector: primary
    serviceName: postgresql-internet
    spec:
      ports:
      - name: tcp-postgresql
        nodePort: 31138
        port: 5432
        protocol: TCP
        targetPort: tcp-postgresql
      - name: tcp-pgbouncer
        nodePort: 31899
        port: 6432
        protocol: TCP
        targetPort: tcp-pgbouncer
      type: LoadBalancer
  storage:
    size: "0"
  terminationPolicy: WipeOut
status:
  clusterDefGeneration: 2
  components:
    postgresql:
      phase: Running
      podsReady: true
      podsReadyTime: "2024-06-19T06:55:17Z"
  conditions:
  - lastTransitionTime: "2024-06-19T06:13:57Z"
    message: 'The operator has started the provisioning of Cluster: postgres-cluster'
    observedGeneration: 10
    reason: PreCheckSucceed
    status: "True"
    type: ProvisioningStarted
  - lastTransitionTime: "2024-06-19T07:04:17Z"
    message: Successfully applied for resources
    observedGeneration: 10
    reason: ApplyResourcesSucceed
    status: "True"
    type: ApplyResources
  - lastTransitionTime: "2024-06-19T06:55:17Z"
    message: all pods of components are ready, waiting for the probe detection successful
    reason: AllReplicasReady
    status: "True"
    type: ReplicasReady
  - lastTransitionTime: "2024-06-19T06:55:17Z"
    message: 'Cluster: postgres-cluster is ready, current phase is Running'
    reason: ClusterReady
    status: "True"
    type: Ready
  observedGeneration: 10
  phase: Running

component yaml

apiVersion: apps.kubeblocks.io/v1alpha1
kind: Component
metadata:
  annotations:
    kubeblocks.io/generation: "10"
  creationTimestamp: "2024-06-19T06:13:57Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  generation: 6
  labels:
    app.kubernetes.io/instance: postgres-cluster
    app.kubernetes.io/managed-by: kubeblocks
    apps.kubeblocks.io/cluster-uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
    apps.kubeblocks.io/component-name: postgresql
    clusterdefinition.kubeblocks.io/name: postgresql
    clusterversion.kubeblocks.io/name: postgresql-12.14.0-pgvector-v0.6.1
  name: postgres-cluster-postgresql
  namespace: ns-cluster
  ownerReferences:
  - apiVersion: apps.kubeblocks.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: Cluster
    name: postgres-cluster
    uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
  resourceVersion: "817808"
  uid: cc48cd68-00c2-488d-ba37-5c99e5a9c347
spec:
  affinity:
    podAntiAffinity: Preferred
    tenancy: SharedNode
  classDefRef:
    class: ""
  compDef: ""
  enabledLogs:
  - running
  monitor: true
  replicas: 3
  resources:
    limits:
      cpu: 200m
      memory: 644245094400m
    requests:
      cpu: 200m
      memory: 644245094400m
  rsmTransformPolicy: ToSts
  serviceAccountName: kb-postgres-cluster
  tolerations:
  - effect: NoSchedule
    key: kb-data
    operator: Equal
    value: "true"
  volumeClaimTemplates:
  - name: data
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
status:
  conditions:
  - lastTransitionTime: "2024-06-19T06:14:10Z"
    message: 'The operator has started the provisioning of Cluster: postgres-cluster-postgresql'
    observedGeneration: 6
    reason: PreCheckSucceed
    status: "True"
    type: ProvisioningStarted
  observedGeneration: 6
  phase: Running

sts yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    config.kubeblocks.io/tpl-agamotto-configuration: postgres-cluster-postgresql-agamotto-configuration
    config.kubeblocks.io/tpl-pgbouncer-configuration: postgres-cluster-postgresql-pgbouncer-configuration
    config.kubeblocks.io/tpl-postgresql-configuration: postgres-cluster-postgresql-postgresql-configuration
    config.kubeblocks.io/tpl-postgresql-custom-metrics: postgres-cluster-postgresql-postgresql-custom-metrics
    config.kubeblocks.io/tpl-postgresql-scripts: postgres-cluster-postgresql-postgresql-scripts
    kubeblocks.io/generation: "10"
  creationTimestamp: "2024-06-19T06:14:27Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  generation: 8
  labels:
    app.kubernetes.io/component: postgresql
    app.kubernetes.io/instance: postgres-cluster
    app.kubernetes.io/managed-by: kubeblocks
    app.kubernetes.io/name: postgresql
    apps.kubeblocks.io/component-name: postgresql
    rsm.workloads.kubeblocks.io/controller-generation: "8"
  name: postgres-cluster-postgresql
  namespace: ns-cluster
  ownerReferences:
  - apiVersion: workloads.kubeblocks.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicatedStateMachine
    name: postgres-cluster-postgresql
    uid: 746d8465-33eb-4f6d-84ba-789493d9fd16
  resourceVersion: "817646"
  uid: 36f67384-fc3e-48da-94db-49acc956639f
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Retain
    whenScaled: Retain
  podManagementPolicy: Parallel
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/instance: postgres-cluster
      app.kubernetes.io/managed-by: kubeblocks
      app.kubernetes.io/name: postgresql
      apps.kubeblocks.io/component-name: postgresql
  serviceName: postgres-cluster-postgresql-headless
  template:
    metadata:
      annotations:
        config.kubeblocks.io/restart-postgresql-configuration: 64bf895d5d
        kubeblocks.io/restart: "2024-06-19T06:34:46Z"
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: postgresql
        app.kubernetes.io/instance: postgres-cluster
        app.kubernetes.io/managed-by: kubeblocks
        app.kubernetes.io/name: postgresql
        app.kubernetes.io/version: ""
        apps.kubeblocks.io/component-name: postgresql
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - preference:
              matchExpressions:
              - key: kb-data
                operator: In
                values:
                - "true"
            weight: 100
        podAntiAffinity: {}
      containers:
      - command:
        - /kb-scripts/setup.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: SERVICE_PORT
          value: "5432"
        - name: DCS_ENABLE_KUBERNETES_API
          value: "true"
        - name: KUBERNETES_USE_CONFIGMAPS
          value: "true"
        - name: SCOPE
          value: $(KB_CLUSTER_NAME)-$(KB_COMP_NAME)-patroni$(KB_CLUSTER_UID_POSTFIX_8)
        - name: KUBERNETES_SCOPE_LABEL
          value: apps.kubeblocks.postgres.patroni/scope
        - name: KUBERNETES_ROLE_LABEL
          value: apps.kubeblocks.postgres.patroni/role
        - name: KUBERNETES_LABELS
          value: '{"app.kubernetes.io/instance":"$(KB_CLUSTER_NAME)","apps.kubeblocks.io/component-name":"$(KB_COMP_NAME)"}'
        - name: RESTORE_DATA_DIR
          value: /home/postgres/pgdata/kb_restore
        - name: KB_PG_CONFIG_PATH
          value: /home/postgres/conf/postgresql.conf
        - name: SPILO_CONFIGURATION
          value: |
            bootstrap:
              initdb:
                - auth-host: md5
                - auth-local: trust
        - name: ALLOW_NOSSL
          value: "true"
        - name: PGROOT
          value: /home/postgres/pgdata/pgroot
        - name: POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: PGUSER_SUPERUSER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGPASSWORD_SUPERUSER
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER_ADMIN
          value: superadmin
        - name: PGPASSWORD_ADMIN
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER_STANDBY
          value: standby
        - name: PGPASSWORD_STANDBY
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGPASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/spilo:12.14.0-pgvector-v0.6.1
        imagePullPolicy: IfNotPresent
        name: postgresql
        ports:
        - containerPort: 5432
          name: tcp-postgresql
          protocol: TCP
        - containerPort: 8008
          name: patroni
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - /bin/sh
            - -c
            - -ee
            - |
              exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
              [ -f /postgresql/tmp/.initialized ] || [ -f /postgresql/.initialized ]
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 5
        resources:
          limits:
            cpu: 200m
            memory: 644245094400m
          requests:
            cpu: 200m
            memory: 644245094400m
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /dev/shm
          name: dshm
        - mountPath: /home/postgres/pgdata
          name: data
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /kb-scripts
          name: scripts
        - mountPath: /kb-podinfo
          name: pod-info
      - command:
        - /kb-scripts/pgbouncer_setup.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: PGBOUNCER_AUTH_TYPE
          value: md5
        - name: POSTGRESQL_USERNAME
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: POSTGRESQL_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: POSTGRESQL_PORT
          value: "5432"
        - name: POSTGRESQL_HOST
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: PGBOUNCER_PORT
          value: "6432"
        - name: PGBOUNCER_BIND_ADDRESS
          value: 0.0.0.0
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/pgbouncer:1.19.0
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 15
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: tcp-pgbouncer
          timeoutSeconds: 5
        name: pgbouncer
        ports:
        - containerPort: 6432
          name: tcp-pgbouncer
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 15
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: tcp-pgbouncer
          timeoutSeconds: 5
        resources:
          limits:
            cpu: "0"
            memory: "0"
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/pgbouncer/conf
          name: pgbouncer-config
        - mountPath: /kb-scripts
          name: scripts
      - command:
        - /bin/agamotto
        - --config=/opt/agamotto/agamotto-config.yaml
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: ENDPOINT
          value: 127.0.0.1:5432
        - name: DATA_SOURCE_PASS
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: DATA_SOURCE_USER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: infracreate-registry.cn-zhangjiakou.cr.aliyuncs.com/apecloud/agamotto:0.1.2-beta.1
        imagePullPolicy: IfNotPresent
        name: metrics
        ports:
        - containerPort: 9187
          name: http-metrics
          protocol: TCP
        resources:
          limits:
            cpu: "0"
            memory: "0"
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /opt/conf
          name: postgresql-custom-metrics
        - mountPath: /opt/agamotto
          name: agamotto-configuration
      - command:
        - lorry
        - --port
        - "3501"
        - --grpcport
        - "50001"
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: KB_BUILTIN_HANDLER
          value: postgresql
        - name: KB_SERVICE_USER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
        - name: KB_SERVICE_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
        - name: KB_SERVICE_PORT
          value: "5432"
        - name: KB_DATA_PATH
          value: /home/postgres/pgdata
        - name: KB_RSM_ACTION_SVC_LIST
          value: "null"
        - name: KB_RSM_ROLE_UPDATE_MECHANISM
          value: DirectAPIServerEventUpdate
        - name: KB_RSM_ROLE_PROBE_TIMEOUT
          value: "1"
        - name: KB_CLUSTER_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['app.kubernetes.io/instance']
        - name: KB_COMP_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['apps.kubeblocks.io/component-name']
        - name: KB_SERVICE_CHARACTER_TYPE
          value: postgresql
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/kubeblocks-tools:0.8.3
        imagePullPolicy: IfNotPresent
        name: lorry
        ports:
        - containerPort: 3501
          name: lorry-http-port
          protocol: TCP
        - containerPort: 50001
          name: lorry-grpc-port
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /v1.0/checkrole
            port: 3501
            scheme: HTTP
          periodSeconds: 1
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          limits:
            cpu: "0"
            memory: "0"
        startupProbe:
          failureThreshold: 3
          periodSeconds: 10
          successThreshold: 1
          tcpSocket:
            port: 3501
          timeoutSeconds: 1
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/pgdata
          name: data
      - args:
        - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$(TOOLS_PATH)
        - /bin/reloader
        - --log-level
        - info
        - --operator-update-enable
        - --tcp
        - "9901"
        - --config
        - /opt/config-manager/config-manager.yaml
        command:
        - env
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: CONFIG_MANAGER_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: DB_TYPE
          value: postgresql
        - name: TOOLS_PATH
          value: /opt/kb-tools/reload/postgresql-configuration:/opt/config-manager
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/kubeblocks-tools:0.8.3
        imagePullPolicy: IfNotPresent
        name: config-manager
        resources:
          limits:
            cpu: "0"
            memory: "0"
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /opt/kb-tools/reload/postgresql-configuration
          name: cm-script-postgresql-configuration
        - mountPath: /opt/config-manager
          name: config-manager-config
      dnsPolicy: ClusterFirst
      initContainers:
      - command:
        - /kb-scripts/init_container.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        image: docker.io/apecloud/spilo:12.14.0-pgvector-v0.6.1
        imagePullPolicy: IfNotPresent
        name: pg-init-container
        resources:
          limits:
            cpu: "0"
            memory: "0"
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/pgdata
          name: data
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /kb-scripts
          name: scripts
        - mountPath: /kb-podinfo
          name: pod-info
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 103
        fsGroupChangePolicy: OnRootMismatch
        runAsGroup: 103
        runAsUser: 0
      serviceAccount: kb-postgres-cluster
      serviceAccountName: kb-postgres-cluster
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoSchedule
        key: kb-data
        operator: Equal
        value: "true"
      volumes:
      - emptyDir:
          medium: Memory
          sizeLimit: 644245094400m
        name: dshm
      - downwardAPI:
          defaultMode: 420
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['kubeblocks.io/role']
            path: pod-role
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['rs.apps.kubeblocks.io/primary']
            path: primary-pod
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['apps.kubeblocks.io/component-replicas']
            path: component-replicas
        name: pod-info
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-agamotto-configuration
        name: agamotto-configuration
      - configMap:
          defaultMode: 292
          name: postgres-cluster-postgresql-pgbouncer-configuration
        name: pgbouncer-config
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-postgresql-configuration
        name: postgresql-config
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-postgresql-custom-metrics
        name: postgresql-custom-metrics
      - configMap:
          defaultMode: 365
          name: postgres-cluster-postgresql-postgresql-scripts
        name: scripts
      - configMap:
          defaultMode: 493
          name: sidecar-patroni-reload-script-postgres-cluster
        name: cm-script-postgresql-configuration
      - configMap:
          defaultMode: 493
          name: sidecar-postgres-cluster-postgresql-config-manager-config
        name: config-manager-config
      - emptyDir: {}
        name: data
  updateStrategy:
    type: OnDelete
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      creationTimestamp: null
      labels:
        apps.kubeblocks.io/vct-name: data
        kubeblocks.io/volume-type: data
      name: data
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
      storageClassName: kb-default-sc
      volumeMode: Filesystem
    status:
      phase: Pending
status:
  availableReplicas: 3
  collisionCount: 0
  currentRevision: postgres-cluster-postgresql-589796456c
  observedGeneration: 8
  readyReplicas: 3
  replicas: 3
  updateRevision: postgres-cluster-postgresql-9867cf49f
  updatedReplicas: 3

get pg upgrade after cluster yaml

apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
  annotations:
    kubeblocks.io/reconcile: "2024-06-19T06:53:52.035009079Z"
  creationTimestamp: "2024-06-19T06:13:55Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  generation: 10
  labels:
    app.kubernetes.io/instance: postgres-cluster
    clusterdefinition.kubeblocks.io/name: postgresql
    clusterversion.kubeblocks.io/name: postgresql-12.14.0-pgvector-v0.6.1
  name: postgres-cluster
  namespace: ns-cluster
  resourceVersion: "981306"
  uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
spec:
  affinity:
    podAntiAffinity: Preferred
    tenancy: SharedNode
  clusterDefinitionRef: postgresql
  clusterVersionRef: postgresql-12.14.0-pgvector-v0.6.1
  componentSpecs:
  - classDefRef:
      class: ""
    componentDefRef: postgresql
    enabledLogs:
    - running
    monitor: true
    name: postgresql
    replicas: 3
    resources:
      limits:
        cpu: 200m
        memory: 644245094400m
      requests:
        cpu: 200m
        memory: 644245094400m
    serviceAccountName: kb-postgres-cluster
    switchPolicy:
      type: Noop
    volumeClaimTemplates:
    - name: data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 3Gi
  resources:
    cpu: "0"
    memory: "0"
  services:
  - componentSelector: postgresql
    name: postgresql-internet
    roleSelector: primary
    serviceName: postgresql-internet
    spec:
      ports:
      - name: tcp-postgresql
        nodePort: 31138
        port: 5432
        protocol: TCP
        targetPort: tcp-postgresql
      - name: tcp-pgbouncer
        nodePort: 31899
        port: 6432
        protocol: TCP
        targetPort: tcp-pgbouncer
      type: LoadBalancer
  storage:
    size: "0"
  terminationPolicy: WipeOut
status:
  clusterDefGeneration: 2
  components:
    postgresql:
      phase: Running
      podsReady: true
      podsReadyTime: "2024-06-19T06:55:17Z"
  conditions:
  - lastTransitionTime: "2024-06-19T06:13:57Z"
    message: 'The operator has started the provisioning of Cluster: postgres-cluster'
    observedGeneration: 10
    reason: PreCheckSucceed
    status: "True"
    type: ProvisioningStarted
  - lastTransitionTime: "2024-06-19T07:04:17Z"
    message: Successfully applied for resources
    observedGeneration: 10
    reason: ApplyResourcesSucceed
    status: "True"
    type: ApplyResources
  - lastTransitionTime: "2024-06-19T06:55:17Z"
    message: all pods of components are ready, waiting for the probe detection successful
    reason: AllReplicasReady
    status: "True"
    type: ReplicasReady
  - lastTransitionTime: "2024-06-19T06:55:17Z"
    message: 'Cluster: postgres-cluster is ready, current phase is Running'
    reason: ClusterReady
    status: "True"
    type: Ready
  observedGeneration: 10
  phase: Running


component yaml

apiVersion: apps.kubeblocks.io/v1alpha1
kind: Component
metadata:
  annotations:
    kubeblocks.io/generation: "10"
  creationTimestamp: "2024-06-19T06:13:57Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  - component.kubeblocks.io/finalizer
  generation: 6
  labels:
    app.kubernetes.io/instance: postgres-cluster
    app.kubernetes.io/managed-by: kubeblocks
    apps.kubeblocks.io/cluster-uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
    apps.kubeblocks.io/component-name: postgresql
    clusterdefinition.kubeblocks.io/name: postgresql
    clusterversion.kubeblocks.io/name: postgresql-12.14.0-pgvector-v0.6.1
  name: postgres-cluster-postgresql
  namespace: ns-cluster
  ownerReferences:
  - apiVersion: apps.kubeblocks.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: Cluster
    name: postgres-cluster
    uid: 4e6980d5-7358-4bb2-b9c7-43c4153e9919
  resourceVersion: "981215"
  uid: cc48cd68-00c2-488d-ba37-5c99e5a9c347
spec:
  affinity:
    podAntiAffinity: Preferred
    tenancy: SharedNode
  classDefRef:
    class: ""
  compDef: ""
  enabledLogs:
  - running
  replicas: 3
  resources:
    limits:
      cpu: 200m
      memory: 644245094400m
    requests:
      cpu: 200m
      memory: 644245094400m
  serviceAccountName: kb-postgres-cluster
  tolerations:
  - effect: NoSchedule
    key: kb-data
    operator: Equal
    value: "true"
  volumeClaimTemplates:
  - name: data
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
status:
  conditions:
  - lastTransitionTime: "2024-06-19T06:14:10Z"
    message: 'The operator has started the provisioning of Cluster: postgres-cluster-postgresql'
    observedGeneration: 6
    reason: PreCheckSucceed
    status: "True"
    type: ProvisioningStarted
  observedGeneration: 6
  phase: Running

sts yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    config.kubeblocks.io/tpl-agamotto-configuration: postgres-cluster-postgresql-agamotto-configuration
    config.kubeblocks.io/tpl-pgbouncer-configuration: postgres-cluster-postgresql-pgbouncer-configuration
    config.kubeblocks.io/tpl-postgresql-configuration: postgres-cluster-postgresql-postgresql-configuration
    config.kubeblocks.io/tpl-postgresql-custom-metrics: postgres-cluster-postgresql-postgresql-custom-metrics
    config.kubeblocks.io/tpl-postgresql-scripts: postgres-cluster-postgresql-postgresql-scripts
    kubeblocks.io/generation: "10"
  creationTimestamp: "2024-06-19T06:14:27Z"
  finalizers:
  - cluster.kubeblocks.io/finalizer
  generation: 8
  labels:
    app.kubernetes.io/component: postgresql
    app.kubernetes.io/instance: postgres-cluster
    app.kubernetes.io/managed-by: kubeblocks
    app.kubernetes.io/name: postgresql
    apps.kubeblocks.io/component-name: postgresql
    rsm.workloads.kubeblocks.io/controller-generation: "8"
  name: postgres-cluster-postgresql
  namespace: ns-cluster
  resourceVersion: "982037"
  uid: 36f67384-fc3e-48da-94db-49acc956639f
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Retain
    whenScaled: Retain
  podManagementPolicy: Parallel
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/instance: postgres-cluster
      app.kubernetes.io/managed-by: kubeblocks
      app.kubernetes.io/name: postgresql
      apps.kubeblocks.io/component-name: postgresql
  serviceName: postgres-cluster-postgresql-headless
  template:
    metadata:
      annotations:
        config.kubeblocks.io/restart-postgresql-configuration: 64bf895d5d
        kubeblocks.io/restart: "2024-06-19T06:34:46Z"
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: postgresql
        app.kubernetes.io/instance: postgres-cluster
        app.kubernetes.io/managed-by: kubeblocks
        app.kubernetes.io/name: postgresql
        app.kubernetes.io/version: ""
        apps.kubeblocks.io/component-name: postgresql
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - preference:
              matchExpressions:
              - key: kb-data
                operator: In
                values:
                - "true"
            weight: 100
        podAntiAffinity: {}
      containers:
      - command:
        - /kb-scripts/setup.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: SERVICE_PORT
          value: "5432"
        - name: DCS_ENABLE_KUBERNETES_API
          value: "true"
        - name: KUBERNETES_USE_CONFIGMAPS
          value: "true"
        - name: SCOPE
          value: $(KB_CLUSTER_NAME)-$(KB_COMP_NAME)-patroni$(KB_CLUSTER_UID_POSTFIX_8)
        - name: KUBERNETES_SCOPE_LABEL
          value: apps.kubeblocks.postgres.patroni/scope
        - name: KUBERNETES_ROLE_LABEL
          value: apps.kubeblocks.postgres.patroni/role
        - name: KUBERNETES_LABELS
          value: '{"app.kubernetes.io/instance":"$(KB_CLUSTER_NAME)","apps.kubeblocks.io/component-name":"$(KB_COMP_NAME)"}'
        - name: RESTORE_DATA_DIR
          value: /home/postgres/pgdata/kb_restore
        - name: KB_PG_CONFIG_PATH
          value: /home/postgres/conf/postgresql.conf
        - name: SPILO_CONFIGURATION
          value: |
            bootstrap:
              initdb:
                - auth-host: md5
                - auth-local: trust
        - name: ALLOW_NOSSL
          value: "true"
        - name: PGROOT
          value: /home/postgres/pgdata/pgroot
        - name: POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: PGUSER_SUPERUSER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGPASSWORD_SUPERUSER
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER_ADMIN
          value: superadmin
        - name: PGPASSWORD_ADMIN
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER_STANDBY
          value: standby
        - name: PGPASSWORD_STANDBY
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGUSER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: PGPASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/spilo:12.14.0-pgvector-v0.6.1
        imagePullPolicy: IfNotPresent
        name: postgresql
        ports:
        - containerPort: 5432
          name: tcp-postgresql
          protocol: TCP
        - containerPort: 8008
          name: patroni
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - /bin/sh
            - -c
            - -ee
            - |
              exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432
              [ -f /postgresql/tmp/.initialized ] || [ -f /postgresql/.initialized ]
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 5
        resources:
          limits:
            cpu: 200m
            memory: 644245094400m
          requests:
            cpu: 200m
            memory: 644245094400m
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /dev/shm
          name: dshm
        - mountPath: /home/postgres/pgdata
          name: data
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /kb-scripts
          name: scripts
        - mountPath: /kb-podinfo
          name: pod-info
      - command:
        - /kb-scripts/pgbouncer_setup.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: PGBOUNCER_AUTH_TYPE
          value: md5
        - name: POSTGRESQL_USERNAME
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        - name: POSTGRESQL_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: POSTGRESQL_PORT
          value: "5432"
        - name: POSTGRESQL_HOST
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: PGBOUNCER_PORT
          value: "6432"
        - name: PGBOUNCER_BIND_ADDRESS
          value: 0.0.0.0
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/pgbouncer:1.19.0
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 15
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: tcp-pgbouncer
          timeoutSeconds: 5
        name: pgbouncer
        ports:
        - containerPort: 6432
          name: tcp-pgbouncer
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 15
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: tcp-pgbouncer
          timeoutSeconds: 5
        resources:
          limits:
            cpu: "0"
            memory: "0"
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/pgbouncer/conf
          name: pgbouncer-config
        - mountPath: /kb-scripts
          name: scripts
      - command:
        - /bin/agamotto
        - --config=/opt/agamotto/agamotto-config.yaml
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: ENDPOINT
          value: 127.0.0.1:5432
        - name: DATA_SOURCE_PASS
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
              optional: false
        - name: DATA_SOURCE_USER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
              optional: false
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: infracreate-registry.cn-zhangjiakou.cr.aliyuncs.com/apecloud/agamotto:0.1.2-beta.1
        imagePullPolicy: IfNotPresent
        name: metrics
        ports:
        - containerPort: 9187
          name: http-metrics
          protocol: TCP
        resources:
          limits:
            cpu: "0"
            memory: "0"
        securityContext:
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /opt/conf
          name: postgresql-custom-metrics
        - mountPath: /opt/agamotto
          name: agamotto-configuration
      - command:
        - lorry
        - --port
        - "3501"
        - --grpcport
        - "50001"
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: KB_BUILTIN_HANDLER
          value: postgresql
        - name: KB_SERVICE_USER
          valueFrom:
            secretKeyRef:
              key: username
              name: postgres-cluster-conn-credential
        - name: KB_SERVICE_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: postgres-cluster-conn-credential
        - name: KB_SERVICE_PORT
          value: "5432"
        - name: KB_DATA_PATH
          value: /home/postgres/pgdata
        - name: KB_RSM_ACTION_SVC_LIST
          value: "null"
        - name: KB_RSM_ROLE_UPDATE_MECHANISM
          value: DirectAPIServerEventUpdate
        - name: KB_RSM_ROLE_PROBE_TIMEOUT
          value: "1"
        - name: KB_CLUSTER_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['app.kubernetes.io/instance']
        - name: KB_COMP_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['apps.kubeblocks.io/component-name']
        - name: KB_SERVICE_CHARACTER_TYPE
          value: postgresql
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/kubeblocks-tools:0.8.3
        imagePullPolicy: IfNotPresent
        name: lorry
        ports:
        - containerPort: 3501
          name: lorry-http-port
          protocol: TCP
        - containerPort: 50001
          name: lorry-grpc-port
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /v1.0/checkrole
            port: 3501
            scheme: HTTP
          periodSeconds: 1
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          limits:
            cpu: "0"
            memory: "0"
        startupProbe:
          failureThreshold: 3
          periodSeconds: 10
          successThreshold: 1
          tcpSocket:
            port: 3501
          timeoutSeconds: 1
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/pgdata
          name: data
      - args:
        - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$(TOOLS_PATH)
        - /bin/reloader
        - --log-level
        - info
        - --operator-update-enable
        - --tcp
        - "9901"
        - --config
        - /opt/config-manager/config-manager.yaml
        command:
        - env
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        - name: CONFIG_MANAGER_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: DB_TYPE
          value: postgresql
        - name: TOOLS_PATH
          value: /opt/kb-tools/reload/postgresql-configuration:/opt/config-manager
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        - configMapRef:
            name: postgres-cluster-postgresql-rsm-env
            optional: false
        image: docker.io/apecloud/kubeblocks-tools:0.8.3
        imagePullPolicy: IfNotPresent
        name: config-manager
        resources:
          limits:
            cpu: "0"
            memory: "0"
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /opt/kb-tools/reload/postgresql-configuration
          name: cm-script-postgresql-configuration
        - mountPath: /opt/config-manager
          name: config-manager-config
      dnsPolicy: ClusterFirst
      initContainers:
      - command:
        - /kb-scripts/init_container.sh
        env:
        - name: KB_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: KB_POD_UID
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.uid
        - name: KB_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: KB_SA_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.serviceAccountName
        - name: KB_NODENAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
        - name: KB_HOST_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_POD_IPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_HOSTIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.hostIP
        - name: KB_PODIP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: KB_PODIPS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIPs
        - name: KB_POD_FQDN
          value: $(KB_POD_NAME).postgres-cluster-postgresql-headless.$(KB_NAMESPACE).svc
        envFrom:
        - configMapRef:
            name: postgres-cluster-postgresql-env
            optional: false
        image: docker.io/apecloud/spilo:12.14.0-pgvector-v0.6.1
        imagePullPolicy: IfNotPresent
        name: pg-init-container
        resources:
          limits:
            cpu: "0"
            memory: "0"
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /home/postgres/pgdata
          name: data
        - mountPath: /home/postgres/conf
          name: postgresql-config
        - mountPath: /kb-scripts
          name: scripts
        - mountPath: /kb-podinfo
          name: pod-info
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 103
        fsGroupChangePolicy: OnRootMismatch
        runAsGroup: 103
        runAsUser: 0
      serviceAccount: kb-postgres-cluster
      serviceAccountName: kb-postgres-cluster
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoSchedule
        key: kb-data
        operator: Equal
        value: "true"
      volumes:
      - emptyDir:
          medium: Memory
          sizeLimit: 644245094400m
        name: dshm
      - downwardAPI:
          defaultMode: 420
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['kubeblocks.io/role']
            path: pod-role
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['rs.apps.kubeblocks.io/primary']
            path: primary-pod
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.annotations['apps.kubeblocks.io/component-replicas']
            path: component-replicas
        name: pod-info
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-agamotto-configuration
        name: agamotto-configuration
      - configMap:
          defaultMode: 292
          name: postgres-cluster-postgresql-pgbouncer-configuration
        name: pgbouncer-config
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-postgresql-configuration
        name: postgresql-config
      - configMap:
          defaultMode: 511
          name: postgres-cluster-postgresql-postgresql-custom-metrics
        name: postgresql-custom-metrics
      - configMap:
          defaultMode: 365
          name: postgres-cluster-postgresql-postgresql-scripts
        name: scripts
      - configMap:
          defaultMode: 493
          name: sidecar-patroni-reload-script-postgres-cluster
        name: cm-script-postgresql-configuration
      - configMap:
          defaultMode: 493
          name: sidecar-postgres-cluster-postgresql-config-manager-config
        name: config-manager-config
      - emptyDir: {}
        name: data
  updateStrategy:
    type: OnDelete
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      creationTimestamp: null
      labels:
        apps.kubeblocks.io/vct-name: data
        kubeblocks.io/volume-type: data
      name: data
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
      storageClassName: kb-default-sc
      volumeMode: Filesystem
    status:
      phase: Pending
status:
  availableReplicas: 3
  collisionCount: 0
  currentRevision: postgres-cluster-postgresql-589796456c
  observedGeneration: 8
  readyReplicas: 3
  replicas: 3
  updateRevision: postgres-cluster-postgresql-9867cf49f
  updatedReplicas: 3

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]
kbcli version
Kubernetes: v1.27.13-gke.1070000
KubeBlocks: 0.9.0-beta.33
kbcli: 0.9.0-beta.27

Additional context Add any other context about the problem here.

JashBook avatar Jun 13 '24 08:06 JashBook