我有一个单节点Kubernetes集群。我希望我制作的Pod可以访问本地计算机(群集的主机)上的/ mnt / galahad。
这是我的Kubernetes配置yaml:
apiVersion: v1
kind: Pod
metadata:
name: galahad-test-distributor
namespace: galahad-test
spec:
volumes:
- name: place-for-stuff
hostPath:
path: /mnt/galahad
containers:
- name: galahad-test-distributor
image: vergilkilla/distributor:v9
volumeMounts:
- name: place-for-stuff
mountPath: /mnt
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
我像这样启动我的吊舱:
kubectl apply -f ./create-distributor.yaml -n galahad-test
我将终端插入到我的新荚中
kubectl exec -it galahad-test-distributor -n galahad-test -- /bin/bash
我去了/ mnt,但没有/ mnt / galahad的内容。我在主机/ mnt / galahad文件夹中创建了一个新文件-未反映在pod中。我如何实现此功能以拥有主机路径文件/等。反映在豆荚里?是否可以通过我在这里尝试的某种简单方法(在没有创建单独的PersistentVolumes和PersistentVolumeRequests的情况下按每个pod定义它)来实现?
答案 0 :(得分:2)
您的Yaml文件看起来不错。
使用此配置:
apiVersion: v1
kind: Pod
metadata:
name: galahad-test-distributor
namespace: galahad-test
spec:
volumes:
- name: place-for-stuff
hostPath:
path: /mnt/galahad
containers:
- name: galahad-test-distributor
image: busybox
args: [/bin/sh, -c,
'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
volumeMounts:
- name: place-for-stuff
mountPath: /mnt
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
我运行了这个程序,一切按预期进行:
>>> kubectl apply -f create-distributor.yaml # side node: you don't need
# to specify the namespace here
# since it's inside the yaml file
pod/galahad-test-distributor created
>>> touch /mnt/galahad/file
>>> kubectl -n galahad-test exec galahad-test-distributor ls /mnt
file
确定要在正确的位置添加文件吗?例如,如果您在VM(例如minikube)中运行群集,请确保将文件添加到VM中,而不是在托管VM的计算机上。