首页 > 其他 > 详细

K8S 指定 nfs 挂载

时间:2020-09-24 16:01:35      阅读:87      评论:0      收藏:0      [点我收藏+]

在项目中,pod 需要挂载外部的文件才可以使用
创建 nfs 挂载点,并把文件放进去

mkdir -p /data2/nfs/test_gc_wms/

vi /etc/exports

/data2/nfs/test_gc_wms          192.168.0.0/24(rw,sync,no_root_squash)

# 重启 nfs
systemctl restart rpcbind
systemctl restart nfs

# 把需要的文件放入 /data2/nfs/test_gc_wms/

# 测试是否正常提供 nfs 目录
showmount -e 192.168.0.168

创建 pv 和 pvc

vi nfs.yaml

nfs.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kl-test        # pv 名字
  namespace: klvchen
  labels:
    app: kl-test       # 定义 labels ap: kl-test
spec:
  capacity:
    storage: 10Mi      # 定义容量
  accessModes:
    - ReadWriteMany    # 访问模式
  persistentVolumeReclaimPolicy: Retain # 回收策略
  storageClassName: nfs                 # 定义 storageClassName 只有相同名字的才能绑定在一起
  nfs:
    path: /data2/nfs/test_gc_wms
    server: 192.168.0.168

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: kl-test      # pvc 名字
  namespace: klvchen
spec:
  storageClassName: nfs  # Name of Storage Class Name, use same class name defined in pv
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi     # amout of Storage request
  selector:
    matchLabels:
      app: kl-test      # 指定 pv 的标签 kl-test

kubectl apply -f nfs.yaml

创建使用 pvc 的例子

vi demo.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-pvc
  namespace: klvchen
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-pvc
  template:
    metadata:
      labels:
        app: nfs-pvc
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: kl-test
          mountPath: /usr/share/nginx/html
      volumes:
      - name: kl-test
        persistentVolumeClaim:
          claimName: kl-test

kubectl apply -f demo.yaml
AccessModes 是用来对 PV 进行访问模式的设置,用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式:
- ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
- ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
- ReadWriteMany(RWX):读写权限,可以被多个节点挂载

persistentVolumeReclaimPolicy(回收策略) 这里指定的 PV 的回收策略为 Recycle,目前 PV 支持的策略有三种:
- Retain(保留)- 保留数据,需要管理员手工清理数据
- Recycle(回收)- 清除 PV 中的数据,效果相当于执行 rm -rf /thevoluem/*
- Delete(删除)- 与 PV 相连的后端存储完成 volume 的删除操作,当然这常见于云服务商的存储服务,比如 ASW EBS。
不过需要注意的是,目前只有 NFS 和 HostPath 两种类型支持回收策略。当然一般来说还是设置为 Retain 这种策略保险一点。

PV 的生命周期中的状态,可能会处于4中不同的阶段:
- Available(可用):表示可用状态,还未被任何 PVC 绑定
- Bound(已绑定):表示 PVC 已经被 PVC 绑定
- Released(已释放):PVC 被删除,但是资源还未被集群重新声明
- Failed(失败): 表示该 PV 的自动回收失败

StorageClassName 
相同的PV和PVC才能够绑定到一起。
例如:PVC 的StorageClassName设置为 "nfs",那么它只会和 StorageClassName 也为 "nfs" 的 PV 绑定到一起。

K8S 指定 nfs 挂载

原文:https://www.cnblogs.com/klvchen/p/13723471.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!