NFS Provisioner

一个自动配置卷的程序,它使用现有的和已配置的nfs服务器支持通过持久卷动态配置kubernetes持久卷

持久卷被配置为:namespace-{namespace}-namespace-{pvcName}-${pvName}

注意使用这个组件必须要提前配置好nfs服务器

配置nfs-server

我选择在master节点上创建nfs服务端

yum install -y rpcbind nfs-utils

配置nfs

vi /etc/export
/home/nfs *(rw,sync,no_all_squash,no_root_squash)
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
exportfs -r 
showmount -e 192.168.200.11

创建NFS Provisioner RBAC鉴权

vi /root/nfs-provisioner-rbac.yaml
#创建sa
apiVersion: v1
kind: ServiceAccount
metadata: 
  name: nfs-client-provisioner
  namespace: kube-system

---
#简单一点直接给sa绑定kube-system 的clusterrole
apiVersion:  rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata: 
  name: nfs
  namespace: kube-system
roleRef: 
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects: 
- kind: ServiceAccount
  name: nfs-client-provisioner
  namespace: kube-system

配置nfs-provisioner服务

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: nfs-provisioner
  namespace: kube-system
  labels: 
    app: nfs
spec: 
  replicas: 1
  selector: 
    matchLabels: 
      app: nfs
  template: 
    metadata: 
      labels: 
        app: nfs
    spec: 
      serviceAccountName: nfs-client-provisioner
      containers: 
      - name: nfs
        image: 192.168.200.11/library/nfs-client-provisioner
        imagePullPolicy: IfNotPresent
        volumeMounts:  #数据持久化,可以不用写
        - name: nfs-client-path
          mountPath: /persistentvolumes
        env: 
        - name: PROVISIONER_NAME #配置容器内的环境变量,知道nfs
          value: nfs-client #这个名字后面的storageclass是用到的
        - name: NFS_SERVER
          value: 192.168.200.11
        - name: NFS_PATH
          value: /home/nfs
      volumes: #挂载到本地
      - name: nfs-client-path
        nfs: 
          server: 192.168.200.11
          path: /home/nfs
 #启动nfs-provisioner
 kubectl apply -f nfs-provisioner-deployment.yaml

创建storageclass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata: 
  name: nfs-storage #这个名字后面的pvc是用到的
provisioner: nfs-client
#启动
kubectl apply -f nfs-storageclass.yaml

创建pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata: 
  name: test-pvc
spec: 
  accessModes: 
  - ReadWriteOnce
  storageClassName: nfs-storage
  resources: 
    requests: 
      storage: 1Mi
 
 #启动
 kubectl apply -f nfs-pvc.yaml

测试

[root@master ~]# kubectl get pvc
NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
test-pvc   Bound    pvc-1e18c20a-52be-4a5c-9ede-cefb7f8b4f16   1Mi        RWO            nfs-storage    54m
#状态为bound即为正确

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您的问题是关于 Kubernetes 的部署。我可以回答您的问题并提供一些指导。 首先,您需要创建一个 `nfs-client-provisioner` 的 deployment 对象。您可以使用以下的 `nfs-deploy.yaml` 文件: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nfs-provisioner spec: selector: matchLabels: app: nfs-provisioner replicas: 1 template: metadata: labels: app: nfs-provisioner spec: containers: - name: nfs-client-provisioner image: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11 env: - name: NFS_SERVER value: <nfs-server-ip> # 您需要替换为实际的 NFS 服务端 IP 地址 - name: NFS_PATH value: /exports # 您需要替换为实际的 NFS 共享目录 - name: PROVISIONER_NAME value: example.com/nfs # 您可以替换为自己的 provisioner 名称 ``` 接下来,您需要创建一个 `storageclass.yaml` 文件,用于动态绑定 `nfs-provisioner`。您可以使用以下的 `storageclass.yaml` 文件: ```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs provisioner: example.com/nfs # 这里需要和上面的 PROVISIONER_NAME 保持一致 parameters: archiveOnDelete: "false" ``` 最后,您可以使用以下命令来应用这两个文件: ```bash $ kubectl apply -f nfs-deploy.yaml $ kubectl apply -f storageclass.yaml ``` 完成后,您可以使用以下命令来查看 `nfs-provisioner` 的 pod 和 storageclasses 对象: ```bash $ kubectl get pods -l app=nfs-provisioner $ kubectl get storageclasses ``` 希望我的回答能够帮助您解决问题,如果您还有任何问题,请随时问我!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值