K8S:NFS存储小项目
NFS存储小项目
目的:实现NFS挂载、然后通过haproxy访问、代理到我的NodePort的服务
1、node节点
node节点 10.0.0.32 10.0.0.33
2、haproxy代理配置
[root@ubuntu2204 ~]#vim /etc/haproxy/haproxy.cfg
listen k8s-cluster-nfs-test
bind 10.0.0.205:80
mode tcp
balance roundrobin
server 10.0.0.32 10.0.0.32:80 check inter 3s fall 3 rise 5
server 10.0.0.33 10.0.0.33:80 check inter 3s fall 3 rise 5
3、编写NFS存储+Deployment + nodePort 格式的yaml文件
(修改NodePort暴漏映射端口和NFS服务器的ip)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: ng-deploy-80
template:
metadata:
labels:
app: ng-deploy-80
spec:
containers:
- name: ng-deploy-80
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: /usr/share/nginx/html/mysite
name: my-nfs-volume
volumes:
- name: my-nfs-volume
nfs:
server: 10.0.0.206
path: /data/k8sdata
---
apiVersion: v1
kind: Service
metadata:
name: ng-deploy-80
spec:
ports:
- name: http
port: 81
targetPort: 80
nodePort: 30016
protocol: TCP
type: NodePort
selector:
app: ng-deploy-80
4、NFS服务
10.0.0.206
apt install nfs-server
mkdir /data/k8sdata
vim /etc/exports
/data/k8sdata 10.0.0.0/24(rw,no_root_squash)
/data/k8sdata *(rw,no_root_squash)
systemctl restart nfs-server
exportfs
5、放入图片测试
放入图片到NFS服务器目录:/data/k8sdata/
图片名:1.png
6、访问图片地址
10.0.0.206/mysite/1.png
7、排查错误
kubectl get svc #查看nodePort端口
curl 10.0.0.32:30016 #从负载均衡器curl nodePort端口
kubectl get ep #查看后在k8s集群中curl看看通不通
8、多个volume挂载
如果多个存储挂载、或者使用ceph、也可以
下面是yaml案例:多个挂载就使用多个文件、后端NFS一定要创建好目录
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-site2
spec:
replicas: 1
selector:
matchLabels:
app: ng-deploy-81
template:
metadata:
labels:
app: ng-deploy-81
spec:
containers:
- name: ng-deploy-81
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: /usr/share/nginx/html/pool1
name: my-nfs-volume-pool1
- mountPath: /usr/share/nginx/html/pool2
name: my-nfs-volume-pool2
volumes:
- name: my-nfs-volume-pool1
nfs:
server: 172.31.7.109
path: /data/k8sdata/pool1
- name: my-nfs-volume-pool2
nfs:
server: 172.31.7.109
path: /data/k8sdata/pool2
---
apiVersion: v1
kind: Service
metadata:
name: ng-deploy-81
spec:
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30017
protocol: TCP
type: NodePort
selector:
app: ng-deploy-81

浙公网安备 33010602011771号