列出与头盔部署或图表相关的所有kubernetes资源

时间:2020-10-12 21:49:21

标签: kubernetes kubernetes-helm kubectl

我使用helm install部署了头盔图表,此后,我想查看与该部署相关的pod / services / cms是否出现或失败。有办法看到吗?

使用kubectl get pods并在名称中使用greping可以,但是它不会显示在部署此头盔图表时已部署的服务和其他资源。

5 个答案:

答案 0 :(得分:2)

helm get manifest RELEASE_NAME
helm get all RELEASE_NAME

https://helm.sh/docs/helm/helm_get_manifest/

答案 1 :(得分:1)

通过发行:

kubectl get all -n <namespace> | grep ...

您将仅查询以下资源:

  • pod
  • 服务
  • daemonset
  • 部署
  • 复制包
  • statefulset
  • 工作
  • cronjobs

我建议您阅读本文以获取更多说明:

使用上面链接中的示例,您可以通过发出以下命令来查询API的所有资源:

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

此命令将向API查询群集中的所有资源类型,然后按label分别查询每个资源。

您可以使用labels在Helm图表中创建资源,然后通过指定-l LABEL=VALUE来查询API。


示例

假设您按照以下Helm图表进行配置

  • $ helm install awesome-nginx stable/nginx-ingress

此图表已弃用,但仅出于示例目的。

您可以使用以下方法查询API的所有资源:

kubectl api-resources --verbs=list -o name | xargs -n 1 kubectl get --show-kind -l release=awesome-nginx --ignore-not-found -o name

其中:

  • LABEL <-发布
  • VALUE <-awesome-nginx(发行名称)

之后,您应该可以看到:

endpoints/awesome-nginx-nginx-ingress-controller
endpoints/awesome-nginx-nginx-ingress-default-backend
pod/awesome-nginx-nginx-ingress-controller-86b9c7d9c7-wwr8f
pod/awesome-nginx-nginx-ingress-default-backend-6979c95c78-xn9h2
serviceaccount/awesome-nginx-nginx-ingress
serviceaccount/awesome-nginx-nginx-ingress-backend
service/awesome-nginx-nginx-ingress-controller
service/awesome-nginx-nginx-ingress-default-backend
deployment.apps/awesome-nginx-nginx-ingress-controller
deployment.apps/awesome-nginx-nginx-ingress-default-backend
replicaset.apps/awesome-nginx-nginx-ingress-controller-86b9c7d9c7
replicaset.apps/awesome-nginx-nginx-ingress-default-backend-6979c95c78
podmetrics.metrics.k8s.io/awesome-nginx-nginx-ingress-controller-86b9c7d9c7-wwr8f
podmetrics.metrics.k8s.io/awesome-nginx-nginx-ingress-default-backend-6979c95c78-xn9h2
rolebinding.rbac.authorization.k8s.io/awesome-nginx-nginx-ingress
role.rbac.authorization.k8s.io/awesome-nginx-nginx-ingress

您可以通过更改-o参数来修改输出。


其他资源:

答案 2 :(得分:1)

如果您使用 Helm3:

要列出由 helm 管理的所有资源,请使用带有标签 app.kubernetes.io/managed-by=Helm 的标签选择器:

$ kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm'

列出由 helm 管理的所有资源和特定版本的一部分:(edit release-name)

kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=release-name'

答案 3 :(得分:0)

kubectl get all -n <namespace>  | grep <helm chart keyword, ex: kibana, elasticsearch>

应列出在特定名称空间中由舵图创建的所有资源

答案 4 :(得分:0)

helm status RELEASE_NAME

此命令显示命名发行版的状态。状态包括 的:

  • 最后部署时间
  • 版本所在的
  • k8s名称空间
  • 发布状态(可以是:未知,已部署,已卸载,已取代,失败,正在卸载,挂起安装,挂起升级或 未完成回滚)
  • 此版本组成的资源列表,按种类排序
  • 有关上次测试套件运行的详细信息(如果适用)
  • 图表提供的其他注释

用法:掌舵状态RELEASE_NAME [标志]

Official docs

还要注意,头盔在其管理的资源see here上放置了一些已知的标签/注释。您可以将其与kubectl get ... -l ...

一起使用