当前位置: 首页 > 知识库问答 >
问题:

Kubernetes卷中的AccessModes是什么

何博涛
2023-03-14

我试图理解KubernetesPersistentVolumes的访问模式。

根据Kubernetes文档,访问模式为:

ReadWriteOnce -- the volume can be mounted as read-write by a single node
ReadOnlyMany -- the volume can be mounted read-only by many nodes
ReadWriteMany -- the volume can be mounted as read-write by many nodes

卷插件hostpath支持readwriteonce

有人能解释一下这里发生了什么吗?如果可能的话,请给我提供例子/博客,看看RWO、RWX、ROX之间的区别?大多数的博客,只是简单地介绍了PV、PVC和访问方式。

apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  nodeName: controlplane
  containers:
  - image: nginx
    name: pod2
    volumeMounts:
      - name: vol
        mountPath: /usr/share/nginx/html
  volumes:
  - name: vol
    persistentVolumeClaim:
      claimName: pvc
---
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  nodeName: worker1
  containers:
  - image: nginx
    name: pod1
    volumeMounts:
      - name: vol
        mountPath: /usr/share/nginx/html
  volumes:
  - name: vol
    persistentVolumeClaim:
      claimName: pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /tmp/test
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

共有1个答案

祁飞翰
2023-03-14

>

  • 请注意,您不应该在控制平面上运行pods,因此您应该在yaml文件中用nodename:controlplane替换nodename:worker2。通常您需要使用容忍来在控制平面上运行pod,因为它有一个污点,无法在其上运行常规pod...

    我在Google Kubernetes Engine(gke)上尝试了yaml,我不得不替换nodename字段来使其工作:

    diff example.yaml example-gke.yaml 
    6c6
    <   nodeName: controlplane
    ---
    >   nodeName: gke-qserv-dev-worker-pool-a64a-01bc5238-3zl9 
    23c23
    <   nodeName: worker1
    ---
    >   nodeName: gke-qserv-dev-worker-pool-a64a-01bc5238-23t3 
    

    正如您所看到的,k8s拒绝创建pod2:

    kubectl get pods
    NAME                                   READY   STATUS              RESTARTS   AGE
    pod1                                   1/1     Running             0          6m27s
    pod2                                   0/1     ContainerCreating   0          6m27s
    
    kubectl describe pod pod2 | tail -n 1
      Warning  FailedAttachVolume  7m28s                 attachdetach-controller                                Multi-Attach error for volume "pvc-2fb657ce-4678-4e92-9f64-e4b46b9a3ec7" Volume is already used by pod(s) pod1
    

  •  类似资料:
    • 我试图更深入地了解Docker的卷,我很难弄清楚以下方面的差异/用例: docker volume create(docker卷创建)命令 docker run-v/path:/host\u路径 Dockerfile文件中的卷条目 我特别不理解如果将卷条目与v标志结合在一起会发生什么。

    • 本文向大家介绍什么是卷积?相关面试题,主要包含被问及什么是卷积?时的应答技巧和注意事项,需要的朋友参考一下 对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

    • 我找到的最接近的答案是这样的。 但我想知道的是,Dockerfile卷命令会被Kubernetes完全忽略吗?或者数据将被持久化到两个地方?一个用于docker卷(在主机中哪个豆荚运行),另一个是Kubernetes的PV? 之所以这样问,是因为我从docker hub部署了一些容器,其中包含VOLUME命令。同时,我也把PVC贴在我的豆荚上。我在考虑是否会在节点中创建本地卷(docker卷,而不

    • 我正在将堆栈转换为K8S。数据库需要持久存储。 我使用了 pv.yaml(根据@Whites11的回答进行了编辑): 我进入GUI上的PVC页面,并手动向索赔添加了一个卷(基于@Whites11的反馈)。我可以看到PVC已经更新了体积,但它仍然悬而未决。 意识到自从进行@Whites11建议的更改后,pod中的原始错误消息已经更改。现在是“persistentvolume”pvvolume“not

    • 本文向大家介绍卷积神经网络的卷积是什么意思? 相关面试题,主要包含被问及卷积神经网络的卷积是什么意思? 时的应答技巧和注意事项,需要的朋友参考一下   答:对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源