kubernetes 获取特定命名空间下的所有资源不会显示k8s集群中已部署的资源

4bbkushb  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(130)

我在k8s集群中的命名空间foo下部署了一个简单的ResourceQuota对象:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-resource-quota
  namespace: foo
spec:
  hard:
    pods: "2"
    requests.cpu: "1"
    requests.memory: 500Mi
    limits.cpu: "1"
    limits.memory: 500Mi

字符串
我可以在命名空间下看到部署的配额(quotaresourcequota的简写):

kubectl get quota -n foo
NAME                AGE   REQUEST                                                  LIMIT
my-resource-quota   5m   pods: 0/2, requests.cpu: 0/1, requests.memory: 0/500Mi   limits.cpu: 0/1, limits.memory: 0/500Mi


我仔细检查了ResourceQuota是一个命名空间对象。

kubectl api-resources | grep quota
resourcequotas     quota        v1         true         ResourceQuota


上面输出中的true表示它是一个命名空间对象。
目前,我只在名称空间foo下部署了quota对象。
当我尝试获取命名空间foo下的所有资源时,我希望输出也会显示我部署的配额对象,但输出显示“No resources found”:

kubectl get all -n foo
No resources found in foo namespace.


这听起来像是k8s API的矛盾行为,为什么呢?

jobtbby3

jobtbby31#

不,这不是真的,kubectl get all是一个假朋友,它不显示命名空间中的所有内容,只有podsdeployemnetsreplicasetservices

kx5bkwkv

kx5bkwkv2#

命令kubectl get all -n <namespace>不会显示命名空间中运行的自定义资源
根据Github评论;
kubectl api-resources枚举群集中可用的资源类型。这意味着您可以将它与kubectl get结合起来,实际列出名称空间中每个资源类型的每个示例;

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>

字符串
也可以尝试使用kubectl krew插件,您可以获得几乎所有的get-all资源。包括configmap、secret、endpoints等。
详细内容请参考Abhishek AhlawatStudytonight上的**帖子。

相关问题