前言

有关k8s的搭建可以参考:http://t.csdn.cn/H84Zu
有关过程中使用到的nfs相关的nas,可以参考:
http://t.csdn.cn/ACfoT
http://t.csdn.cn/tPotK
http://t.csdn.cn/JIn27

安装nfs存储插件

NFS-Subdir-External-Provisioner是一个自动配置卷程序,它使用现有的和已配置的 NFS 服务器来支持通过持久卷声明动态配置 Kubernetes 持久卷。

此组件是对 nfs-client-provisioner 的扩展,nfs-client-provisioner 已经不提供更新,且 nfs-client-provisioner 的 Github 仓库已经迁移到 NFS-Subdir-External-Provisioner 的仓库。

GitHub 地址:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

创建NFS服务端

这里使用的是trueNas提供的NFS服务:
ip地址:192.168.1.10
存储目录:/mnt/kingStoragePool
也可以自行实现一个nfs服务器。

部署NFS Provisioner

所有节点都必须提前安装nfs-utils

yum install nfs-utils

使用下面的命令查看nfs状态:

[root@centos-k8s-master ~]# showmount -a 192.168.1.10
All mount points on 192.168.1.10:
192.168.1.13:/mnt/kingStoragePool[root@centos-k8s-master ~]# rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@centos-k8s-master ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-49.el7.x86_64

创建 ServiceAccount

现在的 Kubernetes 集群大部分是基于 RBAC 的权限控制,所以创建一个一定权限的 ServiceAccount 与后面要创建的 “NFS Provisioner” 绑定,赋予一定的权限。

apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisionernamespace: provisioner# 替换成你要部署的 Namespace
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: provisioner
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: provisioner
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: provisioner
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

部署RBAC:

kubectl apply -f nfs-rbac.yaml

部署 NFS-Subdir-External-Provisioner

创建 NFS Provisioner 部署文件,这里将其部署到 “provisioner” Namespace 中。
nfs-provisioner-deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreate                   ## 设置升级策略为删除再创建(默认为滚动更新)selector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisioner#image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0image: registry.cn-beijing.aliyuncs.com/xngczl/nfs-subdir-external-provisione:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAME     ## Provisioner的名称,以后设置的storageclass要和这个保持一致value: nfs-client- name: NFS_SERVER           ## NFS服务器地址,需和valumes参数中配置的保持一致value: 192.168.1.10- name: NFS_PATH             ## NFS服务器数据存储目录,需和valumes参数中配置的保持一致value: /mnt/kingStoragePoolvolumes:- name: nfs-client-rootnfs:server: 192.168.1.10     ## NFS服务器地址path: /mnt/kingStoragePool            ## NFS服务器数据存储目录

创建 NFS Provisioner:

# -n: 指定应用部署的 Namespace
kubectl apply -f nfs-provisioner-deploy.yaml -n provisioner

创建 NFS SotageClass

创建一个 StoageClass,声明 NFS 动态卷提供者名称为 “nfs-storage”。

nfs-storage.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: "false"  ## 是否设置为默认的storageclass
provisioner: nfs-client                                   ## 动态卷分配者名称,必须和上面创建的"provisioner"变量中设置的Name一致
parameters:archiveOnDelete: "true"                                 ## 设置为"false"时删除PVC不会保留数据,"true"则保留数据
mountOptions:- hard                                                  ## 指定为硬挂载方式- nfsvers=4                                             ## 指定NFS版本,这个需要根据NFS Server版本号设置
kubectl apply -f nfs-storage.yaml -n provisioner

K8S篇-安装nfs插件相关推荐

  1. K8S篇-安装Syncthing

    安装docker-compose # ubuntu apt-get install docker-compose# centos yum install docker-compose 下载kompos ...

  2. k8s—centos7安装部署NFS服务器和客户端及基于nfs的动态存储storageclass使用总结

    ![技术公众号:后端技术解忧铺](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX ...

  3. npm安装less插件 - cmd篇

    vue项目:npm安装less插件 和之前一样,先cd到项目目录:然后执行cmd指令. cmd指令: npm install less less-loader --save 或者(国内阿里镜像)cnp ...

  4. k8s安装网络插件镜像下载不了问题

    下面是本人在帮好友安装k8s过程中在安装网络插件这里碰到的问题 使用kubectl apply -f kube-flannel.yml安装flannel网络插件 安装完之后是要等个一阵子的,但是等了十 ...

  5. k8s安装网络插件-flannel

    在完成了k8s的集群部署后查看集群状态的话还不是ready的状态,所以需要安装网络插件来完成k8s的集群创建的最后一步. kube-flannel.yml文件在国外服务器上,搭建k8s集群时可以使用如 ...

  6. 【外行也能看懂的RabbitMQ系列(四)】—— RabbitMQ进阶篇之通过插件实现延迟队列(内含实现代码及rabbitmq_delayed_message_exchange安装)

    系列文章目录 准备篇 RabbitMQ安装文档 第一章 RabbitMQ快速入门篇 第二章 RabbitMQ的Web管理界面详解 第三章 RabbitMQ进阶篇之死信队列 第四章 RabbitMQ进阶 ...

  7. 【Eclipse提高开发速度-插件篇】安装VJET插件,JS等提示开发插件

    1.安装Apache Batik CSS 一般安装VJET插件会出现 Cannot complete the install because one or more required items co ...

  8. centos7下安装nfs文件服务器 为k8s中使用nfs做准备

    根据我们 服务器规划https://blog.csdn.net/wangxin123wangxin/article/details/122880160 nfs服务器部署到192.168.21.231上 ...

  9. [Web前端工具篇]Sublime 3安装Markdown插件

    1.简介 今天这边文章主要还是写如何离线安装Markdown插件 2.安装流程 2.1 下载官方软件 Sublime Text 3 官网 2.2 PackageControl 插件的安装 Packag ...

最新文章

  1. JAVA设计模式(09):结构型-代理模式(Proxy)
  2. 一阶暂态电路三要素法和三种响应
  3. Objective-C NSString字符串操作总结
  4. idea下git log乱码问题
  5. canvas 实现图片局部模糊_Canvas模糊化处理图片、毛玻璃处理图片之stackblur.js
  6. ueditor 上传图片或者视频报错 413 Request Entity Too Large
  7. Triangle Counting【数学】
  8. 拳王虚拟项目公社:闲鱼虚拟资源玩法案例拆解,教你玩转虚拟资源,货源+方法
  9. WSS 3.0部署备忘 六
  10. Linux入门之一Linux 系统启动
  11. 如何修复提交错误的Git分支?
  12. android选择选择图片封装库,Android_Album_android图片选择库
  13. MATLAB绘图 最大化全屏后保存
  14. C++ 灰度图像伪彩色处理
  15. 一个大学生的人生随笔
  16. 计算机光驱无法启用,光驱提示:无法访问G:\函数不正确解决方法
  17. 什么是ArcGIS Engine?
  18. 大学兼职一般做什么?有哪些职业?
  19. 计算机网络术语中rt是什么意思?今天就来给你解答
  20. Win10中找不到gpedit.msc

热门文章

  1. URL重定向之一.htaccess文件和AllowOverride指令
  2. Matlab和excel联合,安装Excel link插件,实现Excel与Matlab的互联
  3. MacBook配置Chromedriver
  4. python 处理电子表格(前编)
  5. h5标签上实现文字空格
  6. android onresume 焦点,Android – 是否有一个回调,在onResume()之后被调用?
  7. 如何解决Android遇到的65536问题
  8. 微信版大语言模型来了:跨时空对话李白、教你高情商说话,API在线试玩全都有...
  9. Win10 Win11 你的数据将在你所在的国家或地区之外进行处理临时解决方案
  10. 景驰内讧持续:潘思宁自称还是法人 公司称其半年前已被辞退