暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql for k8s

原创 zhou 2025-05-13
248

要求

  • Kubernetes 1.23+
  • Helm 3.8.0+
  • PV provisioner support in the underlying infrastructure

查看可用版本

https://artifacthub.io/packages/helm/bitnami/mysql


20250512173310image.png
一一查看是否真有image存在

helm show values bitnami/mysql --version 12.3.5 | grep -A 3 'image:'

……

helm show values bitnami/mysql --version 10.3.0 | grep -A 3 'image:'
image:
  registry: docker.io
  repository: bitnami/mysql
  tag: 8.0.37-debian-12-r2
--
  image:
    registry: docker.io
    repository: bitnami/os-shell
    tag: 12-debian-12-r21
--
  image:
    registry: docker.io
    repository: bitnami/mysqld-exporter
    tag: 0.15.1-debian-12-r16

查找国内镜像地址

https://docker.aityp.com/image/docker.io/bitnami
docker.io/bitnami/os-shell:12-debian-12-r21
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/os-shell:12-debian-12-r21 
docker.io/bitnami/mysql:8.0.37-debian-12-r2
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/mysql:8.0.37-debian-12-r2   
docker.io/bitnami/mysqld-exporter:0.15.0-debian-11-r70
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/mysqld-exporter:0.15.0-debian-11-r70
拉取helm Chart
mkdir /root/mysql && cd /root/mysql
helm pull bitnami/mysql --version 10.3.0
tar -xvf  mysql-10.3.0.tgz
配置部署
准备NFS
yum install -y nfs-utils rpcbind
mkdir -p /data/nfs
chmod 777 /data/nfs
chown nobody:nobody /data/nfs
cat > /etc/exports <<EOF
/data/nfs *(rw,sync,no_subtree_check,no_root_squash) 
EOF
exportfs -r

systemctl enable nfs-server
systemctl start  nfs-server
systemctl retart nfs-server
helm repo add nfs-subdir-external-provisioner \
https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
kubectl create ns nfs-provisioner
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set image.repository=registry.cn-beijing.aliyuncs.com/kubesphereio/nfs-subdir-external-provisioner \
--set nfs.server=10.1.8.16 \
--set nfs.path=/data/nfs \
--set storageClass.name=nfs-client \
--set nfs.volumeName=mycluster-nfs-provisioner \
-n nfs-provisioner
kubectl get sc

修改values.yaml

cd /root/mysql/mysql
cp values.yaml values.yaml.bak
cd /root/mysql/mysql
sed -i 's#storageClass: ""#storageClass: "nfs-client"#' values.yaml
sed -i 's#registry: docker.io#registry: swr.cn-north-4.myhuaweicloud.com/ddn-k8s#' values.yaml
sed -i 's#0.15.1-debian-12-r16#0.15.0-debian-11-r70#' values.yaml
sed -i 's#architecture: standalone#architecture: replication#' values.yaml
sed -i 's#replicaCount: 1#replicaCount: 2#' values.yaml

注:默认安装时单机模式,可选单机/主从

architecture = "standalone"
architecture = "replication"

验证参数修改

cd /root/mysql/
helm template mysql-bitinami ./mysql -f ./mysql/values.yaml \
--debug | grep "image:"
helm部署bitnami mysql
cd /root/mysql

helm install  mysql-bitinami ./mysql \
  --set image.registry=swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io \
  --set image.repository=bitnami/mysql \
  --set image.tag=8.0.37-debian-12-r2 \
  --set auth.rootPassword='abc@123456' \
  --set global.storageClass=nfs-client \
  --set architecture=replication \
  --set auth.database=tpcc \
  --set auth.username=user01 \
  --set auth.password='abc@123456' \
  --set secondary.replicaCount=2 \
  --set auth.replicationPassword='repl@123' \
  -f ./mysql/values.yaml

cd /root/mysql

helm install  mysql-bitinami ./mysql \
  --set image.registry=swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io \
  --set image.repository=bitnami/mysql \
  --set image.tag=8.0.37-debian-12-r2 \
  --set auth.rootPassword='abc@123456' \
  --set auth.database=tpcc \
  --set auth.username=user01 \
  --set auth.password='abc@123456' \
  --set auth.replicationPassword='repl@123' \
  -f ./mysql/values.yaml 

注:helm install 如果不显示set image.registry 则会出现Init:ImagePullBackOff

查看自定义参数值

helm get values  mysql -n test

查看部署的mysql

kubectl get pod -n test

查看服务

kubectl get all
NAME                             READY   STATUS    RESTARTS      AGE
pod/mysql-bitinami-primary-0     1/1     Running   0             12m
pod/mysql-bitinami-secondary-0   1/1     Running   1 (10m ago)   12m
pod/mysql-bitinami-secondary-1   1/1     Running   0             11m

NAME                                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/mysql-bitinami-primary              ClusterIP   10.100.39.29    <none>        3306/TCP   12m
service/mysql-bitinami-primary-headless     ClusterIP   None            <none>        3306/TCP   12m
service/mysql-bitinami-secondary            ClusterIP   10.97.179.189   <none>        3306/TCP   12m
service/mysql-bitinami-secondary-headless   ClusterIP   None            <none>        3306/TCP   12m

NAME                                        READY   AGE
statefulset.apps/mysql-bitinami-primary     1/1     12m
statefulset.apps/mysql-bitinami-secondary   2/2     12m
数据库连接

root密码

MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace test \
mysql-bitinami -o jsonpath="{.data.mysql-root-password}" | base64 -d)

一次性容器连接

kubectl run mysql-bitinami-client --rm --tty -i \
  --restart='Never' --image  docker.io/bitnami/mysql:8.0.37-debian-12-r2 \
  --namespace test --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
  --command -- bash
 mysql -h 10.105.109.77   -uroot -p'abc@123456'
mysql -h mysql-bitinami-primary.test.svc.cluster.local   -uroot -p"$MYSQL_ROOT_PASSWORD"

外部连接

安装客户端

yum install -y mysql
mysql -h 10.97.66.82 -uroot -p"abc@123456"

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.37    |
+-----------+
1 row in set (0.00 sec)

销毁

helm delete  mysql-bitinami ./mysql
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论