当使用 kubectl created/queried 时,kubernetes pv 是否识别名称空间?
does kubernetes pv recognize namespace when created/queried with kubectl?
我正在使用 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
这表示使用 create pv 指定命名空间 is/was 有效:
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
我没想到会这样,因为 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
如果我创建针对此 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
pv 有命名空间范围还是全局的?
PV 与节点一样,不受任何命名空间的限制。但是,正如您 noted PVC 一样。
pv 和命名空间属于 Cluster,因此它们不是 NameSpaced。
PVC 是 NameSpaced
以上解决方案已link到kube docs查看列表。
但直接在此处提供命令(以防快速检查而不是通过文档)
查看哪些 Kubernetes 资源在命名空间中,哪些不在:
# In a namespace
kubectl api-resources --namespaced=true
# Not in a namespace
kubectl api-resources --namespaced=false
谢谢!
我正在使用 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
这表示使用 create pv 指定命名空间 is/was 有效:
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
我没想到会这样,因为 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
如果我创建针对此 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
pv 有命名空间范围还是全局的?
PV 与节点一样,不受任何命名空间的限制。但是,正如您 noted PVC 一样。
pv 和命名空间属于 Cluster,因此它们不是 NameSpaced。 PVC 是 NameSpaced
以上解决方案已link到kube docs查看列表。 但直接在此处提供命令(以防快速检查而不是通过文档)
查看哪些 Kubernetes 资源在命名空间中,哪些不在:
# In a namespace
kubectl api-resources --namespaced=true
# Not in a namespace
kubectl api-resources --namespaced=false
谢谢!