k8s集群部署mysql8主备

一、搜索mysql8版本

# helm search repo mysql

# helm pull bitnami/mysql --version:11.1.2

# tar -zxf mysql-11.1.2.tgz

# cd mysql

二、修改value.ysqml文件

动态存储类自己提前搭建。

# helm install mysql8 -n mysql-cluster ./ -f values.yaml
NAME: mysql8
LAST DEPLOYED: Thu Jul 11 21:47:23 2024
NAMESPACE: mysql-cluster
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 11.1.2
APP VERSION: 8.4.0

** Please be patient while the chart is being deployed **

Tip:

  Watch the deployment status using the command: kubectl get pods -w --namespace mysql-cluster

Services:

  echo Primary: mysql8-primary.mysql-cluster.svc.cluster.local:3306
  echo Secondary: mysql8-secondary.mysql-cluster.svc.cluster.local:3306

Execute the following to get the administrator credentials:

  echo Username: root
  MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace mysql-cluster mysql8 -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 mysql8-client --rm --tty -i --restart='Never' --image  dhub.kubesre.xyz/bitnami/mysql:8.4.0-debian-12-r3 --namespace mysql-cluster --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

  2. To connect to primary service (read/write):

      mysql -h mysql8-primary.mysql-cluster.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

  3. To connect to secondary service (read-only):

      mysql -h mysql8-secondary.mysql-cluster.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"






WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
  - primary.resources
  - secondary.resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.

Substituted images detected:
  - dhub.kubesre.xyz/bitnami/mysql:8.4.0-debian-12-r3
  - dhub.kubesre.xyz/bitnami/os-shell:12-debian-12-r22
  - dhub.kubesre.xyz/bitnami/mysqld-exporter:0.15.1-debian-12-r17

三、检查及测试

登录master:

登录备库:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s集群部署mysql高可用的方法可以通过以下步骤进行实现: 1. 首先,确保已经安装好StorageClass,可以参考文章中的指南进行安装。 2. 下载并准备mysql镜像: ``` docker pull mysql:5.7 docker save -o mysql-5.7.tar mysql:5.7 ``` 3. 创建ConfigMap,用于存储mysql的配置信息,包括master和slave的配置。可以使用以下yaml文件创建ConfigMap: ``` apiVersion: v1 kind: ConfigMap metadata: name: mysql-cluster namespace: mysql labels: app: mysql-cluster data: master.cnf: | # Apply this config only on the master. [mysqld] log-bin log_bin_trust_function_creators=1 lower_case_table_names=1 slave.cnf: | # Apply this config only on slaves. [mysqld] super-read-only log_bin_trust_function_creators=1 ``` 使用以下命令创建ConfigMap: ``` kubectl apply -f mysql-configmap.yaml ``` 4. 创建PersistentVolumeClaim(PVC),用于存储mysql的数据。可以使用以下yaml文件创建PVC: ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-data namespace: mysql labels: app: mysql-cluster spec: storageClassName: <your-storage-class> accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 使用以下命令创建PVC: ``` kubectl apply -f mysql-pvc.yaml ``` 5. 创建Service,用于暴露mysql服务。可以使用以下yaml文件创建Service: ``` apiVersion: v1 kind: Service metadata: name: mysql namespace: mysql labels: app: mysql-cluster spec: selector: app: mysql-cluster ports: - name: mysql port: 3306 targetPort: 3306 ``` 使用以下命令创建Service: ``` kubectl apply -f mysql-service.yaml ``` 6. 创建StatefulSet,用于管理mysql的Pod。可以使用以下yaml文件创建StatefulSet: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql namespace: mysql labels: app: mysql-cluster spec: serviceName: mysql replicas: 3 selector: matchLabels: app: mysql-cluster template: metadata: labels: app: mysql-cluster spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: root-password ports: - containerPort: 3306 volumeMounts: - name: mysql-data mountPath: /var/lib/mysql subPath: mysql-data - name: mysql-config mountPath: /etc/mysql/conf.d readinessProbe: exec: command: - "/bin/sh" - "-c" - "mysqladmin ping -h 127.0.0.1 -u root -p$MYSQL_ROOT_PASSWORD" livenessProbe: exec: command: - "/bin/sh" - "-c" - "mysqladmin ping -h 127.0.0.1 -u root -p$MYSQL_ROOT_PASSWORD" volumeClaimTemplates: - metadata: name: mysql-data labels: app: mysql-cluster spec: storageClassName: <your-storage-class> accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 使用以下命令创建StatefulSet: ``` kubectl apply -f mysql-statefulset.yaml ``` 通过以上步骤,可以在k8s集群部署mysql高可用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值