NFS简介
- NFS,是由SUN公司研制的文件传输协议,全称Network File System
- NFS主要是采用远程过程调用RPC机制实现文件传输
- 安装命令
yum install -y nfs-utils rpcbind
集群文件共享
如何解决集群中文件的统一修改、统一使用?共享
通过在宿主机上安装NFS,将文件共享给多个容器
NFS使用示例
安装NFS服务
执行如下命令,在宿主机上安装NFS,这里我们选择Master节点
yum install -y nfs-utils rpcbind
执行如下命令,配置并启动文件共享
# 创建共享目录
mkdir -p /datda/www-data
# 设置NFS共享文件
echo "/data/www-data 192.168.0.31/24(rw,sync)" > /etc/exports
# 启动nfs服务
systemctl start nfs
# 启动rpcbind服务
systemctl start rpcbind
# 设置服务开机自启动
systemctl enable nfs
systemctl enable rpcbind
# 查看文件共享情况
exportfs
# /data/www-data 192.168.0.31/24
客户端使用NFS服务
在Node节点上执行如下命令,安装NFS客户端
yum install -y nfs-utils
挂载共享文件
# 创建目录
mkdir -p /data/www-data
# 挂载目录
mount 192.168.0.31:/data/www-data /data/www-data
设置开机启动
systemctl enable nfs
辅助命令,查看nfs共享了哪些目录showmount -e 192.168.0.31
容器中使用nfs共享文件
延用之前的Tomcat集群,来加载nfs共享文件,变更该Tomcat集群可以通过kube apply命令修改集群,或者使用kube delete删除集群相关资源,再创建集群。这里我们使用第二种方法。
清理Tomcat集群
# 查看deployment列表
kubectl get deployment
# 删除名为tomcat-deploy的deployment
kubectl delete deployment tomcat-deploy
# 查看service列表
kubectl get service
# 删除名为tomcat-deploy的service
kubectl delete service tomcat-deploy
修改delployment
修改tomcat-deploy.yml内容如下
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat-deploy
spec:
replicas: 2
template:
metadata:
labels:
app: tomcat-cluster
spec:
volumes: # 创建volume数据卷
- name: web-app # 数据卷名称
hostPath: # 数据卷在宿主机上的路径
path: /data/www-data
containers:
- name: tomcat-cluster
image: tomcat:latest
ports:
- containerPort: 8080
volumeMounts: # 绑定数据卷
- name: web-app # 匹配之前创建的数据卷名称
mountPath: /usr/local/tomcat/webapps # 指定容器中的挂载目录
创建deployment
kubectl create -f tomcat-deploy.yml
使用命令查看生效情况
# 查看deployment状态
kubectl get deployment
# 查看pod状态
kubectl get pod
# 进入容器,查看文件是否挂载成功
kubectl exec -it tomcat-deploy-6cc6d68877-9wkwm /bin/bash
# 在容器内查看文件
ls /usr/local/tomcat/webapps
# 在nfs宿主机的/data/www-data目录新增、修改文件,观察内容是否同步
至此就完成了基于NFS的K8S集群文件共享设置。
配置客户端的NFS自动挂载
使用mount命令挂载,重启系统后将失效,需配置/etc/fstab
# /etc/fstab中添加如下配置
192.168.0.31:/data/www-data /data/www-data nfs defaults 0 0
版权说明
本文章内容为马士兵教育《架构师高级技能kubernetes入门到精通》课程的学习笔记