Rancher 2.5 安装的 k8s 集群中部署 Mysql 5.7

710 阅读2分钟

白菜Java自习室 涵盖核心知识

基础环境搭建

基础环境的搭建请参考此文: # Rancher 2.5 部署单节点 k8s 集群,起飞的感觉

1. 宿主机搭建 NFS

NFS 是一个网络文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。

(1) 通过 yum 安装

yum -y install rpcbind nfs-utils 

(2) 建立网上邻居共享目录

mkdir /mnt/share

(3) 配置这个共享目录

vim /etc/exports

写入下边的内容:

/mnt/share	192.168.138.0/24(rw,no_root_squash,async,fsid=0)

(4) 使配置内容生效

exportfs -r 

(5) 启动 rpcbind、nfs 服务及开机自启动

systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs

2. 新建命名空间

1650871591(1).jpg

在 "default" 项目下,起一个 "middleware" 的命名空间

1650871684(1).jpg

3. 设置 PV (Persistent Volumes)

注意:找不到这个菜单的,切回集群选项,不在项目选项里

1650870914(1).jpg

注意几个关键的配置,模式可以选择单节点/多节点

1650871090(1).jpg

4. 设置 PVC (Persistent Volumes Claim)

1650871238(1).jpg

注意几个关键的配置,选择刚才设置好的 PV 绑定

1650871455(1).jpg

5. 设置 Config Maps

1650872057(1).jpg

这里的作用其实就是把容器的配置映射到公共的 Config Map

1650872245(1).jpg

mysql.conf 的内容根据真实需要配置,这里作者随便写个简单的

[mysqld]
skip-name-resolve

6. 设置 Mysql 的 POD

1650873080(1).jpg

直接导入 yml 配置,类型 Deployment,内容会贴在下边,接触过的同学都多少会看的明白

1650940467(1).jpg

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: middleware
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:                        
        - name: MYSQL_ROOT_PASSWORD
          value: "88021120"
        ports:
        - containerPort: 3306
          name: redis
          protocol: TCP
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
        - name: mysql-conf
          mountPath: "/etc/mysql/conf.d/"
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: mysql-pvc
      - name: mysql-conf
        configMap:
          name: mysql-alone-conf
          items:
          - key: mysql.conf
            path: mysql.conf

7. 设置 Mysql 的 Service

1650940657(1).jpg

直接导入 yml 配置,类型 Service,内容会贴在下边,接触过的同学都多少会看的明白

1650940765(1).jpg

apiVersion: v1
kind: Service
metadata:
  name: mysql-alone-access
  namespace: middleware
  labels:
    app: mysql
spec:
  selector:
    app: mysql
  ports:
  - name: mysql-access
    protocol: TCP
    port: 3306
    targetPort: 3306
  type: NodePort

8. 查看状态与试用

1650941037(1).jpg

网络模式我们选择的是 NodePort,看到系统自动给我们分配了宿主机端口 32401

1650941169(1).jpg

至此我们用 Navicat 连接下试试

1650941322(1).jpg

注意:有的同学搞的镜像版本可能直接连不上,需要自己进入容器把root的远程连接打开

(1) 在宿主机上查看运行的 docker 容器

docker ps | grep mysql

(2) 找到你的容器 ID,然后进入容器

docker exec -it 容器ID /bin/bash 

(3) 然后进入你的 Mysql

mysql -uroot -p你的密码

(4) 然后选择 Mysql 的数据库,赋予 root 账号连接权限

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';
flush privileges;

如果你还是连不上,那你要回到第五步,检查下 ConfigMap 中你的 Mysql 的配置是否存在问题。