原创

k8s 安装笔记 - MySQL数据库安装-开发环境

温馨提示:
本文最后更新于 2023年07月10日 ,已超过 649 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

创建持久卷PV,用来存储mysql数据文件

  • 定义一个容量大小为1GB的PV,挂载到/data/nfs/mysql目录,需手动创建该目录
mkdir -p /data/nfs/mysql
  • 编写mysql-pv.yaml文件内容,要创建的pv对象名称:pv-1gi
# 定义持久卷信息
apiVersion: v1
kind: PersistentVolume
metadata:
  # pv是没有namespace属性的,它是一种跨namespace的共享资源
  name: pv-4gi
spec:
  capacity:
    storage: 4Gi
  accessModes:
    - ReadWriteMany
  # 存储类,具有相同存储类名称的pv和pvc才能进行绑定
  storageClassName: nfs
  hostPath:
    path: /data/nfs/mysql
  • 创建该PV对象
kubectl create -f mysql-pv.yaml

创建持久卷声明PVC

  • 编写mysql-pvc.yaml文件内容,要创建的pvc对象名称是:mysql-pvc
# 定义mysql的持久卷声明信息
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: devops
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 4Gi
  # 存储类,具有相同存储类名称的pv和pvc才能进行绑定
  storageClassName: nfs

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

kubectl create secret generic \
mysql-root-password \
--from-literal=password=123456 \
-n devops

创建服务节点POD

# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: devops
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:8.0
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-root-password
              key: password
          # 如果你不想使用secret对象保存mysql登录密码,可以直接使用下面的方式指定,简单粗暴未尝不可
          #value: "123456"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: pv-volume
          mountPath: /var/lib/mysql
      volumes:
      - name: pv-volume
        # 使用pvc
        persistentVolumeClaim:
          claimName: pv-claim-mysql

---
#定义mysql的Service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: svc-mysql
  name: svc-mysql
  namespace: dev
spec:
  selector:
    app: mysql
  type: NodePort
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    nodePort: 31234
正文到此结束
本文目录