自学内容网 自学内容网

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

 

helm pull bitnami/mysql

 解压后编辑values.yaml文件,修改如下(storageclass已设置默认类)

 117 ## @param architecture MySQL architecture (`standalone` or `replication`)
 118 ##
 119 architecture: replication
 120 ## MySQL Authentication parameters
 121 ##
 122 auth:
 123   ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided
 124   ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#setting-the-root-password-on-first-run
 125   ##
 126   rootPassword: "abc123456"
 127   ## @param auth.createDatabase Whether to create the .Values.auth.database or not
 128   ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-on-first-run
 129   ##
 130   createDatabase: true
 131   ## @param auth.database Name for a custom database to create
 132   ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-on-first-run
 133   ##
 134   database: "my_database"
 135   ## @param auth.username Name for a custom user to create
 136   ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#creating-a-database-user-on-first-run
 137   ##
 138   username: ""
 139   ## @param auth.password Password for the new user. Ignored if existing secret is provided
 140   ##
 141   password: ""
 142   ## @param auth.replicationUser MySQL replication user
 143   ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mysql#setting-up-a-replication-cluster
 144   ##
 145   replicationUser: replicator
 146   ## @param auth.replicationPassword MySQL replication user password. Ignored if existing secret is provided
 147   ##
 148   replicationPassword: "abc123456"

安装

helm install mysql ./mysql -n mysql --create-namespace

 

二、添加ingress控制器tcp配置

[root@k8s-master01 mysql]# kubectl get daemonset,pods -n ingress-nginx
NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                         AGE
daemonset.apps/ingress-nginx-controller   1         1         1       1            1           ingress=true,kubernetes.io/os=linux   20h

NAME                                 READY   STATUS    RESTARTS   AGE
pod/ingress-nginx-controller-xcn5q   1/1     Running   0          9m46s

这里使用的是daemonset方式部署的,如果是deployment,需要将daemonset修改成deployment

kubectl edit daemonset ingress-nginx-controller -n ingress-nginx

 添加tcp配置

- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services

三、编写相应的configmap

查看当前mysql服务

[root@k8s-master01 mysql]# kubectl get pods,svc -n mysql
NAME                    READY   STATUS    RESTARTS   AGE
pod/mysql-primary-0     1/1     Running   0          73m
pod/mysql-secondary-0   1/1     Running   0          73m

NAME                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/mysql-primary              ClusterIP   10.102.29.24    <none>        3306/TCP   73m
service/mysql-primary-headless     ClusterIP   None            <none>        3306/TCP   73m
service/mysql-secondary            ClusterIP   10.106.87.104   <none>        3306/TCP   73m
service/mysql-secondary-headless   ClusterIP   None            <none>        3306/TCP   73m

 编写configmap,注意当前namespace为mysql

vim mysql-tcp-cm.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  "30306": "mysql/mysql-primary:3306"
  "30307": "mysql/mysql-secondary:3306"

应用configmap

kubectl apply -f mysql-tcp-cm.yaml

四、测试连接

 


原文地址:https://blog.csdn.net/qq_43144842/article/details/145242417

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!