k8s
组件 资源清单
pod 生命周期
pod 控制器
服务发现
runcher
KubeSphere
Helm
helm命令
helm 常用内置对象
helm 内置函数
helm 的逻辑 和 流程控制
helm 中变量在作用域、列表、元祖、字典中的引用
helm 使用define定义子模版、template和include调用
helm 获取其他文件的内容和文件名
社区的Helm chart仓库
helm几个常用仓库
存储 configMap
进入k8s pod
k8s Node节点的调试
k8s 部署
sealos 部署
kubeadm 1.28部署
增加 node 节点
在aws 上自建k8s
利用NFS动态提供Kubernetes后端存储卷
rook-ceph
CephFS挂载
Ceph Dashboard
ingress
k8s集成kube-prometheus
ServiceMonitor 添加配置
Prometheus 长期远程存储方案 VictoriaMetrics
解决ControllerManager、Scheduler、watchdog监控问题
抓取配置说明
kubernetes配置imagePullSecrets秘钥来拉取镜像
在 Kubernetes 裡跑 curl 來測試內部服務
MetalLB
cloudflare-tunnel-ingress-controller
K8S kubectl 自动补全
argocd
helm部署redis-culster集群
改变默认 StorageClass
自定义指标HPA
istio
kiali
k8s接入graylog
Labels
DNS
HPA
ConfigMap挂载导致容器目录覆盖的问题
污点容忍度
身份认证与权限 RBAC
command
运行crictl ps -a 报错
etcd
cka证书
cert-manager
Kubernetes 创建普通账号
部署 metrics-server 指标
deployment 重启
Kubernetes中如何优雅的解决Pod时区问题
alertmanager
oom killed
eks挂载efs
eks创建集群
eksctl awscli kubectl
污点和容忍度
Kubernetes 删除namespace Terminating解决脚本
k8s 部署 kafka 集群
ack ingress获取客户端客户端真实IP
ingress 反向代理 ws
本文档使用 MrDoc 发布
-
+
首页
利用NFS动态提供Kubernetes后端存储卷
## linux搭建NFS文件共享服务器的步骤详解 安装nfs所需软件包 ``` yum install rpcbind nfs-utils ``` 创建测试文件并赋权限 ``` mkdir /home/test chmod -R 777 /home/test/ cd /home/test/ vim aaa/bbb.txt ``` 修改配置文件 ``` vim /etc/exports 写入 /home/test 192.168.121.0/24(rw) 共享文件路径 允许共享网段(共享文件可执行权限) ``` ``` 共享文件可执行权限有: ro 只读访问 rw 读写访问 sync 所有数据在请求时写入共享 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录 all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squas root用户具有根目录的完全管理访问权限 ``` 动态加载配置文件 ``` #动态加载配置文件 [root@node5 ~]# exportfs -rv exporting 192.168.110.186:/usr/local/apache-tomcat-8.0.51/webapps ``` 开启服务 ``` systemctl start rpcbind nfs ``` 查看共享信息 ``` showmount -e 192.168.121.38 (此处ip地址为搭建服务器主机地址) ``` 访问nfs服务器(客户端) 挂载 ``` #首先在客户端node8安装nfs,不需要启动,但是需要nfs里包含的命令showmount [root@node8 ~]# yum -y install nfs-utils mount -t nfs 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp #编辑fstab文件, 使系统每次启动时都能自动挂载 sudo vim /etc/fstab 添加如下: your_nfs_server_Ip:/var/nfs/sharedir /mnt/nfs_sharedir nfs defaults 0 0 ``` 调优 ``` 系统内核优化 [root@node8 ~]# vim /etc/sysctl.conf [root@node8 ~]# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/. # # Vendors settings live in /usr/lib/sysctl.d/. # To override a whole file, create a new file with the same in # /etc/sysctl.d/ and put new settings there. To override # only specific settings, add a file with a lexically later # name in /etc/sysctl.d/ and put new settings there. # # For more information, see sysctl.conf(5) and sysctl.d(5). #内核默认读缓存 net.core.wmem_default = 8388608 #内核默认写缓存 net.core.rmem_default = 8388608 #内核最大读缓存 net.core.rmem_max = 16777216 #内核最大写缓存 net.core.wmem_max = 16777216 #使配置文件生效 [root@node8 ~]# sysctl -p net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 ``` NFS客户端挂载参数优化 ``` [root@node8 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 14G 3.6G 80% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 13M 476M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/loop0 4.3G 4.3G 0 100% /mnt/cdrom /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps 17G 14G 4.0G 77% /tomcatapp #先卸载共享目录 [root@node8 ~]# umount 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps [root@node8 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 14G 3.6G 80% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 13M 476M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/loop0 4.3G 4.3G 0 100% /mnt/cdrom /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 #优化NFS客户端挂载参数 #-o后面跟挂载参数 #noatime:取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用。 #nodiratime:取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能。 #intr:可以中断不成功的挂载。 #rsize/wsize:读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说32768(bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。 [root@node8 ~]# mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp [root@node8 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 14G 3.6G 80% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 13M 476M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/loop0 4.3G 4.3G 0 100% /mnt/cdrom /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps 17G 14G 4.0G 77% /tomcatapp [root@node8 ~]# vim /etc/fstab #把优化后的挂载参数也加入到配置文件中 [root@node8 ~]# cat /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=db58ac18-ddda-44e9-bbf5-2584fac03ed6 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /mnt/yum-iso/CentOS-7-x86_64-DVD-1708.iso /mnt/cdrom iso9660 loop 0 0 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp nfs noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0 [root@node8 ~]# mount -a [root@node8 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 14G 3.6G 80% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 13M 476M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/loop0 4.3G 4.3G 0 100% /mnt/cdrom /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps 17G 14G 4.0G 77% /tomcatapp ``` ## k8s1.27使用NFS作为StorageClass k8s集群内创建Storage class 官方文档: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner ``` git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git cd /root/nfs-subdir-external-provisioner/deploy #./class.yaml ./rbac.yaml 可以不管 ``` ``` kind: Deployment apiVersion: apps/v1 metadata: name: nfs-client-provisioner spec: replicas: 1 selector: matchLabels: app: nfs-client-provisioner strategy: type: Recreate template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner # image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 image: k8s.dockerproxy.com/sig-storage/nfs-subdir-external-provisioner:v4.0.2 volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: k8s-sigs.io/nfs-subdir-external-provisioner - name: NFS_SERVER # value: nfs 服务地址 value: 192.168.3.10 - name: NFS_PATH # value: nfs 的共享目录 value: /data/nfs volumes: - name: nfs-client-root nfs: # server: nfs 服务地址 server: 192.168.3.10 # value: nfs 的共享目录 path: /data/nfs ``` ``` kubectl apply -f rbac.yaml kubectl apply -f class.yaml kubectl apply -f deployment.yaml kubectl get sc #查看存储类 ```
admin
2023年7月30日 22:47
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码