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
posted @ 2024-07-18 17:15  姬高波  阅读(18)  评论(0)    收藏  举报