我正在尝试使用Kubernetes Persistent Volumes进行一些实验,我在Kubernetes文档中找不到清晰的解释,并且该行为不是我所期望的,所以我想在这里询问。
我配置了“持续数量”和“持续数量声明” ...
kind: PersistentVolume
apiVersion: v1
metadata:
name: store-persistent-volume
namespace: test
spec:
storageClassName: hostpath
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/Volumes/Data/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: store-persistent-volume-claim
namespace: test
spec:
storageClassName: hostpath
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
以及以下部署和服务配置。
kind: Deployment
apiVersion: apps/v1beta2
metadata:
name: store-deployment
namespace: test
spec:
replicas: 1
selector:
matchLabels:
k8s-app: store
template:
metadata:
labels:
k8s-app: store
spec:
volumes:
- name: store-volume
persistentVolumeClaim:
claimName: store-persistent-volume-claim
containers:
- name: store
image: localhost:5000/store
ports:
- containerPort: 8383
protocol: TCP
volumeMounts:
- name: store-volume
mountPath: /data
---
#------------ Service ----------------#
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: store
name: store
namespace: test
spec:
type: LoadBalancer
ports:
- port: 8383
targetPort: 8383
selector:
k8s-app: store
如您所见,我将“ / Volumes / Data / data”定义为“ Persistent Volume”,并希望将其安装到“ / data”容器中。....
因此,我假设主机的'/ Volumes / Data / data'中的内容应该在容器的'/ data'目录中可见?
这个假设正确吗?
因为这绝对不是现在。...
我的第二个假设是,我在'/ data'中保存的内容应该在主机上可见,这也没有发生。
我从Kubernetes控制台中看到一切正常启动(持久卷,声明,部署,Pod,服务...)
我完全理解持久性卷概念吗?
PS。我正在带有Docker(18.05.0-ce-mac67(25042)-Channel edge)的Mac上尝试此操作,也许它在Mac上不应该工作?
寻求答案
答案 0 :(得分:0)
通过以下命令,您可以检查您的持久量和声明:
kubectl get pv
kubectl get pvc
并查看您定义的卷是否与声明绑定。
您的广告连播开始后,您可以进入容器并在/data
上查看数据
kubectl exec -ti <your_pod> -- bash
答案 1 :(得分:0)
假设您使用的是多节点Kubernetes集群,您应该能够在运行Pod的特定工作节点上的/ Volumes / Data / data 上本地查看装载的数据
您可以使用命令kubectl get pods -o wide -n test
请注意,根据kubernetes文档,HostPath(仅用于单节点测试–不以任何方式支持本地存储,并且在多节点集群中将不起作用)PersistentVolume
在我的情况下确实有效。
答案 2 :(得分:0)
就像上面的家伙一样。您需要运行“ kubectl get po -n test -o wide”,您将看到托管Pod的节点。然后,如果您对该工作人员进行SSH,则可以看到该卷
答案 3 :(得分:0)
使用主机路径时,应在运行Pod的工作程序节点中检查此'/ data'。