【kubernetes】k8s数据卷,pod挂载本地路径

环境:Linux服务器

配置挂载目录

思路:在部署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检查挂载是否成功~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容