1、场景

我们在使用docker run启动Docker的时候,可以直接指定-v参数,将容器中需要持久化的目录持久化到本地目录。就是将每个容器要挂载的目录,映射到该容器所在宿主机指定的目录,从而完成挂载。在k8s中,引入了存储层的概念,这个存储层的存储空间,所有结点共享,是分布式存储。一个结点挂掉,它上面的 Pod 进行故障转移后,依旧能继续从共享的存储空间中,访问之前的数据。

2、搭建nfs环境

直接启动docker的挂载方式:

docker run -d -p 80:80 -p 8080:8080 --net=host -v /data/logs:/logs -v /etc/timezone/timezone:/etc/timezone:ro --name nginx nginx

主从节点的nfs环境搭建
https://blog.csdn.net/qq_26993175/article/details/125415430

k8s的pods中挂载:
a、修改Deployment.yaml
增加红框里的两部分内容:
在这里插入图片描述

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      volumes: # 映射Pod对外的挂载
        - name: uploadfile # Pod要挂载的名称指代,即指向volumeMounts的name
          nfs: # 采用nfs挂载
            server: 192.168.1.15 # Pod要挂载的宿主机ip
            path: /data/upload # Pod挂载到外部宿主机上的目录
        - name: timezone
          hostPath: # 采用主机目录的挂载方式
            path: /etc/timezone
            type: Directory ###这个类型在下面会有介绍
      containers:
        - name: sms-web-api
          image: '192.168.1.15:20001/library/nginx:v6'
          ports:
            - containerPort: 4008
              protocol: TCP
          resources: {}
          volumeMounts: # Pod的数据卷挂载
            - name: uploadfile # Pod的数据卷挂载到外面的名称
              mountPath: /data/upload # Pod的内部要挂载出去的目录
            - name: timezone
              mountPath: /etc/timezone
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

修改完成后应用即可。本文并未涉及PV,PVC方式挂载。有兴趣可以参考下面两个链接。

挂载卷类型介绍:
https://blog.csdn.net/weixin_46069582/article/details/114069043

PV、PVC方式介绍:
https://blog.csdn.net/Crezfikbd/article/details/124569094

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐