kubeblocks icon indicating copy to clipboard operation
kubeblocks copied to clipboard

[BUG] pika cluster hscale in component pika-group ops is always running

Open JashBook opened this issue 8 months ago • 0 comments

Describe the bug

kbcli version
Kubernetes: v1.27.9
KubeBlocks: 0.9.0-beta.27
kbcli: 0.9.0-beta.23

To Reproduce Steps to reproduce the behavior:

  1. create cluster
apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
  name: release-name-pika-cluster
  namespace: default
  labels: 
    helm.sh/chart: pika-cluster-0.7.1-beta.1
    app.kubernetes.io/name: pika-cluster
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "3.5.3"
    app.kubernetes.io/managed-by: Helm
spec:
  clusterDefinitionRef: pika  # ref clusterDefinition.name
  clusterVersionRef: pika-3.5.3 # ref clusterVersion.name
  terminationPolicy: Delete
  affinity:
    topologyKeys: 
      - kubernetes.io/hostname
  ## define pika group with shardingSpecs API which is supported in KubeBlocks v0.8.2
  componentSpecs:
    - name: pika-group-1 # user-defined
      componentDefRef: pika-group # ref clusterDefinition.componentDefs[x].name
      monitor: false
      enabledLogs:     null
      replicas: 2
      serviceAccountName: kb-release-name-pika-cluster
      switchPolicy:
        type: Noop
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
      volumeClaimTemplates:
        - name: data # ref clusterdefinition components.containers.volumeMounts.name
          spec:
            storageClassName: 
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 10Gi
    - name: pika-group-2 # user-defined
      componentDefRef: pika-group # ref clusterDefinition.componentDefs[x].name
      monitor: false
      enabledLogs:     null
      replicas: 2
      serviceAccountName: kb-release-name-pika-cluster
      switchPolicy:
        type: Noop
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
      volumeClaimTemplates:
        - name: data # ref clusterdefinition components.containers.volumeMounts.name
          spec:
            storageClassName: 
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 10Gi
    - name: etcd # user-defined
      componentDefRef: etcd # ref clusterDefinition.componentDefs[x].name
      monitor: false
      replicas: 3
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
      volumeClaimTemplates:
        - name: data # ref clusterdefinition components.containers.volumeMounts.name
          spec:
            storageClassName: 
            accessModes:
              - ReadWriteOnce
            resources:
              requests:
                storage: 1Gi
    - name: pika-exporter
      componentDefRef: pika-exporter # ref clusterDefinition.componentDefs[x].name
      monitor: false
      replicas: 1
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
    - name: codis-proxy
      componentDefRef: codis-proxy # ref clusterDefinition.componentDefs[x].name
      replicas: 2
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
    - name: codis-fe
      componentDefRef: codis-fe # ref clusterDefinition.componentDefs[x].name
      replicas: 1
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
    - name: codis-dashboard
      componentDefRef: codis-dashboard # ref clusterDefinition.componentDefs[x].name
      replicas: 1
      resources:
        limits:
          cpu: "500m"
          memory: "3Gi"
        requests:
          cpu: "500m"
          memory: "1Gi"
  1. hscale out pika-group
kbcli cluster hscale pikacluster-pika-cluster --components pika-group-1 --replicas 3 --auto-approve 
  1. hscale in pika-group
kbcli cluster hscale pikacluster-pika-cluster --components pika-group-1 --replicas 2 --auto-approve 
➜  ~ kubectl get cluster pikacluster-pika-cluster 
NAME                       CLUSTER-DEFINITION   VERSION      TERMINATION-POLICY   STATUS    AGE
pikacluster-pika-cluster   pika                 pika-3.5.3   Delete               Running   17m
➜  ~ 
➜  ~ kubectl get pod -l app.kubernetes.io/instance=pikacluster-pika-cluster
NAME                                         READY   STATUS    RESTARTS   AGE
pikacluster-pika-cluster-codis-dashboard-0   1/1     Running   0          18m
pikacluster-pika-cluster-codis-fe-0          1/1     Running   0          18m
pikacluster-pika-cluster-codis-proxy-0       1/1     Running   0          18m
pikacluster-pika-cluster-codis-proxy-1       1/1     Running   0          15m
pikacluster-pika-cluster-etcd-0              1/1     Running   0          18m
pikacluster-pika-cluster-etcd-1              1/1     Running   0          16m
pikacluster-pika-cluster-etcd-2              1/1     Running   0          16m
pikacluster-pika-cluster-pika-exporter-0     1/1     Running   0          18m
pikacluster-pika-cluster-pika-group-1-0      3/3     Running   0          18m
pikacluster-pika-cluster-pika-group-1-1      3/3     Running   0          16m
pikacluster-pika-cluster-pika-group-1-2      3/3     Running   0          14m
pikacluster-pika-cluster-pika-group-2-0      3/3     Running   0          18m
pikacluster-pika-cluster-pika-group-2-1      3/3     Running   0          16m
➜  ~ 

  1. See error
kubectl get ops
NAME                                               TYPE                CLUSTER                    STATUS    PROGRESS   AGE
pikacluster-pika-cluster-horizontalscaling-4wnkm   HorizontalScaling   pikacluster-pika-cluster   Succeed   1/1        10m
pikacluster-pika-cluster-horizontalscaling-xmlfw   HorizontalScaling   pikacluster-pika-cluster   Running   0/1        6m22s

describe ops

kubectl describe ops pikacluster-pika-cluster-horizontalscaling-xmlfw 
Name:         pikacluster-pika-cluster-horizontalscaling-xmlfw
Namespace:    default
Labels:       app.kubernetes.io/instance=pikacluster-pika-cluster
              app.kubernetes.io/managed-by=kubeblocks
              ops.kubeblocks.io/ops-type=HorizontalScaling
Annotations:  <none>
API Version:  apps.kubeblocks.io/v1alpha1
Kind:         OpsRequest
Metadata:
  Creation Timestamp:  2024-05-28T04:08:47Z
  Finalizers:
    opsrequest.kubeblocks.io/finalizer
  Generate Name:  pikacluster-pika-cluster-horizontalscaling-
  Generation:     2
  Managed Fields:
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:generateName:
        f:labels:
          .:
          f:app.kubernetes.io/instance:
          f:app.kubernetes.io/managed-by:
      f:spec:
        .:
        f:clusterName:
        f:horizontalScaling:
          .:
          k:{"componentName":"pika-group-1"}:
            .:
            f:componentName:
            f:replicas:
        f:preConditionDeadlineSeconds:
        f:type:
    Manager:      kbcli
    Operation:    Update
    Time:         2024-05-28T04:08:47Z
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:finalizers:
          .:
          v:"opsrequest.kubeblocks.io/finalizer":
        f:labels:
          f:ops.kubeblocks.io/ops-type:
        f:ownerReferences:
          .:
          k:{"uid":"95e283a4-8754-432f-b7de-268cf5144ee5"}:
    Manager:      manager
    Operation:    Update
    Time:         2024-05-28T04:08:47Z
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:clusterGeneration:
        f:components:
          .:
          f:pika-group-1:
            .:
            f:phase:
            f:progressDetails:
        f:conditions:
          .:
          k:{"type":"HorizontalScaling"}:
            .:
            f:lastTransitionTime:
            f:message:
            f:reason:
            f:status:
            f:type:
          k:{"type":"Validated"}:
            .:
            f:lastTransitionTime:
            f:message:
            f:reason:
            f:status:
            f:type:
          k:{"type":"WaitForProgressing"}:
            .:
            f:lastTransitionTime:
            f:message:
            f:reason:
            f:status:
            f:type:
        f:lastConfiguration:
          .:
          f:components:
            .:
            f:pika-group-1:
              .:
              f:replicas:
        f:phase:
        f:progress:
        f:startTimestamp:
    Manager:      manager
    Operation:    Update
    Subresource:  status
    Time:         2024-05-28T04:08:47Z
  Owner References:
    API Version:     apps.kubeblocks.io/v1alpha1
    Kind:            Cluster
    Name:            pikacluster-pika-cluster
    UID:             95e283a4-8754-432f-b7de-268cf5144ee5
  Resource Version:  6609476
  UID:               5678c587-da14-434e-a3de-64b624a24b43
Spec:
  Cluster Name:  pikacluster-pika-cluster
  Horizontal Scaling:
    Component Name:                pika-group-1
    Replicas:                      2
  Pre Condition Deadline Seconds:  0
  Type:                            HorizontalScaling
Status:
  Cluster Generation:  4
  Components:
    pika-group-1:
      Phase:  Running
      Progress Details:
        Group:       pika-group-1
        Message:     wait to delete pod: Pod/pikacluster-pika-cluster-pika-group-1-2 in Component: pika-group-1
        Object Key:  Pod/pikacluster-pika-cluster-pika-group-1-2
        Status:      Pending
  Conditions:
    Last Transition Time:  2024-05-28T04:08:47Z
    Message:               wait for the controller to process the OpsRequest: pikacluster-pika-cluster-horizontalscaling-xmlfw in Cluster: pikacluster-pika-cluster
    Reason:                WaitForProgressing
    Status:                True
    Type:                  WaitForProgressing
    Last Transition Time:  2024-05-28T04:08:47Z
    Message:               OpsRequest: pikacluster-pika-cluster-horizontalscaling-xmlfw is validated
    Reason:                ValidateOpsRequestPassed
    Status:                True
    Type:                  Validated
    Last Transition Time:  2024-05-28T04:08:47Z
    Message:               Start to horizontal scale replicas in Cluster: pikacluster-pika-cluster
    Reason:                HorizontalScalingStarted
    Status:                True
    Type:                  HorizontalScaling
  Last Configuration:
    Components:
      pika-group-1:
        Replicas:   3
  Phase:            Running
  Progress:         0/1
  Start Timestamp:  2024-05-28T04:08:47Z
Events:
  Type    Reason                    Age   From                    Message
  ----    ------                    ----  ----                    -------
  Normal  WaitForProgressing        9m6s  ops-request-controller  wait for the controller to process the OpsRequest: pikacluster-pika-cluster-horizontalscaling-xmlfw in Cluster: pikacluster-pika-cluster
  Normal  ValidateOpsRequestPassed  9m6s  ops-request-controller  OpsRequest: pikacluster-pika-cluster-horizontalscaling-xmlfw is validated
  Normal  HorizontalScalingStarted  9m6s  ops-request-controller  Start to horizontal scale replicas in Cluster: pikacluster-pika-cluster
➜  ~ 

describe cluster

kubectl describe cluster pikacluster-pika-cluster
Name:         pikacluster-pika-cluster
Namespace:    default
Labels:       app.kubernetes.io/instance=pikacluster
              app.kubernetes.io/managed-by=Helm
              app.kubernetes.io/name=pika-cluster
              app.kubernetes.io/version=3.5.3
              clusterdefinition.kubeblocks.io/name=pika
              clusterversion.kubeblocks.io/name=pika-3.5.3
              helm.sh/chart=pika-cluster-0.7.1-beta.1
Annotations:  kubeblocks.io/ops-request: [{"name":"pikacluster-pika-cluster-horizontalscaling-xmlfw","type":"HorizontalScaling"}]
              meta.helm.sh/release-name: pikacluster
              meta.helm.sh/release-namespace: default
API Version:  apps.kubeblocks.io/v1alpha1
Kind:         Cluster
Metadata:
  Creation Timestamp:  2024-05-28T04:00:45Z
  Finalizers:
    cluster.kubeblocks.io/finalizer
  Generation:  4
  Managed Fields:
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:meta.helm.sh/release-name:
          f:meta.helm.sh/release-namespace:
        f:labels:
          .:
          f:app.kubernetes.io/instance:
          f:app.kubernetes.io/managed-by:
          f:app.kubernetes.io/name:
          f:app.kubernetes.io/version:
          f:helm.sh/chart:
      f:spec:
        .:
        f:affinity:
          .:
          f:podAntiAffinity:
          f:tenancy:
          f:topologyKeys:
            .:
            v:"kubernetes.io/hostname":
        f:clusterDefinitionRef:
        f:clusterVersionRef:
        f:terminationPolicy:
    Manager:      helm
    Operation:    Update
    Time:         2024-05-28T04:00:45Z
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:kubeblocks.io/ops-request:
        f:finalizers:
          .:
          v:"cluster.kubeblocks.io/finalizer":
        f:labels:
          f:clusterdefinition.kubeblocks.io/name:
          f:clusterversion.kubeblocks.io/name:
      f:spec:
        f:componentSpecs:
        f:resources:
          .:
          f:cpu:
          f:memory:
        f:storage:
          .:
          f:size:
    Manager:      manager
    Operation:    Update
    Time:         2024-05-28T04:08:47Z
    API Version:  apps.kubeblocks.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:clusterDefGeneration:
        f:components:
          .:
          f:codis-dashboard:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:codis-fe:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:codis-proxy:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:etcd:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:pika-exporter:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:pika-group-1:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
          f:pika-group-2:
            .:
            f:phase:
            f:podsReady:
            f:podsReadyTime:
        f:conditions:
        f:observedGeneration:
        f:phase:
    Manager:         manager
    Operation:       Update
    Subresource:     status
    Time:            2024-05-28T04:08:52Z
  Resource Version:  6609547
  UID:               95e283a4-8754-432f-b7de-268cf5144ee5
Spec:
  Affinity:
    Pod Anti Affinity:  Preferred
    Tenancy:            SharedNode
    Topology Keys:
      kubernetes.io/hostname
  Cluster Definition Ref:  pika
  Cluster Version Ref:     pika-3.5.3
  Component Specs:
    Component Def Ref:  pika-group
    Monitor:            false
    Name:               pika-group-1
    Replicas:           2
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:               500m
        Memory:            1Gi
    Service Account Name:  kb-pikacluster-pika-cluster
    Switch Policy:
      Type:  Noop
    Volume Claim Templates:
      Name:  data
      Spec:
        Access Modes:
          ReadWriteOnce
        Resources:
          Requests:
            Storage:    10Gi
    Component Def Ref:  pika-group
    Monitor:            false
    Name:               pika-group-2
    Replicas:           2
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:               500m
        Memory:            1Gi
    Service Account Name:  kb-pikacluster-pika-cluster
    Switch Policy:
      Type:  Noop
    Volume Claim Templates:
      Name:  data
      Spec:
        Access Modes:
          ReadWriteOnce
        Resources:
          Requests:
            Storage:    10Gi
    Component Def Ref:  etcd
    Monitor:            false
    Name:               etcd
    Replicas:           3
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:     500m
        Memory:  1Gi
    Volume Claim Templates:
      Name:  data
      Spec:
        Access Modes:
          ReadWriteOnce
        Resources:
          Requests:
            Storage:    1Gi
    Component Def Ref:  pika-exporter
    Monitor:            false
    Name:               pika-exporter
    Replicas:           1
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:            500m
        Memory:         1Gi
    Component Def Ref:  codis-proxy
    Name:               codis-proxy
    Replicas:           2
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:            500m
        Memory:         1Gi
    Component Def Ref:  codis-fe
    Name:               codis-fe
    Replicas:           1
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:            500m
        Memory:         1Gi
    Component Def Ref:  codis-dashboard
    Name:               codis-dashboard
    Replicas:           1
    Resources:
      Limits:
        Cpu:     500m
        Memory:  3Gi
      Requests:
        Cpu:     500m
        Memory:  1Gi
  Resources:
    Cpu:     0
    Memory:  0
  Storage:
    Size:              0
  Termination Policy:  Delete
Status:
  Cluster Def Generation:  3
  Components:
    Codis - Dashboard:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:49Z
    Codis - Fe:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:49Z
    Codis - Proxy:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:49Z
    Etcd:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:47Z
    Pika - Exporter:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:52Z
    pika-group-1:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:05:06Z
    pika-group-2:
      Phase:            Running
      Pods Ready:       true
      Pods Ready Time:  2024-05-28T04:08:51Z
  Conditions:
    Last Transition Time:  2024-05-28T04:00:45Z
    Message:               The operator has started the provisioning of Cluster: pikacluster-pika-cluster
    Observed Generation:   4
    Reason:                PreCheckSucceed
    Status:                True
    Type:                  ProvisioningStarted
    Last Transition Time:  2024-05-28T04:04:34Z
    Message:               Successfully applied for resources
    Observed Generation:   4
    Reason:                ApplyResourcesSucceed
    Status:                True
    Type:                  ApplyResources
    Last Transition Time:  2024-05-28T04:08:52Z
    Message:               all pods of components are ready, waiting for the probe detection successful
    Reason:                AllReplicasReady
    Status:                True
    Type:                  ReplicasReady
    Last Transition Time:  2024-05-28T04:08:52Z
    Message:               Cluster: pikacluster-pika-cluster is ready, current phase is Running
    Reason:                ClusterReady
    Status:                True
    Type:                  Ready
  Observed Generation:     4
  Phase:                   Running
Events:
  Type     Reason                    Age                From                  Message
  ----     ------                    ----               ----                  -------
  Normal   ApplyResourcesSucceed     18m                cluster-controller    Successfully applied for resources
  Normal   ComponentPhaseTransition  18m (x7 over 18m)  cluster-controller    component is Creating
  Warning  ReplicasNotReady          16m                cluster-controller    pods are not ready in Components: [codis-dashboard codis-fe codis-proxy pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ComponentsNotReady        16m                cluster-controller    pods are unavailable in Components: [codis-dashboard codis-fe codis-proxy pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ReplicasNotReady          16m                cluster-controller    pods are not ready in Components: [codis-dashboard codis-proxy pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ComponentsNotReady        16m                cluster-controller    pods are unavailable in Components: [codis-dashboard codis-proxy pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ComponentsNotReady        16m                cluster-controller    pods are unavailable in Components: [codis-dashboard pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ReplicasNotReady          16m                cluster-controller    pods are not ready in Components: [codis-dashboard pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ReplicasNotReady          16m                cluster-controller    pods are not ready in Components: [pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ComponentsNotReady        16m                cluster-controller    pods are unavailable in Components: [pika-exporter pika-group-1 pika-group-2], refer to related component message in Cluster.status.components
  Warning  ComponentsNotReady        16m                cluster-controller    pods are unavailable in Components: [pika-exporter pika-group-1], refer to related component message in Cluster.status.components
  Normal   ComponentPhaseTransition  16m (x6 over 16m)  cluster-controller    component is Running
  Warning  ReplicasNotReady          16m                cluster-controller    pods are not ready in Components: [pika-exporter pika-group-1], refer to related component message in Cluster.status.components
  Normal   HorizontalScale           15m (x2 over 15m)  component-controller  start horizontal scale component pika-group-1 of cluster pikacluster-pika-cluster from 2 to 3
  Normal   PreCheckSucceed           10m (x4 over 18m)  cluster-controller    The operator has started the provisioning of Cluster: pikacluster-pika-cluster
➜  ~ 

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]

Additional context Add any other context about the problem here.

JashBook avatar May 28 '24 04:05 JashBook