ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kind搭建k8s集群中验证PV和PVC

2022-07-20 18:33:26  阅读:194  来源: 互联网

标签:kind PV name PVC mysql pv k8s


1、什么是PV、PVC

PV(PersistentVolume):持久化卷

PVC(PersistentVolumeClaim):持久化声明

为何有了Volumes,还要引进PV、PVC?因为Volumes的类型有很多,每次切换不同的类型如hotsPath,第三方的云存储,都需要手动改动yaml的对应的类型,且每种类型的写法声明方式都不同,导致不灵活不好维护。为了解决该问题,通过PV来抽象了各种类型,具体实现由具体存储方去实现,客户端只需要通过PVC声明,指定对应的storageClassName,即可匹配符合的第三方PV,无需关心其实现细节,且无需做任何修改。

2、通过mysql来实操PV、PVC

一、创建PV,类型为hostPath:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual  #与请求的PVC对应
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/var/lib/mysql"
kubectl apply -f mysql-pv.yaml

查看状态:

kubectl get pv

1604928203(1)

二、创建PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual #与PV的对应
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
kubectl apply -f mysql-pvc.yaml

查看状态:

1604928348(1)

由STATUS为Bound可知已经与上面的PV绑定。

三、创建Mysql Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-pv-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      name: k8s-mysql
  template:
    metadata:
      labels:
        name: k8s-mysql
    spec:
      containers:
      - name: mysql
        image: registry.cn-shenzhen.aliyuncs.com/luozhilian/k8s:mysql5.6
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-persistent-storage
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:  # 此处使用pvc声明
          claimName: mysql-pv-claim
---
kind: Service
apiVersion: v1
metadata:
  name: k8s-mysql-service
spec:
  type: NodePort
  ports:
  - port: 5000
    targetPort: 3306
    nodePort: 32000
  selector:
    name: k8s-mysql

kubectl apply -f mysql-deploy.yaml
kubectl get pod,svc -o wide

image-20201109213346952

用Navicat连接mysql,创建一个测试数据库:

1604928890(1)

查看node1主机的挂载的路径数据 /var/lib/mysql/:

1604929966(1)

删除mysql 对应的pod,让k8s重新创建pod:

kubectl delete pod mysql-pv-deploy-d7b7fd5b5-m6n44

再登录连接mysql,查看创建的数据库是否还存在:

1604928890(1)

如上图,依然存在

鸣谢:

https://www.cnblogs.com/roluodev/p/13951300.html

标签:kind,PV,name,PVC,mysql,pv,k8s
来源: https://www.cnblogs.com/yakniu/p/16499384.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有