k8s数据挂载

nfs挂载

        如果采用nfs挂载的方式,我们只需要将需要挂载的mysql-data目录指定nfs 的server和server的目的路径 ,如下,挂载到本机的/data/dev/mysql, 采用nfs的形式:

volumes:
  - name: mysql-data
    nfs:
      server: localhost
      path: /data/dev/mysql
  - name: mysql-dev-conf
    configMap:
      name: my.cnf

nfs出现挂载的问题

        如果出现挂载的问题,参考我的另一篇文:

[nfs无法挂载问题] mount.nfs: access denied by server while mounting localhost:/data/dev/mysql_ Dream_it_possible!的博客-CSDN博客

pvc挂载

        pvc卷是k8s容器存储的另一种形式,全程persitVolumeClaim, 可声明指定容量的pv卷,然后与pvc卷绑定,服务在挂载的时候只需要指定对应的pvc即可。

        比如我要声明一个pv和一个pvc,创建mysql-pvc.yaml,  pvc通过storageClassName绑定pv

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-01-pvc
spec:
  accessModes:
    - ReadWriteOnce   # 只能被一个容器访问,如果能被多个容器访问那么设置为ReadWriteMany
  resources:
    requests:
      storage: 3Gi
  storageClassName: standard
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: 3g-pv-1
spec:
  capacity:
    storage: 3Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: standard
  cinder:
    volumeID: a198bce4-ba0f-4d13-8f0c-55e31212a8c9 # 改路径为映射到本机的  /var/lib/kubelet/plugins/kubernetes.io/cinder/mounts
    fsType: ext4

 可通过storageclass来查看pvc对应的pv是哪个。

status字段为Bound时表示该pvc正在被某个服务所使用,使用我们刚创建的pvc方法很简单,只需要在volums属性里声明persistentVolumeClaim即可。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-01
  labels:
    app: mysql-01
spec:
  replicas: 1 # pod数量
  selector:
    matchLabels:
      app: mysql-01
  template:
    metadata:
      labels:
        app: mysql-01
    spec:
      containers:
        - name: mysql-01
          image: mysql:5.7
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              memory: "512Mi"
              cpu: "1500m"
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"
          volumeMounts:
            - name: mysql-01-persistent-storage
              mountPath: /var/lib/mysql
            - name: mysql-01-conf
              mountPath: /etc/mysql
      volumes:
        - name: mysql-01-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-01-pvc
        - name: mysql-01-conf
          configMap:
            name: my.cnf

启动成功后,那么pvc那边会的status状态为显示为bound。

pvc挂载会出现的问题

         centos 7 会出现声明的pv里的VolumeID在/var/lib/kubelet/plugins/kubernetes.io/cinder/mounts路径不存在的情况。

        如果没有 /kubernetes.io/cinder/mounts目录,那么需要手动创建,然后创建的volumeID为mounts下的目录,该目录需要具备读写权限才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦钢铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值