K8S部署nginx并且使用NFS存储数据

安装NFS

在master安装NFS

systemctl start nfs-server

修改配置 /etc/exports

/data *(rw,no_root_squash,no_all_squash,sync)

目录为 /data 允许所有地址访问

验证下

[root@master nginx]# showmount -e 192.168.57.61 
Export list for 192.168.57.61:
/data *

共享可以正常访问

K8S部署nginx

新建 nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
      volumes:
      - name: data
        nfs:
          path: /data
          server: 192.168.57.61

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  ports:
  - port: 9000
    name: nginx
    protocol: TCP
    targetPort: 80
    nodePort: 31090
  selector:
    app: nginx
  type: NodePort
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany 
  nfs:
    path: /data
    server: 192.168.57.61

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-nfs
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

在deployment 配置中

        volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
      volumes:
      - name: data
        nfs:
          path: /data
          server: 192.168.57.61

这部分代表 容器内的 /usr/share/nginx/html 目录

挂到NFS 的 /data目录

NFS服务器的地址为 192.168.57.61

在Service中

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  ports:
  - port: 9000
    name: nginx
    protocol: TCP
    targetPort: 80
    nodePort: 31090
  selector:
    app: nginx
  type: NodePort

ports:port:9000 代表pod之间通信的端口为9000

protocol:TCP 代表只允许TCP连接

targetPort:80 代表pod内的80端口

nodePort:31090 代表映射到集群外的31090端口,刚才提到的80端口

运行

kubectl apply -f  nginx.yaml 

查看pod状态(由于我没有设置namespace 就是默认的命名空间 不用指定 -n )

[root@master nginx]# kubectl get pod 
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5d7bfd6588-6g5mn   1/1     Running   0          48m
nginx-deployment-5d7bfd6588-7sz4p   1/1     Running   0          48m
nginx-deployment-5d7bfd6588-vkbvq   1/1     Running   0          48m

测试

挂载NFS

 mount -t nfs -o rw 192.168.57.61:/data /data1
echo "11111" >> /data1/index.html 

访问:http://192.168.57.76:31090/

 

可以看到1111 已经显示在浏览器中了

index.html已经在容器内了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java-superchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值