因此,我按照指南(https://dev.mysql.com/doc/mysql-operator/en/mysql-operator-installation-kubectl.html)在 Kubernetes Ubuntu Server 22.04 叢集上安裝 MySql 叢集。
我已成功執行以下命令來導入所需的 yaml 部署檔案
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
現在,當我執行部署指令時,pod 會不斷重新啟動。
kubectl get deployment mysql-operator --namespace mysql-operator
這是日誌的輸出(我收到錯誤)
kubectl logs mysql-operator-755b988dd9-jn7f6 --namespace=mysql-operator exec /usr/bin/mysqlsh: exec format error
這是描述:
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)
任何幫助或想法都會很棒!
你可以看看這個。
一個名為 kubeblocks 的開源工具,用於在 Kubernetes 上部署和管理 MySQL。
我認為它可以解決您的問題。
exec format error
通常表示您正在使用的映像不適合您正在部署的架構。也就是說,您在 AMD64 節點上使用 ARM 映像,反之亦然。由於 Oracle 容器註冊表上的所有 MySQL 映像都是 AMD64 映像,因此我猜測您的叢集正在 ARM 架構上運行,例如 Ampere 實例。
您將需要在 x64 arch 實例上運行,或找到 ARM 的映像,或前往原始程式碼並重建 ARM 的映像。