实验:K8s部署 mysql 8.0

背景:

节点maser:192.168.153.100

       node1:192.168.153.101

       node2:192.168.153.102

部署要求:MySQL 8

存储:nsf 

选择原因:部署简单,适合测试环境,能够提供多Pod共享存储的能力(支持 ReadWriteMany 访问模式)

一、安装配置nfs
1.在 Master 节点上安装并配置 NFS 服务器
yum -y install nfs-utils

2.创建共享目录并设置权限

mkdir -p  /nfs/data/01
chmod  777 /nfs/data/01

3.配置 NFS 导出目录(编辑 /etc/exports 文件)

vim /etc/exports

在文件末尾添加以下行(集群网络段是 192.168.153.0/24,按实际虚拟网络修改):

/nfs_share 192.168.153.0/24(rw,sync,no_subtree_check,no_root_squash)

4.启动nfs并设置为开机自起

systemctl start nfs-server
systemctl enable nfs-server

5.在所有 Node 节点上安装 NFS 客户端

yum  -y install  nfs-utils

安装后,可以测试一下是否能挂载 Master 上的 NFS 共享,测试成功后再卸载。

二、部署mysql

1.创建mysql专用namespace,就叫mysql,隔离资源。

kubectl  create namespace  mysql

2.编写mysql-pv.yaml文件内容,要创建的pv对象名称:pv-1gi

vim mysql-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-1gi
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nfs  # 存储类,具有相同存储类名称的pv和pvc才能进行
  nfs:
    path: /nfs/data/01
    server: 192.168.153.100

3.创建pv对象

kubectl apply  -v mysql-pv.yaml

4.查看创建的结果

5.创建持久卷声明PVC

声明存储大小为1Gb的PVC资源,k8s会根据storageClassName存储类名称找到匹配的PV对象进行绑定。

vim mysql-pvc.yaml

# 定义mysql的持久卷声明信息
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: mysql
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
 # 存储类,具有相同存储类名称的pv和pvc才能进行绑定
  storageClassName: nfs

6.创建pvc对象

kubectl apply  -f  mysql-pvc.yaml

7.查看创建pvc结果

8.创建Secret对象用来保存mysql的root用户密码

kubectl create secret generic mysql-root-password --from-literal=password=root -n tomcat

9.查看结果

10.创建mysql的deployment和service

vim mysql-svc.yaml

service使用NodePort类型,指定暴露的nodePort端口为31234

# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-root-password
              key: password
              #value: "123456"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysqlvolume
    # 使用pvc
        persistentVolumeClaim:
          claimName: mysql-pvc
---
#定义Mysql的service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: svc-mysql
  name: svc-mysql
  namespace: mysql
spec:
  selector:
    app: mysql
  type: NodePort
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    nodePort: 31234    

11.创建deployment,service

kubectl apply  -f mysql-svc.yaml

12.查看结果

13.测试连接MySQL

以上连接成功!进入数据库。

接下来测试创建表后再删除实例在共享目录中数据是否还存在。

testtable是我新建的表

删除实例

testtable的数据还存在。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值