Bug #115516 Upgrade InnoDBcluster is not updating the cluster pods from cluster.yaml
Submitted: 4 Jul 13:46 Modified: 24 Jul 17:07
Reporter: sreehari M Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Operator Severity:S1 (Critical)
Version:9.0 OS:Any
Assigned to: CPU Architecture:Any

[4 Jul 13:46] sreehari M
Description:
Upgrade InnoDBcluster is not updating the cluster pods from cluster.yaml

Ex: Initially we have deployed the cluster with basic configuration.. and later we tried to update cluster with modified configuration .. but cluster pods are not updated with latest configuration.

Basic configuration:

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  instances: 3
  router:
    instances: 1
  tlsUseSelfSigned: true

How to repeat:

Modified Innodb cluster
configuration:

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  instances: 3
  router:
    instances: 1
  tlsUseSelfSigned: true
  datadirVolumeClaimTemplate:
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi
      selector:
        matchLabels:
          type: local
  podSpec:
    containers:
    - name: mysql
      resources:
        requests:
          memory: "1048Mi"
          cpu: "1000m"
        limits:
          memory: "1192Mi"
          cpu: "1200m"

kubectl apply -f sample-cluster-podspec-resources.yaml -n mycluster

kubectl describe pod mycluster-0  -n mycluster

Name:             mycluster-0
Namespace:        mycluster
Priority:         0
Service Account:  mycluster-sidecar-sa
Node:             minikube/192.168.49.2
Start Time:       Thu, 04 Jul 2024 15:42:25 +0530
Labels:           app.kubernetes.io/component=database
                  app.kubernetes.io/created-by=mysql-operator
                  app.kubernetes.io/instance=mysql-innodbcluster-mycluster-mysql-server
                  app.kubernetes.io/managed-by=mysql-operator
                  app.kubernetes.io/name=mysql-innodbcluster-mysql-server
                  apps.kubernetes.io/pod-index=0
                  component=mysqld
                  controller-revision-hash=mycluster-767954bbfd
                  mysql.oracle.com/cluster=mycluster
                  mysql.oracle.com/cluster-role=PRIMARY
                  mysql.oracle.com/instance-type=group-member
                  statefulset.kubernetes.io/pod-name=mycluster-0
                  tier=mysql
Annotations:      kopf.zalando.org/last-handled-configuration:
                    {"spec":{"volumes":[{"name":"datadir","persistentVolumeClaim":{"claimName":"datadir-mycluster-0"}},{"name":"mycnfdata","emptyDir":{}},{"na...
                  mysql.oracle.com/fqdn-template: {service}.{namespace}.svc.{domain}
                  mysql.oracle.com/membership-info:
                    {"memberId": "fd265094-39ed-11ef-a354-a61ef5709950", "lastTransitionTime": "2024-07-04T10:25:41Z", "lastProbeTime": "2024-07-04T10:25:41Z"...
Status:           Running
IP:               10.244.0.4
IPs:
  IP:           10.244.0.4
Controlled By:  StatefulSet/mycluster
Init Containers:
  fixdatadir:
    Container ID:  docker://5624e37fdb14d70cb75a350b00de31de5b7345933ebc29a7ae18e0a48f0cad9e
    Image:         container-registry.oracle.com/mysql/community-operator:9.0.0-2.2.0
    Image ID:      docker-pullable://container-registry.oracle.com/mysql/community-operator@sha256:1daaad9a004e1e94e4fed1c5b56074e295c507cc7ff51cf38e89e8edef0263f6
    Port:          <none>
    Host Port:     <none>
    Command:
      bash
      -c
      chown 27:27 /var/lib/mysql && chmod 0700 /var/lib/mysql
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 04 Jul 2024 15:42:27 +0530
      Finished:     Thu, 04 Jul 2024 15:42:27 +0530
    Ready:          True
    Restart Count:  0
    Environment:
      MYSQL_OPERATOR_K8S_CLUSTER_DOMAIN:        cluster.local
      MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS:  never
    Mounts:
      /var/lib/mysql from datadir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hz6tn (ro)
  initconf:
    Container ID:  docker://c92d8661be8fea881f052498f5d1947538b801f2a61cdc5dcac75527ec88c0e9
    Image:         container-registry.oracle.com/mysql/community-operator:9.0.0-2.2.0
    Image ID:      docker-pullable://container-registry.oracle.com/mysql/community-operator@sha256:1daaad9a004e1e94e4fed1c5b56074e295c507cc7ff51cf38e89e8edef0263f6
    Port:          <none>
    Host Port:     <none>
    Command:
      mysqlsh
      --log-level=@INFO
      --pym
      mysqloperator
      init
      --pod-name
      $(POD_NAME)
      --pod-namespace
      $(POD_NAMESPACE)
      --datadir
      /var/lib/mysql
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 04 Jul 2024 15:42:30 +0530
      Finished:     Thu, 04 Jul 2024 15:42:40 +0530
    Ready:          True
    Restart Count:  0
    Environment:
      POD_NAME:                                 mycluster-0 (v1:metadata.name)
      POD_NAMESPACE:                            mycluster (v1:metadata.namespace)
      MYSQL_OPERATOR_K8S_CLUSTER_DOMAIN:        cluster.local
      MYSQLSH_USER_CONFIG_HOME:                 /tmp
      MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS:  never
    Mounts:
      /mnt/initconf from initconfdir (ro)
      /mnt/mycnfdata from mycnfdata (rw)
      /tmp from initconf-tmp (rw)
      /var/lib/mysql from datadir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hz6tn (ro)
  initmysql:
    Container ID:  docker://a2fced6c6c444a9951ba7b93c7b1e138b9c6efbdc4ab8a39192961aa4d659893
    Image:         container-registry.oracle.com/mysql/community-server:9.0.0
    Image ID:      docker-pullable://container-registry.oracle.com/mysql/community-server@sha256:0d6dfa57e104bddf057d5a3ebee8279dbc737cfc32208bbff29c3977a7b73ddb
    Port:          <none>
    Host Port:     <none>
    Args:
      mysqld
      --user=mysql
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 04 Jul 2024 15:42:58 +0530
      Finished:     Thu, 04 Jul 2024 15:43:22 +0530
    Ready:          True
    Restart Count:  0
    Environment:
      MYSQL_INITIALIZE_ONLY:     1
      MYSQL_ROOT_PASSWORD:       <set to the key 'rootPassword' in secret 'mypwds'>  Optional: false
      MYSQLSH_USER_CONFIG_HOME:  /tmp
    Mounts:
      /docker-entrypoint-initdb.d from mycnfdata (rw,path="docker-entrypoint-initdb.d")
      /etc/my.cnf from mycnfdata (rw,path="my.cnf")
      /etc/my.cnf.d from mycnfdata (rw,path="my.cnf.d")
      /tmp from initmysql-tmp (rw)
      /var/lib/mysql from datadir (rw)
      /var/lib/mysql-files from varlibmysqlfiles (rw)
      /var/run/mysqld from rundir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hz6tn (ro)
Containers:
  sidecar:
    Container ID:  docker://083922497e4d1f05505e6563e2ac0c416c726195363438b8d9243701856fae2b
    Image:         container-registry.oracle.com/mysql/community-operator:9.0.0-2.2.0
    Image ID:      docker-pullable://container-registry.oracle.com/mysql/community-operator@sha256:1daaad9a004e1e94e4fed1c5b56074e295c507cc7ff51cf38e89e8edef0263f6
    Port:          <none>
    Host Port:     <none>
    Command:
      mysqlsh
      --pym
      mysqloperator
      sidecar
      --pod-name
      $(POD_NAME)
      --pod-namespace
      $(POD_NAMESPACE)
      --datadir
      /var/lib/mysql
    State:          Running
      Started:      Thu, 04 Jul 2024 15:43:24 +0530
    Ready:          True
    Restart Count:  0
    Environment:
      POD_NAME:                                 mycluster-0 (v1:metadata.name)
      POD_NAMESPACE:                            mycluster (v1:metadata.namespace)
      MYSQL_UNIX_PORT:                          /var/run/mysqld/mysql.sock
      MYSQLSH_USER_CONFIG_HOME:                 /mysqlsh
      MYSQL_OPERATOR_K8S_CLUSTER_DOMAIN:        cluster.local
      MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS:  never
    Mounts:
      /etc/my.cnf from mycnfdata (rw,path="my.cnf")
      /etc/my.cnf.d from mycnfdata (rw,path="my.cnf.d")
      /mysqlsh from shellhome (rw)
      /tmp from sidecar-tmp (rw)
      /var/run/mysqld from rundir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hz6tn (ro)
  mysql:
    Container ID:  docker://0eeb2af4b3ff5991fa16ff3deeb1238b2328ba1177c2d803c5a6c32bd8925b9a
    Image:         container-registry.oracle.com/mysql/community-server:9.0.0
    Image ID:      docker-pullable://container-registry.oracle.com/mysql/community-server@sha256:0d6dfa57e104bddf057d5a3ebee8279dbc737cfc32208bbff29c3977a7b73ddb
    Ports:         3306/TCP, 33060/TCP, 33061/TCP
    Host Ports:    0/TCP, 0/TCP, 0/TCP
    Args:
      mysqld
      --user=mysql
    State:          Running
      Started:      Thu, 04 Jul 2024 15:43:24 +0530
    Ready:          True
    Restart Count:  0
    Liveness:       exec [/livenessprobe.sh] delay=15s timeout=1s period=15s #success=1 #failure=10
    Readiness:      exec [/readinessprobe.sh] delay=10s timeout=1s period=5s #success=1 #failure=10000
    Startup:        exec [/livenessprobe.sh 8] delay=5s timeout=1s period=3s #success=1 #failure=10000
    Environment:
      MYSQL_UNIX_PORT:                          /var/run/mysqld/mysql.sock
      MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS:  never
    Mounts:
      /etc/my.cnf from mycnfdata (rw,path="my.cnf")
      /etc/my.cnf.d from mycnfdata (rw,path="my.cnf.d")
      /livenessprobe.sh from initconfdir (rw,path="livenessprobe.sh")
      /readinessprobe.sh from initconfdir (rw,path="readinessprobe.sh")
      /tmp from mysql-tmp (rw)
      /var/lib/mysql from datadir (rw)
      /var/lib/mysql-files from varlibmysqlfiles (rw)
      /var/run/mysqld from rundir (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hz6tn (ro)
Readiness Gates:
  Type                          Status
  mysql.oracle.com/configured   True 
  mysql.oracle.com/ready        True 
Conditions:
  Type                          Status
  mysql.oracle.com/ready        True 
  mysql.oracle.com/configured   True 
  PodReadyToStartContainers     True 
  Initialized                   True 
  Ready                         True 
  ContainersReady               True 
  PodScheduled                  True 
Volumes:
  datadir:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  datadir-mycluster-0
    ReadOnly:   false
  mycnfdata:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  rundir:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  varlibmysqlfiles:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  initconfdir:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      mycluster-initconf
    Optional:  false
  shellhome:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  initconf-tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  initmysql-tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  mysql-tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  sidecar-tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  kube-api-access-hz6tn:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>
[24 Jul 17:07] MySQL Verification Team
Thank you for the report