一、配置nfs服务器

参考文章:

  1. pod使用示例https://cloud.tencent.com/developer/article/1914388
  2. nfs配置示例https://blog.csdn.net/weixin_43466725/article/details/88252404
  3. nfs介绍https://blog.csdn.net/qq_41959899/article/details/105899689

1.1 修改配置文件

连接nfs服务器,vim /etc/exports修改exports文件内容:
在这里插入图片描述
说明:
/data/monitor-test/tracing/mysql_data目录是用来作为数据持久化的目录

每一条数据对应的ip是k8s的节点IP(node),把k8s的所有node都配置上去

1.2. 载入配置

执行命令exportfs -rv载入配置

1.3. 检查服务配置

执行命令showmount -e查看是否添加成功:
在这里插入图片描述

二、创建K8S资源文件

2.1 mysql-deployment.yml

创建mysql-deployment.yml文件:

apiVersion: apps/v1                             # apiserver的版本
kind: Deployment                                # 副本控制器deployment,管理pod和RS
metadata:
  name: mysql-nfs                                  # deployment的名称,全局唯一
  namespace: kube-monitor                           # deployment所在的命名空间
  labels:
    app: mysql
spec:
  replicas: 1                                   # Pod副本期待数量
  selector:
    matchLabels:                                # 定义RS的标签
      app: mysql                                # 符合目标的Pod拥有此标签
  strategy:                                     # 定义升级的策略
    type: RollingUpdate                         # 滚动升级,逐步替换的策略
  template:                                     # 根据此模板创建Pod的副本(实例)
    metadata:
      labels:
        app: mysql                              # Pod副本的标签,对应RS的Selector
    spec:
      nodeName: 192.168.1xx.1xx                    # 指定pod运行在的node
      containers:                               # Pod里容器的定义部分
        - name: mysql                           # 容器的名称
          image: 192.168.116.12x:18080/monitor-test/mysql:5.7.42                      # 容器对应的docker镜像
          volumeMounts:                         # 容器内挂载点的定义部分
            - name: time-zone                   # 容器内挂载点名称
              mountPath: /etc/localtime         # 容器内挂载点路径,可以是文件或目录
            - name: nfs-mysql-data
              mountPath: /var/lib/mysql         # 容器内mysql的数据目录
            - name: nfs-mysql-logs
              mountPath: /var/log/mysql         # 容器内mysql的日志目录
          ports:
            - containerPort: 3306               # 容器暴露的端口号
          env:                                  # 写入到容器内的环境容量
            - name: MYSQL_ROOT_PASSWORD         # 定义了一个mysql的root密码的变量
              value: "root"
      volumes:                                  # 本地需要挂载到容器里的数据卷定义部分
        - name: time-zone                       # 数据卷名称,需要与容器内挂载点名称一致
          hostPath:
            path: /etc/localtime                # 挂载到容器里的路径,将localtime文件挂载到容器里,可让容器使用本地的时区
        - name: nfs-mysql-data
          nfs:
            server: 192.168.116.1xx  # nfs服务器地址
            path: /data/monitor-test/tracing/mysql_data/data          # nfs存放mysql数据的目录
        - name: nfs-mysql-logs
          nfs:
            server: 192.168.116.1xx
            path: /data/monitor-test/tracing/mysql_data/logs              # nfs存入mysql日志的目录

执行命令创建deployment:kubectl apply -f mysql-deployment.yml

2.2 mysql-svc.yml

创建mysql-svc.yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: mysql-nfs
  namespace: kube-monitor
  labels:
    name: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 30014
  selector:
    app: mysql

执行命令创建svc:kubectl apply -f mysql-svc.yml

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐