k8s部署Mysql

在Kubernetes上部署数据库时,需要使用持久性存储卷为Pod提供存储。

首先创建pv和pvc,然后再将两者绑定,Persistent Volume 和 Persistent Volume Claim,主要是管理服务持久化的存储资源 Volume

创建持久卷mysql_pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: localhdd
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/mysql"

这将创建一个持久卷,我们将使用它来附加到容器,以确保Pod重启时的数据安全。该持久卷具有ReadWriteOne访问模式,拥有20GB的存储空间,存放路径是/data/mysql,我们所有的数据都将保存在该路径中

执行创建命令创建资源

kubectl create -f mysql_pv.yaml

创建持久卷声明mysql_pvc.yaml

kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  storageClassName: localhdd
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

执行创建命令创建资源

kubectl create -f mysql_pvc.yaml

然后我们在k8s集群上部署这个有状态服务mysql_service.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 13306
  selector:
    app: mysql
  selector:
    app: mysql

首先,我们在端口3306上为MySQL数据库部署服务,所有Pod均具有标签键app: mysql

接下来,创建以下资源

kubectl create -f mysql_service.yaml

然后创建mysql deployment资源mysql_deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:                        
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql         
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pvc
kubectl create -f mysql_deploy.yaml


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/804.html