要求
- Kubernetes 1.23+
- Helm 3.8.0+
- PV provisioner support in the underlying infrastructure
查看可用版本
https://artifacthub.io/packages/helm/bitnami/mysql


一一查看是否真有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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




