配置挂载目录
思路:在部署pod的节点(宿主机)配置同样的挂载路径到一个固定的服务器(目标服务器),这样不管pod在哪里跑,文件的保存路径都是不变的

1.安装sshfs

yum install -y sshfs

2.添加ssh认证

把节点的ssh公钥拷贝到目标服务器的~/.ssh/authorizedkeys中

3.挂载目录

在节点服务器执行:

sshfs  USER@目标服务器IP:/path/to/other/server   /path/to/local

如果遇到错误
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
执行

sshfs  USER@目标服务器IP:/path/to/other/server   /path/to/local  -o nonempty

配置deploy的挂载目录

注意:挂载目录应该跟你要使用的路径一致

apiVersion: apps/v1
kind: Deployment
metadata:
  name: volume-test               #Deployment名称
spec:
  replicas: 2 #目标副本数量
  minReadySeconds: 50  # 这里需要估一个比较合理的值,从容器启动到应用正常提供服务
  strategy:
    rollingUpdate:
      maxSurge: 1      #滚动升级时最大同时升级1个pod
      maxUnavailable: 1 #滚动升级时最大允许不可用的pod个数
  template:
    metadata:
      labels:
        app: volume-test  #模板名称
    spec: #定义容器模板,该模板可以包含多个容器
      containers:
        - name: volume-test
          image: 10.0.0.1:5000/volume-test:v1
          args: ["--spring.profiles.active=test"]  #给ENTRYPOINT命令的传参
          imagePullPolicy: Always
          volumeMounts:        #容器内挂载点
          - mountPath: /data/resources/header
            name: pangu-data        #必须有名称
      nodeSelector:  #节点选择器
          type: volume-data  #节点的label,将根据这个label去选择节点
      volumes:
         - name: volume-data        #跟上面的名称对应
           hostPath:
              path: /data/resources/header      #宿主机挂载点
  selector:
      matchLabels:
         app: volume-test

然后kubectl create -f deploy.yaml完成部署,进入pod检查挂载是否成功~

作者:熊本猫
链接:https://www.jianshu.com/p/f7a7ea92bc3d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。