k8s查看命名空间下所有资源

1.kubectl命令

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

2.client-go 实现 demo

package main

import (
	"context"
	"fmt"
	"strings"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
	"k8s.io/apimachinery/pkg/runtime/schema"
	"k8s.io/client-go/dynamic"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
)

var allResource []*unstructured.Unstructured = []*unstructured.Unstructured{}
var namespace string = "default"

func main() {
	kconfig, _ := clientcmd.BuildConfigFromFlags("", "config")
	clientSet, _ := kubernetes.NewForConfig(kconfig)
	apiResourceLists, _ := clientSet.Discovery().ServerPreferredNamespacedResources()
	for _, apiResourceList := range apiResourceLists {
		for _, apiResource := range apiResourceList.APIResources {
			if supportsListOperation(apiResource.Verbs) {
				group, version := getGroupVersion(apiResourceList.GroupVersion)
				getResourceList(group, version, apiResource.Name, namespace)
			}
		}
	}
	for _, resource := range allResource {
		fmt.Printf("apiVersion: %s, Kind: %s, Name: %s\n", resource.GetAPIVersion(), resource.GetKind(), resource.GetName())
	}
}
func getResourceList(group, version, resource string, namespace string) {
	kconfig, _ := clientcmd.BuildConfigFromFlags("", "config")
	dynamicClient, _ := dynamic.NewForConfig(kconfig)
	gvr := schema.GroupVersionResource{
		Group:    group,
		Version:  version,
		Resource: resource,
	}
	ctx := context.Background()
	opts := metav1.ListOptions{}
	unstruct_List, _ := dynamicClient.Resource(gvr).Namespace(namespace).List(ctx, opts)
	for _, unstruct_item := range unstruct_List.Items {
		allResource = append(allResource, &unstruct_item)
	}

}
func getGroupVersion(gv string) (group, version string) {
	arr := strings.Split(gv, "/")
	if len(arr) == 1 {
		return "", arr[0]
	}
	return arr[0], arr[1]
}
func supportsListOperation(verbs []string) bool {
	for _, verb := range verbs {
		if verb == "list" {
			return true
		}
	}
	return false
}

### 回答1: 要查看所有命名空间,可以使用以下命令: ``` kubectl get namespaces ``` 这将列出所有可用的命名空间及其状态。如果您想查看更详细的信息,例如每个命名空间中的所有资源,请使用以下命令: ``` kubectl get all --all-namespaces ``` 这将显示所有命名空间中的所有 Kubernetes 资源。 ### 回答2: 要查看所有命名空间,可以使用KubernetesK8s)的命令行工具kubectl。kubectl是与Kubernetes集群通信的主要方式之一。 使用kubectl查看所有命名空间的命令是: ```shell kubectl get namespaces ``` 执行上述命令后,K8s会返回一个列表,其中包含所有已定义的命名空间。每个命名空间都具有名称和状态,可以了解到哪些命名空间是活动的、停用的或者其他状态。此外,还可以查看每个命名空间的创建时间。 kubectl get命令是K8s中最常用的命令之一,可以用来获取资源的信息。通过提供资源类型和名称,可以从命令行检索有关特定资源的详细信息。在这个场景中,我们使用了"namespaces"资源类型来获取所有命名空间的信息。 通过查看所有命名空间,可以了解到集群中有哪些命名空间正在使用,方便进行管理和调度。这对于监控资源的使用情况、隔离应用和组织资源非常有帮助。 ### 回答3: 在Kubernetes中,我们可以使用`kubectl`命令行工具来查看所有命名空间。 要查看所有命名空间,可以使用以下命令: ``` kubectl get namespaces ``` 执行该命令后,会返回所有命名空间的列表,包括默认的`default`命名空间以及其他用户自定义的命名空间。列表中会显示每个命名空间的名称、状态(如Active或Terminating)、Age(创建时间)以及标签等信息。 如果想要获取更详细的命名空间信息,可以使用以下命令: ``` kubectl describe namespaces ``` 执行该命令后,会返回一个更详细的命名空间信息的摘要,包括命名空间的名称、状态、标签、注释、资源配额等等。 另外,还可以使用以下命令来获取所有命名空间中的所有资源: ``` kubectl get all --all-namespaces ``` 执行该命令后,会返回所有命名空间中的所有资源,包括所有的Pod、Service、Ingress等等。这可以帮助我们更全面地了解集群中的资源分布情况。 总结起来,通过`kubectl get namespaces`命令可以简洁地列出所有命名空间,而使用`kubectl describe namespaces`命令可以获取更详细的命名空间信息。另外,可以使用`kubectl get all --all-namespaces`命令获取所有命名空间中的所有资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值