|NO.Z.00023|——————————|CloudNative|——|Kubernetes&持久化存储.V01|——|NFS存储|
一、持久存储-nfs

二、持久存储-NFS
### --- 找一台新的服务器作为nfs服务器,
[root@k8s-nfs ~]# yum install -y nfs-utils
~~~ 设置挂载的目录
[root@k8s-node2 ~]# vim /etc/exports
/data/nfs *(rw,no_root_squash)
~~~ 挂载的路径必须手动创建,若是不创建,后期挂载时挂载不成功的
[root@k8s-node2 ~]# mkdir -p /data/nfs
### --- 在k8snode节点上安装上nfs服务
~~~ 两个k8s-node节点上都需要部署nfs服务,执行第一步操作
~~~ 安装上之后,它会自动帮你挂载
[root@k8s-node1 ~]# yum install -y nfs-utils
[root@k8s-node2 ~]# yum install -y nfs-utils
### --- 在nfs服务端启动nfs
[root@k8s-nfs ~]# systemctl restart rpcbind
[root@k8s-nfs ~]# systemctl start nfs
### --- 在k8s集群部署应用使用nfs持久网络存储
[root@k8s-master ~]# mkdir pv
[root@k8s-master ~]# cd pv
[root@k8s-master pv]# vim nfs-nginx.yaml
apiVersion: apps/v1
kind: Deployment # 部署一个deployment
metadata:
name: nginx-dep1
spec:
replicas: 1 # 副本只有一个
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts: # 通过volumeMounts挂载镜像
- name: wwwroot
mountPath: /usr/share/nginx/html # 挂载路径
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server: 10.10.10.14 # nfs服务器地址
path: /data/nfs
[root@k8s-master pv]# kubectl apply -f nfs-nginx.yaml
deployment.apps/nginx-dep1 created
[root@k8s-master pv]# kubectl get pods
nginx-dep1-64f6dc84c9-7jcpm 1/1 Running 0 8s
### --- 查看它的创建日志
[root@k8s-master pv]# kubectl describe pod nginx-dep1-64f6dc84c9-7jcpm
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 62s default-scheduler Successfully assigned default/nginx-dep1-64f6dc84c9-7jcpm to k8s-node2
Normal Pulling 57s kubelet, k8s-node2 Pulling image "nginx"
Normal Pulled 57s kubelet, k8s-node2 Successfully pulled image "nginx"
Normal Created 56s kubelet, k8s-node2 Created container nginx
Normal Started 56s kubelet, k8s-node2 Started container nginx
### --- 进入应用
[root@k8s-master pv]# kubectl exec -it nginx-dep1-64f6dc84c9-7jcpm bash
~~~ #挂载目录下目前为空
root@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/
### --- 在nfs服务端创建文件
[root@k8s-nfs ~]# vim /data/nfs/index.html
hello k8s-nfs server
~~~ 进入k8s部署的持久应用服务查看挂载目录,可以查看到在k8s-nfs下创建的文件
root@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/
index.html
root@nginx-dep1-64f6dc84c9-7jcpm:/# cat /usr/share/nginx/html/index.html
hello k8s-nfs server
### --- 对外暴露端口
[root@k8s-master pv]# kubectl expose deployment nginx-dep1 --port=80 --target-port=80 --type=NodePort
service/nginx-dep1 exposed
[root@k8s-master pv]# kubectl get svc
nginx-dep1 NodePort 10.99.50.53 <none> 80:30769/TCP 4s
### --- 通过Chrome访问持久化地址+端口号访问网页页面:http://10.10.10.14:30769/:
~~~ 访问到该内容
service/nginx-dep1 exposed
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通