gpt4 book ai didi

kubernetes - hostPath 作为 Kubernetes 中的卷

转载 作者:行者123 更新时间:2023-12-04 12:16:25 25 4
gpt4 key购买 nike

我正在尝试将 hostPath 配置为 kubernetes 中的卷。我已经登录到 VM 服务器,在那里我通常使用 kubernetes 命令,例如 kubectl。

下面是 pod yaml:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: helloworldanilhostpath
spec:
replicas: 1
template:
metadata:
labels:
run: helloworldanilhostpath
spec:
volumes:
- name: task-pv-storage
hostPath:
path: /home/openapianil/samplePV
type: Directory
containers:
- name: helloworldv1
image: ***/helloworldv1:v1
ports:
- containerPort: 9123
volumeMounts:
- name: task-pv-storage
mountPath: /mnt/sample

在 VM 服务器中,我创建了“/home/openapianil/samplePV”文件夹,其中有一个文件。它有一个 sample.txt 文件。

一旦我尝试创建此部署。它不会发生错误 -
警告 FailedMount 28s(x7 over 59s)kubelet,aks-nodepool1-39499429-1 MountVolume.SetUp 卷“task-pv-storage”失败:hostPath 类型检查失败:/home/openapianil/samplePV 不是目录。

任何人都可以帮助我理解这里的问题。

最佳答案

hostPath 类型卷是指您的 Pod 计划运行的节点(VM/机器)上的目录(在本例中为 aks-nodepool1-39499429-1)。所以你至少需要在那个节点上创建这个目录。

为了确保您的 Pod 始终在该特定节点上进行调度,您需要设置 spec.nodeSelector 在 PodTemplate 中:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: helloworldanilhostpath
spec:
replicas: 1
template:
metadata:
labels:
run: helloworldanilhostpath
spec:
nodeSelector:
kubernetes.io/hostname: aks-nodepool1-39499429-1
volumes:
- name: task-pv-storage
hostPath:
path: /home/openapianil/samplePV
type: Directory
containers:
- name: helloworldv1
image: ***/helloworldv1:v1
ports:
- containerPort: 9123
volumeMounts:
- name: task-pv-storage
mountPath: /mnt/sample

在大多数情况下,使用这种类型的卷是一个坏主意;有一些特殊的用例,但你的机会不是其中之一!

如果出于某种原因需要本地存储,那么更好的解决方案是使用 local 持久卷。

关于kubernetes - hostPath 作为 Kubernetes 中的卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50001403/

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