gpt4 book ai didi

docker - kubernetes 添加本地文件到pod

转载 作者:行者123 更新时间:2023-12-03 16:01:52 30 4
gpt4 key购买 nike

我正在尝试在 kubernetes 中构建一个 pod,该 pod 将文件从我的本地系统挂载到 pod,方式类似于在 docker-compose 中挂载卷。文件

我尝试了以下操作,试图挂载本地文件夹 ./test和文件到 /blah/ 下的 pod文件夹。然而,kubernetes 提示 MountVolume.SetUp failed for volume "config-volume" : hostPath type check failed: ./test/ is not a directory
这是我的 yaml文件。我错过了什么吗?

kind: Service
metadata:
name: vol-test
labels:
app: vol-test
spec:
type: NodePort
ports:
- port: 8200
nodePort: 30008
selector:
app: vol-test

---

apiVersion: apps/v1
kind: Deployment
metadata:
name: vol-test
spec:
replicas: 1
selector:
matchLabels:
app: vol-test
template:
metadata:
labels:
app: vol-test
spec:
containers:
- name: vol-test
image: nginx
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: config-volume
mountPath: /blah/
ports:
- containerPort: 8200
volumes:
- name: config-volume
hostPath:
path: ./test/
type: Directory

最佳答案

如果您只是想将文件或目录传递给 Pod 以读取配置值(我根据您选择的卷挂载 config-volume 假设)并且不需要更新文件/目录,那么您可以将ConfigMap 中的文件,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-router-config
data:
nginx.conf: |
worker_processes 2;
user nginx;
events {
worker_connections 1024;
}

http {
include mime.types;
charset utf-8;
client_max_body_size 8M;

server {
server_name _;
listen 80 default_server;

location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://drupal:80/ ;
proxy_redirect default;
}

location /api/ {
proxy_pass http://api-gateway:8080/ ;
proxy_redirect default;
}
}
}

或者,您可以从运行 kubectl 的位置导入文件内容。命令并执行(假设文件名是 nginx.conf ):
kubectl create configmap nginx-router-config --from-file=nginx.conf

然后,您可以通过添加 volumes 挂载文件和 volumeMount到部署规范:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-router
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: nginx-router-config
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
volumes:
- name: nginx-router-config
configMap:
name: nginx-router-config
items:
- key: nginx.conf
path: nginx.conf

如果您确实想要对文件进行读写访问,那么您可以按照其他答案的建议使用 PersistentVolume 和 PersistentVolumeClaim,尽管我不建议使用 hostPath如果您有多个工作节点。

关于docker - kubernetes 添加本地文件到pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60571150/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com