| Bug #108205 | MySQL Operator: MySQL Router Pod Does not executing | ||
|---|---|---|---|
| Submitted: | 20 Aug 2022 16:38 | Modified: | 22 Aug 2022 16:48 |
| Reporter: | test item | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Operator | Severity: | S1 (Critical) |
| Version: | 8.0.30-2.05 | OS: | Any |
| Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
| Tags: | MySQL Operator | ||
[20 Aug 2022 16:38]
test item
[22 Aug 2022 16:24]
MySQL Verification Team
Hi, I cannot reproduce this. Following the manual works ok with me. For help on how to setup please contact MySQL Support team or you can try for free to get help on https://forums.mysql.com/ but bugs system is no place for support. Thank you for your interest in MySQL
[22 Aug 2022 16:48]
test item
I follow all the steps on the manual but it seems that MySQL Router is not showing up. I set the number of instances for MySQL Router into 1 but when I check the number of pods deployed by the deployment it seems that the result is 0/0.
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
name: mycluster
spec:
secretName: mypwds
tlsUseSelfSigned: true
instances: 3
router:
instances: 1
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
default deployment.apps/mycluster-router 0/0 1 0 2d
NAMESPACE NAME DESIRED CURRENT READY AGE
default replicaset.apps/mycluster-router-dsb5ddfjy9 0 0 0 11h
NAMESPACE NAME READY AGE
default statefulset.apps/mycluster 0/3 2d
[20 Oct 2022 1:26]
Nate Kush
Hello there, any updates so far? I came across the same issue recently, ie. mysql router not running so that mysql cluster cannot be accessed.
[29 Dec 2022 2:23]
jigao zuo
i found the 8.0.31 bug reason, you should look at the operator log.
i my cluster,it shows:
[2022-12-27 13:48:33,520] kopf.objects [INFO ] Server.TLS.useSelfSigned: True
1. Initial Configuration ConfigMap and Container Probes
2. Cluster Accounts
3. Router Accounts
4. Cluster Service
5. Cluster ServiceAccount
6. Cluster RoleBinding
7. Cluster StatefulSet
8. Cluster PodDisruptionBudget
Preparing...
Creating...
[2022-12-27 13:48:33,546] kopf.objects [ERROR ] Handler 'on_innodbcluster_create' failed with an exception. Will retry.
Traceback (most recent call last):
File "/usr/lib/mysqlsh/python-packages/kopf/_core/actions/execution.py", line 279, in execute_handler_once
result = await invoke_handler(
File "/usr/lib/mysqlsh/python-packages/kopf/_core/actions/execution.py", line 374, in invoke_handler
result = await invocation.invoke(
File "/usr/lib/mysqlsh/python-packages/kopf/_core/actions/invocation.py", line 139, in invoke
await asyncio.shield(future) # slightly expensive: creates tasks
File "/usr/lib64/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/lib/mysqlsh/python-packages/mysqloperator/controller/innodbcluster/operator_cluster.py", line 163, in on_innodbcluster_create
api_policy.create_namespaced_pod_disruption_budget(namespace=namespace, body=disruption_budget)
File "/usr/lib/mysqlsh/python-packages/kubernetes/client/api/policy_v1_api.py", line 67, in create_namespaced_pod_disruption_budget
return self.create_namespaced_pod_disruption_budget_with_http_info(namespace, body, **kwargs) # noqa: E501
File "/usr/lib/mysqlsh/python-packages/kubernetes/client/api/policy_v1_api.py", line 166, in create_namespaced_pod_disruption_budget_with_http_info
return self.api_client.call_api(
File "/usr/lib/mysqlsh/python-packages/kubernetes/client/api_client.py", line 348, in call_api
return self.__call_api(resource_path, method,
File "/usr/lib/mysqlsh/python-packages/kubernetes/client/api_client.py", line 180, in __call_api
so we can see the "PodDisruptionBudget" createing is failed, so we can see the operator source code:
def prepare_cluster_pod_disruption_budget(spec: InnoDBClusterSpec) -> dict:
tmpl = f"""
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {spec.name}-pdb
spec:
maxUnavailable: 1
selector:
matchLabels:
component: mysqld
tier: mysql
mysql.oracle.com/cluster: {spec.name}
"""
the apiVersion is "policy/v1", my k8s cluster version is v1.18,it does not support "policy/v1", then i found in operator 8.0.30, the source code is :
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: {spec.name}-pdb
spec:
maxUnavailable: 1
selector:
matchLabels:
component: mysqld
tier: mysql
mysql.oracle.com/cluster: {spec.name}
"""
apiVersion is "policy/v1beta1", this is supported by k8s v1.18, then i tried operator version 8.0.30, the PodDisruptionBudget is created successfull, then the router also successfully created.
so if you use k8s version < v1.21, you should use operator version 8.0.30, and if you want to check the deploy errors, you should see the operator log:
kubectl logs pod/mysql-operator-c78fddd58-sgsq9 -n mysql-operator
