如何更改Kubernetes主机路径供应器装载路径?
对于MicroK8s的存储附加组件,持久卷声明默认为主机系统上如何更改Kubernetes主机路径供应器装载路径?,kubernetes,microk8s,Kubernetes,Microk8s,对于MicroK8s的存储附加组件,持久卷声明默认为主机系统上/var/snap/MicroK8s/common/default storage下的给定存储。如何改变这一点 查看主机路径供应器pod的声明,会发现有一个名为PV_DIR的环境设置指向/var/snap/microk8s/common/default storage——这似乎是我想要更改的,但如何才能做到呢 不确定我问的是MicroK8s的具体问题,还是Kubernetes的问题 $ microk8s.kubectl describ
/var/snap/MicroK8s/common/default storage
下的给定存储。如何改变这一点
查看主机路径供应器
pod的声明,会发现有一个名为PV_DIR
的环境设置指向/var/snap/microk8s/common/default storage
——这似乎是我想要更改的,但如何才能做到呢
不确定我问的是MicroK8s的具体问题,还是Kubernetes的问题
$ microk8s.kubectl describe -n kube-system pod/hostpath-provisioner-7b9cb5cdb4-q5jh9
Name: hostpath-provisioner-7b9cb5cdb4-q5jh9
Namespace: kube-system
Priority: 0
Node: ...
Start Time: ...
Labels: k8s-app=hostpath-provisioner
pod-template-hash=7b9cb5cdb4
Annotations: <none>
Status: Running
IP: ...
IPs:
IP: ...
Controlled By: ReplicaSet/hostpath-provisioner-7b9cb5cdb4
Containers:
hostpath-provisioner:
Container ID: containerd://0b74a5aa06bfed0a66dbbead6306a0bc0fd7e46ec312befb3d97da32ff50968a
Image: cdkbot/hostpath-provisioner-amd64:1.0.0
Image ID: docker.io/cdkbot/hostpath-provisioner-amd64@sha256:339f78eabc68ffb1656d584e41f121cb4d2b667565428c8dde836caf5b8a0228
Port: <none>
Host Port: <none>
State: Running
Started: ...
Last State: Terminated
Reason: Unknown
Exit Code: 255
Started: ...
Finished: ...
Ready: True
Restart Count: 3
Environment:
NODE_NAME: (v1:spec.nodeName)
PV_DIR: /var/snap/microk8s/common/default-storage
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from microk8s-hostpath-token-nsxbp (ro)
/var/snap/microk8s/common/default-storage from pv-volume (rw)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
pv-volume:
Type: HostPath (bare host directory volume)
Path: /var/snap/microk8s/common/default-storage
HostPathType:
microk8s-hostpath-token-nsxbp:
Type: Secret (a volume populated by a Secret)
SecretName: microk8s-hostpath-token-nsxbp
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
$microk8s.kubectl description-n kube系统pod/hostpath-provisioner-7b9cb5cdb4-q5jh9
名称:hostpath-provisioner-7b9cb5cdb4-q5jh9
名称空间:kube系统
优先级:0
节点:。。。
开始时间:。。。
标签:k8s app=主机路径供应器
pod模板哈希=7b9cb5cdb4
注释:
状态:正在运行
IP:。。。
IPs:
IP:。。。
控制人:ReplicaSet/hostpath-provisioner-7b9cb5cdb4
容器:
主机路径供应器:
容器ID:containerd://0b74a5aa06bfed0a66dbbead6306a0bc0fd7e46ec312befb3d97da32ff50968a
图片:cdkbot/hostpath-provisioner-amd64:1.0.0
映像ID:docker.io/cdkbot/hostpath-provisioner-amd64@sha256:339F78EABC68FFB1656D584E41F1121CB4D2B667565428C8DDE836CAF5B8A0228
端口:
主机端口:
状态:正在运行
开始:。。。
最后状态:终止
原因:未知
退出代码:255
开始:。。。
完成:。。。
准备好了吗
重新启动计数:3
环境:
节点名称:(v1:spec.nodeName)
PV_DIR:/var/snap/microk8s/通用/默认存储
挂载:
/来自microk8s主机路径令牌nsxbp(ro)的var/run/secrets/kubernetes.io/serviceCount
/var/snap/microk8s/来自pv卷(rw)的公共/默认存储
条件:
类型状态
初始化为True
准备好了吗
集装箱准备好了吗
播客预定为真
卷数:
光伏容量:
类型:主机路径(裸主机目录卷)
路径:/var/snap/microk8s/common/default存储
主机路径类型:
microk8s主机路径令牌nsxbp:
类型:Secret(由Secret填充的卷)
SecretName:microk8s主机路径令牌nsxbp
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
HostPath
如果要将自己的路径添加到persistentVolume,可以使用value
示例YAML
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: base
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate
善意提醒
根据安装方法的不同,Kubernetes群集可能与标记为默认的现有StorageClass一起部署。然后,使用此默认StorageClass为不需要任何特定存储类的PersistentVolumeClaims动态调配存储。有关详细信息,请参阅
您可以使用检查storageclass
kubectl get storageclass
如果没有(默认)
,则意味着您需要创建自己的默认存储类
将StorageClass标记为默认值:
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
每个pvc一个pv
基于
绑定后,PersistentVolumeClaim绑定是独占的,无论它们是如何绑定的PVC到PV绑定是一对一映射
你能告诉我你是如何安装hostpath的吗?基于您可以用来为pv创建自己路径的文档。对于MicroK8s,它是通过命令
MicroK8s与存储插件一起安装的。启用存储
。感谢您提供的链接,我将尝试hostPath.path
声明。您好@Bjorn Thor Jonsson,它起作用了吗?还是您仍然存在此问题?我能够使用自定义spec.hostPath.path值和引用PV声明的storageClassName的持久卷声明应用持久卷声明。但当我尝试应用另一个引用相同PV名称的PVC时,它只是挂在MicroK8s中。我猜每个PVC可以有一个PV,但这似乎很奇怪。感谢您的澄清,特别是引用“PVC到PV绑定是一对一映射”。
kubectl get storageclass
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume3
labels:
type: local
spec:
storageClassName: ""
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data2"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim3
spec:
storageClassName: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi