So I am following the guide (https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-installation-kubectl.html) to install MySql cluster on a Kubernetes Ubuntu Server 22.04 cluster.
I have run the following commands successfully to import the required yaml deployment files
kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml
kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml
Now when I then run the deployment command, the pod keeps restarting.
kubectl get deployment mysql-operator --namespace mysql-operator
Here is the output of the logs (I receive an error)
kubectl logs mysql-operator-755b988dd9-jn7f6 --namespace=mysql-operator
exec /usr/bin/mysqlsh: exec format error
And here is the describe:
kubectl describe pod mysql-operator-755b988dd9-jn7f6 --namespace=mysql-operator
Name: mysql-operator-755b988dd9-jn7f6
Namespace: mysql-operator
Priority: 0
Service Account: mysql-operator-sa
Node: mnetk8s-node-a1/10.30.0.11
Start Time: Wed, 07 Jun 2023 22:52:40 +0100
Labels: name=mysql-operator
pod-template-hash=755b988dd9
Annotations: <none>
Status: Running
IP: 10.244.3.6
IPs:
IP: 10.244.3.6
Controlled By: ReplicaSet/mysql-operator-755b988dd9
Containers:
mysql-operator:
Container ID: docker://785da7db660ae71ad09e1d6ecf7672f68fbbfbf1e03b64b4619bde188c7a250f
Image: container-registry.oracle.com/mysql/community-operator:8.0.33-2.0.10
Image ID: docker-pullable://container-registry.oracle.com/mysql/community-operator@sha256:9c411c679b416b7d4bce4e14f65b311105429d25c3183f864fdd9baec8d5647f
Port: <none>
Host Port: <none>
Args:
mysqlsh
--log-level=@INFO
--pym
mysqloperator
operator
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: Wed, 07 Jun 2023 23:34:29 +0100
Finished: Wed, 07 Jun 2023 23:34:29 +0100
Ready: False
Restart Count: 13
Readiness: exec [cat /tmp/mysql-operator-ready] delay=1s timeout=1s period=3s #success=1 #failure=3
Environment:
MYSQLSH_USER_CONFIG_HOME: /mysqlsh
MYSQLSH_CREDENTIAL_STORE_SAVE_PASSWORDS: never
Mounts:
/mysqlsh from mysqlsh-home (rw)
/tmp from tmpdir (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-jdn2d (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
mysqlsh-home:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
tmpdir:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
kube-api-access-jdn2d:
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:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 46m default-scheduler Successfully assigned mysql-operator/mysql-operator-755b988dd9-jn7f6 to mnetk8s-node-a1
Normal Pulled 45m (x5 over 46m) kubelet Container image "container-registry.oracle.com/mysql/community-operator:8.0.33-2.0.10" already present on machine
Normal Created 45m (x5 over 46m) kubelet Created container mysql-operator
Normal Started 45m (x5 over 46m) kubelet Started container mysql-operator
Warning BackOff 97s (x221 over 46m) kubelet Back-off restarting failed container mysql-operator in pod mysql-operator-755b988dd9-jn7f6_mysql-operator(9e7f8c17-4fdd-4f98-a074-d2112019b28e)
Any help or ideas would be amazing!
2
Answers
exec format error
usually means the image you are using are not for the architecture you are deploying on. That is, you are using an ARM image on a AMD64 node or vice versa.Since all of the MySQL images on oracle container registry are AMD64 images, my guess is that your cluster is running on an ARM arch, like an Ampere instance.
You’re going to need to run on an x64 arch instance, or find an image for ARM, or go to the source and rebuild the image for ARM.
You can check this out. An open-source tool for deploying and managing MySQL on Kubernetes. I think it can solve your problem.
https://github.com/apecloud/kubeblocks