kubernetes - 如何更改Kubernetes主机路径配置器的安装路径?

标签 kubernetes microk8s

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

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

不知道我是在问MicroK8的特定问题还是一般情况下适用于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>

最佳答案

主机路径

如果要将自己的路径添加到persistentVolume中,则可以使用spec.hostPath.path

例子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

谨在此提醒

Depending on the installation method, your Kubernetes cluster may be deployed with an existing StorageClass that is marked as default. This default StorageClass is then used to dynamically provision storage for PersistentVolumeClaims that do not require any specific storage class. See PersistentVolumeClaim documentation for details.



您可以使用以下方法检查您的存储类
kubectl get storageclass

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

将StorageClass标记为默认值:
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

完成defualt storageClass之后,您可以使用这些Yamls创建pv和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 documentation

Once bound, PersistentVolumeClaim binds are exclusive, regardless of how they were bound. A PVC to PV binding is a one-to-one mapping.

关于kubernetes - 如何更改Kubernetes主机路径配置器的安装路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615019/

相关文章:

Jenkins 管道: kubectl command not found

docker - docker 容器中的 microk8s

kubernetes - Ingress - 简单的扇出配置不起作用

kubernetes - 我可以在 Kubernetes 中设置默认命名空间吗?

kubernetes - 如何让 kubectl 日志与日志一起输出 pod 名称?

Microk8s 中的 Minio 部署无法正常启动

kubernetes - nginx 到上游 headless (headless)服务的连接被拒绝,但我可以从 webapp 容器中 curl

windows - Lens K8s 无法连接到 Windows 10 中的终端

kubernetes - 更改 Kubernetes 中的 CPU 管理器策略

kubernetes - 为什么许多官方 Helm 图表在Values.yaml中都包含密码/凭据?