该笔记将记录:在 Kubernetes 中,通过 HELM 部署 MySQL 的方法,以及常见问题处理;
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update bitnami
helm search repo bitnami/mysql --versions | grep -F 8.0
helm pull bitnami/mysql
helm show values ./mysql-9.2.0.tgz > mysql-9.2.0.helm-values.yaml
vim mysql-9.2.0.helm-values.yaml
... 修改存储类:global.storageClass
... 修改运行模式:默认 standalone 模式,无需修改;
... 修改帐号密码:auth.rootPassword
helm upgrade --install --namespace infr-database --create-namespace \
mysql ./mysql-9.2.0.tgz -f mysql-9.2.0.helm-values.yaml
// ---------------------------------------------------------------------------- // 当部署成功后,输出如下信息:
...
Services:
echo Primary: mysql.infra-database.svc.cluster.local:3306
Execute the following to get the administrator credentials:
echo Username: root
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace infra-database mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)
To connect to your database:
1. Run a pod that you can use as a client:
kubectl run mysql-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mysql:8.0.29-debian-11-r9 --namespace infra-database --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash
2. To connect to primary service (read/write):
mysql -h mysql.infra-database.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
鉴于我们是环境迁移,所以未使用 storageClass 而是通过 primary.persistence.existingClaim 使用已有存储;
如果通过 storageClass 部署,helm uninstall 并不会删除 PVC,所以下次重新安装时仍旧使用之前的 PVC 数据;
数据目录:/bitnami/mysql/data
应用
连接数据库
kubectl run mysql-client --rm --tty -i --restart='Never' \
--image docker.io/bitnami/mysql:8.0.29-debian-11-r9 \
--env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
--command -- bash
参考
Run a Single-Instance Stateful Application | Kubernetes
Helm Charts to deploy MySQL in Kubernetes
charts/bitnami/mysql at master · bitnami/charts