前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五个高效的 kubectl 插件

五个高效的 kubectl 插件

作者头像
云云众生s
发布2024-03-27 21:18:36
820
发布2024-03-27 21:18:36
举报
文章被收录于专栏:云云众生s云云众生s

五个能让你的生活变得更轻松的 kubectl 插件

我已经使用 Kubernetes 五年了,但直到最近才开始使用插件来增强我的 kubectl 命令。我将向您展示五个插件,这些插件帮助我避免重复的任务,使集群管理更简单,应对事故响应更轻松。本文介绍的所有插件都可以使用 Krew 进行安装。

翻译自 5 kubectl plugins to make your life easier

Mac 用户注意事项

如果您使用的是 ARM 架构的 Mac,在使用 Krew 安装插件时,我提到的大多数插件可能会显示无法安装。这通常是因为插件作者没有发布 mac-arm64 构建。但您可以通过覆盖 KREW_ARCH 环境变量来安装 mac-amd64 构建,这同样有效。例如:

代码语言:javascript
复制
KREW_ARCH=amd64 kubectl krew install janitor

Tail

通过 kubectl logs -f 记录 pod 的日志始终是了解正在运行的 pod 在做什么的好方法。可惜的是,我从未设法记住如何让它同时记录多个 pod 的日志。tail 插件通过为我们提供一组辅助函数来解决这个问题,从而轻松地流式传输一组 pod 的日志。例如,它可以检索由 Job 创建的所有 pod 的日志,或者附加到 Service 的所有 pod 的日志:

代码语言:javascript
复制
❯ k tail --job=logging-job
default/logging-job-xtx4s[busybox-container]: My log

❯ k tail --svc=mikochi
default/mikochi-69d47757f6-9nds7[mikochi]: [GIN] 2023/07/27 - 12:31:16 | 200 |     496.098µs |       10.42.0.1 | GET      "/api/refresh"
default/mikochi-69d47757f6-9nds7[mikochi]: [GIN] 2023/07/27 - 12:31:16 | 200 |   10.347273ms |       10.42.0.1 | GET      "/api/browse/"
default/mikochi-69d47757f6-9nds7[mikochi]: [GIN] 2023/07/27 - 12:31:16 | 200 |    9.598031ms |       10.42.0.1 | GET      "/api/browse/"
default/mikochi-69d47757f6-9nds7[mikochi]: [GIN] 2023/07/27 - 12:31:19 | 200 |     193.686µs |       10.42.0.1 | GET      "/ready"

Janitor

Janitor 是一个 kubectl 插件,允许您列出处于问题状态的资源。它不需要使用 grep 命令,而是为您提供了命令,用于自动列出不健康、未准备好或未调度的 Pod、失败的 Job、挂起的 PVC 以及未声明的 PV。在检查集群期间发生事故时,这对于直接指向您正在处理的问题非常有帮助。

代码语言:javascript
复制
❯ k janitor pods status
STATUS             COUNT
Running            4
Error              6
ImagePullBackOff   1

❯ k janitor pods unhealthy
NAME                 STATUS             AGE
failing-job-ln7rf    Error              4m40s
failing-job-vbfqd    Error              4m33s
failing-job2-kmxqm   Error              4m30s
failing-job-cjbt6    Error              4m27s
failing-job2-grwcn   Error              4m23s
failing-job2-s842x   Error              4m17s
my-container         ImagePullBackOff   17m

❯ k janitor jobs failed
NAME           REASON                 MESSAGE                                       AGE
failing-job    BackoffLimitExceeded   Job has reached the specified backoff limit   4m46s
failing-job2   BackoffLimitExceeded   Job has reached the specified backoff limit   4m36s

Neat

Neat 是一个简单的实用程序,用于从命令输出中删除生成的字段。您只需将 kubectl get 的输出导入 kubectl neat 中即可使用。这使输出更易读,并且如果您想保存 yaml 以创建新资源,这非常方便。

代码语言:javascript
复制
❯ k get pod -o yaml mikochi-69d47757f6-9nds7
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2023-07-21T12:30:58Z"
  generateName: mikochi-69d47757f6-
  labels:
    app.kubernetes.io/instance: mikochi
    app.kubernetes.io/name: mikochi
    pod-template-hash: 69d47757f6
  name: mikochi-69d47757f6-9nds7
  namespace: default
.......

❯ k get pod -o yaml mikochi-69d47757f6-9nds7 | k neat
apiVersion: v1
kind: Pod
metadata:
  labels:
    app.kubernetes.io/instance: mikochi
    app.kubernetes.io/name: mikochi
    pod-template-hash: 69d47757f6
  name: mikochi-69d47757f6-9nds7
  namespace: default
.......

View-secret

由于 Secret 内部的数据是经过 base64 编码的,所以阅读它们通常需要使用 kubectl getjqbase64 -d 命令的组合。view-secret 插件旨在简化此过程,允许您直接读取和解密 secrets 中的值。

代码语言:javascript
复制
❯ k view-secret mikochi username
[CENSORED]

❯ k view-secret mikochi password
[ALSO CENSORED]

Node-shell

如果您想直接访问一个节点,在事故期间找到节点 IP,使用正确的 RSA 密钥进行 SSH 等操作可能会浪费宝贵的时间。但是通过使用 nsenter,可以从(特权)容器中获取 root shell。node-shell 插件利用此功能,在单个 kubectl 命令中让您访问节点:

代码语言:javascript
复制
❯ k node-shell my-node
spawning "nsenter-qco8qi" on "my-node"
如果您看不到命令提示符,请尝试按下 Enter 键。
root@my-node:/# cat /etc/rancher/k3s/k3s.yaml
apiVersion: v1
clusters:
- cluster:
.......
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 五个能让你的生活变得更轻松的 kubectl 插件
    • Mac 用户注意事项
      • Tail
        • Janitor
          • Neat
            • View-secret
              • Node-shell
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档