【问题标题】:Kubernetes: print namespace in helm status outputKubernetes:在掌舵状态输出中打印命名空间
【发布时间】:2019-09-24 17:31:53
【问题描述】:

helm status mychart 的输出中,它显示 NAMESPACE 部署在哪个图表中,即 NAMESPACE: default

#=> helm status mychart
LAST DEPLOYED: Tue Sep 24 21:32:45 2019
NAMESPACE: default
STATUS: DEPLOYED
==> v1/Pod(related)
NAME                                     READY  STATUS   RESTARTS  AGE
nginx-web-stg-55f55958-v2cxm             0/1    Pending  0         28m
tomcat-api-stg-6d54498fdd-cqctr          1/1    Running  0         28m

如果我运行 kubectl get all -A,它会显示 NAMESPACE 以及资源名称-

#=> kubectl get all -A
NAMESPACE           NAME                             READY    STATUS  RESTARTS  AGE
nginx         pod/nginx-web-stg-55f55958-v2cxm        0/1     Pending    0      20m
tomcat        pod/tomcat-api-stg-6d54498fdd-cqctr     1/1     Running    0      20m

在 Kubectl 输出中,NAMESPACE 列包含在输出中,但不包含在 helm status mychart 中。我希望在 helm status mychart 输出中与 NAMESPACE 一起打印资源。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    kubectlhelm 的输出格式完全不相关。我不知道您可以以任何方式修改helm status 的输出以使其显示每个资源的命名空间。

    【讨论】:

    • 我同意 helm status 不提供自定义/修改其输出格式。但是使用这种格式,很难区分具有多个命名空间的集群内的资源。另一种选择是使用kubectl 来过滤指定命名空间,一个不好的事情是kubectl get all -A 没有提供所有资源列表,这使得更复杂。
    • kubectl get all does not display all resources,但您可以使用 kubectl get all,secrets,nodes -A 等添加更多资源类型。这可能是您能以一种简单的方式列出您想要的所有资源的最接近的方法。
    【解决方案2】:

    Helm 可帮助您管理 Kubernetes 应用程序 - Helm Charts 可帮助您定义、安装和升级甚至是最复杂的 Kubernetes 应用程序。

    Kubernetes 命令行工具 kubectl 允许您对 Kubernetes 集群运行命令。您可以使用 kubectl 部署应用程序、检查和管理集群资源以及查看日志。

    根据issue直接执行:

    $ kubectl api-resources -o 名称 | xargs -n 1 kubectl get --show-kind --ignore-not-found -l release=your-chart-name --all-namespaces

    样本输出:

    user@home:~$ kubectl api-resources  -o name   | xargs -n 1 kubectl get --show-kind --ignore-not-found -l release=terrific-ferret --all-namespaces
    
    NAME                                 STATUS    MESSAGE              ERROR
    componentstatus/scheduler            Healthy   ok
    componentstatus/etcd-0               Healthy   {"health": "true"}
    componentstatus/etcd-1               Healthy   {"health": "true"}
    componentstatus/controller-manager   Healthy   ok
    NAMESPACE   NAME                                   DATA   AGE
    default     configmap/terrific-ferret-mysql-test   1      12m
    NAMESPACE   NAME                              ENDPOINTS          AGE
    default     endpoints/terrific-ferret-mysql   aa.bb.cc.dd:port   12m
    NAMESPACE   NAME                                          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    default     persistentvolumeclaim/terrific-ferret-mysql   Bound    pvc-896382d2   8Gi        RWO            standard       12m
    NAMESPACE   NAME                                         READY   STATUS    RESTARTS   AGE
    default     pod/terrific-ferret-mysql-86588b4646   1/1     Running   0          2m55s
    NAMESPACE   NAME                           TYPE     DATA   AGE
    default     secret/terrific-ferret-mysql   Opaque   2      13m
    NAMESPACE   NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    default     service/terrific-ferret-mysql   ClusterIP   xx.yy.zz.ww   <none>        3306/TCP   13m
    NAMESPACE   NAME                                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    default     deployment.apps/terrific-ferret-mysql   1         1         1            1           13m
    NAMESPACE   NAME                                               DESIRED   CURRENT   READY   AGE
    default     replicaset.apps/terrific-ferret-mysql-86  1         1         1       13m
    

    我们正在使用 kubectl api-resources 列出所有受支持的资源类型及其短名称。

    您可以在这里找到有用的信息:api-resources

    有用的博客:kubectlcheatsheet.

    【讨论】:

    • 我已经更新了我的答案,你可以检查一下吗?请让我知道它是否有效。
    猜你喜欢
    • 2019-03-15
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2020-05-19
    • 2021-02-24
    相关资源
    最近更新 更多