用kubectl创建/查询时,kubernetes pv如何识别名称空间?

Dav*_*tin 5 kubernetes

我正在使用GKE和从gcloud组件安装的kubectl。我使用kubectl创建了一个具有命名空间范围的pv(gcePersistentDisk)。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cstor-cs-a-disk-david
  namespace: ns-david
spec:
  gcePersistentDisk:
    pdName: cstor-cs-a-disk-david
    fsType: ext4
    partition: 0
    readOnly: false
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  capacity:
    storage: 200Gi
Run Code Online (Sandbox Code Playgroud)

这表示使用create pv指定名称空间是有效的:http : //kubernetes.io/third_party/swagger-ui/#! / api%2Fv1 /
createNamespacedPersistentVolume

当我运行“ kubectl get pv”时,我看到了pv。

$ kubectl get pv
NAME                    LABELS    CAPACITY       ACCESSMODES   STATUS      CLAIM     REASON
cstor-cs-a-disk-david   <none>    214748364800   RWO           Available
Run Code Online (Sandbox Code Playgroud)

我没想到这是因为pv不是使用默认名称空间范围创建的。

如果我指定名称空间参数(有效或无效),也会发生相同的情况。

$ kubectl get namespaces
NAME          LABELS    STATUS
default       <none>    Active
kube-system   <none>    Active
ns-david      <none>    Active

$ kubectl get pv --namespace=demo
NAME                    LABELS    CAPACITY       ACCESSMODES   STATUS      CLAIM     REASON
cstor-cs-a-disk-david   <none>    214748364800   RWO           Available
Run Code Online (Sandbox Code Playgroud)

如果我针对此pv创建一个声明,并使用“ kubectl get pvc”对其进行查询,则找不到该声明,但是当我指定正确的名称空间时可以找到该声明。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cstor-cs-a-disk-claim-david
  namespace: ns-david
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi
  volumeName: cstor-cs-a-disk-david

$ kubectl get pvc
NAME      LABELS    STATUS    VOLUME

$ kubectl get pvc --namespace=ns-david
NAME                          LABELS    STATUS    VOLUME
cstor-cs-a-disk-claim-david   map[]     Bound     cstor-cs-a-disk-david
Run Code Online (Sandbox Code Playgroud)

pv是否具有名称空间范围或它们是全局的?

Sre*_*nis 8

像节点一样,PV的作用域不限于任何名称空间。但是,正如您所指出的, PVC是。

  • 我想知道为什么PV没有命名空间?好像很奇怪 (3认同)