kubernetes mysql pod_kubernetes集群部署mysql 8.0

参考:https://blog.csdn.net/sealir/article/details/81177747?utm_source=blogxgwz1

集群内安装mysql并添加相应存储(PVC)

新建mysql-pvc.yaml、mysql-deploy.yaml和mysql-svc.yaml,分别如下:

先找出当前k8s集群下的storageClass的name,用来创建PVC!!

kubectl get storageclasses --all-namespaces

mysql-pvc.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pvcnamespace: kube-system

labels:

app: mysql-pvc

spec:

accessModes:-ReadWriteMany

resources:

requests:

storage: 2Gi

storageClassName:default

storageClassName: default 中的default即为查找出来的storageClass

mysql-deploy.yaml:

apiVersion: apps/v1

kind: Deployment

metadata:

name: mysql-deploynamespace: kube-system

spec:

replicas:1selector:

matchLabels:

name: mysql-pod

template:

metadata:

labels:

name: mysql-pod

spec:

containers:-name: mysql

image: mysql:8.0.12imagePullPolicy: IfNotPresent

env:-name: MYSQL_ROOT_PASSWORD

value: noc-mysql

ports:- containerPort: 3306volumeMounts:- name: mysql-persistent-storage

mountPath:"/var/lib/mysql"volumes:- name: mysql-persistent-storage

persistentVolumeClaim:

claimName: mysql-pvc

mysql-svc.yaml

apiVersion: v1

kind: Service

metadata:

name: mysql-svcnamespace: kube-system

labels:

name: mysql-svc

spec:

type: NodePort

ports:- port: 3306protocol: TCP

targetPort:3306name: http

nodePort:32306selector:

name: mysql-pod

在mysql-deploy.yaml中,image参数可以指定mysql的版本,如8.0.11、5.7.22等。若省略了,表示用latest。另外,可以指定镜像库,这里使用阿里云镜像库,在安装docker时进行了配置。env参数指定了mysql的root密码。

在mysql-svc.yaml中,targetPort表示mysql pod中mysql窗口的目标端口,默认为3306,type类型为NodePort,表示将映射到本地端口,本地端口为nodePort: 32306。

接下来启动PVC、Deployment和Service,执行以下命令:

kubectl create -f mysql-pvc.yaml

kubectl create -f mysql-deploy.yaml

kubectl create -f mysql-svc.yaml

启动后可以查看mysql部署在了哪个node上,执行以下命令可以查看:

kubectl get pod -o wide

输出如下,可以看到部署在了192.168.56.28 node中,这里在部署kubernetes时用ip表示node的名称。

5df619c89f69f067b930c6545a05d19f.png

远程连接mysql8.0时可能会报一些错误,如navicat连接。

【注:出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password】

这里对mysql8.0作一些设置。

(1)、登录到192.168.56.28node中。

(2)、执行docker ps查看mysql容器。如下所示:

37b022db275b49152f1f42e5513ea0db.png

(3)、进入mysql容器,执行以下命令进入容器,这里container_id为458bb493e233

docker exec -it container_id /bin/bash

(4)、在容器内登录mysql。执行以下命令,-h为ip,容器内ip为127.0.0.1,-u为用户名,-p为密码,在mysql-rc中设置的密码。

mysql -h 127.0.0.1 -uroot -pmysql

(5)、对mysql进行如下设置。

alter user 'root'@'%' identified with mysql_native_password by'root';

alter  user 'root'@'%' identified by 'mysql';

(6)、退出mysql和容器,执行quit退出mysql,按ctrl+p后,再按ctrl+q从容器中返回node主机。

设置好mysql后,可以远程连接node中的mysql,node的ip为192.168.56.28,映射的端口为32306,可以用navicat工具连接到这个myql。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值