环境: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检查挂载是否成功~
网友评论