如何更改Kubernetes主机路径配置器的安装路径? [英] How to change a Kubernetes hostpath-provisioner mount path?

查看:510
本文介绍了如何更改Kubernetes主机路径配置器的安装路径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用MicroK8的存储附加组件时,默认情况下,持久卷声明是在主机系统上的/var/snap/microk8s/common/default-storage下给定的存储.怎么改变?

With the storage add-on for MicroK8s, Persistent Volume Claims are by default given storage under /var/snap/microk8s/common/default-storage on the host system. How can that be changed?

查看hostpath-provisioner窗格的声明,表明有一个名为PV_DIR的环境设置,该环境设置指向/var/snap/microk8s/common/default-storage-似乎是我想要更改的内容,但是该怎么做?

Viewing the declaration for the hostpath-provisioner pod, shows that there is an environment setting called PV_DIR pointing to /var/snap/microk8s/common/default-storage - seems like what I'd like to change, but how can that be done?

不确定我是在问MicroK8的特定问题,还是一般情况下适用于Kubernetes的事情?

Not sure if I'm asking a MicroK8s specific question or if this is something that applies to Kubernetes in general?

$ 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>

推荐答案

HostPath

如果要向持久卷添加自己的路径,可以使用示例yamls

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: base                 
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: base
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: base
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

温馨提示

根据安装方法,您的Kubernetes群集可能会使用标记为默认值的现有StorageClass进行部署.然后,此默认StorageClass用于为不需要任何特定存储类的PersistentVolumeClaims动态设置存储.有关详细信息,请参见 PersistentVolumeClaim文档.

您可以使用

kubectl get storageclass

如果没有<your-class-name>(default),则意味着您需要创建自己的默认存储类.

If there is no <your-class-name>(default) that means You need to make your own default storage class.

将StorageClass标记为默认值:

Mark a StorageClass as default:

kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

完成默认设置后 storageClass 您可以使用这些Yaml来创建pv和pvc

After You make defualt storageClass You can use those yamls to create pv and pvc

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

每个pvc一个pv

基于 kubernetes文档

绑定后,无论绑定如何绑定,PersistentVolumeClaim绑定都是互斥的. PVC与PV的绑定是一对一的映射.

这篇关于如何更改Kubernetes主机路径配置器的安装路径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆