乐趣区

关于kubernetes:Kubernetes-集群管理工具-K9S

通常状况下,咱们自行部署 k8s 集群之后,要么应用 kubectl 命令做集群治理,要么应用 bashbroad 的 UI 治理界面来治理集群。最近,发现了一个基于终端且比拟好用的我的项目,能够让咱们疾速查看、导航、察看并解决日常咱们应用 Kubernetes 中的一些问题,这就是 k9s 我的项目(之前的文章中有过相干的一些介绍:轻松治理 Kubernetes 集群的 7 个工具)。

工具介绍

日常应用终端的你,堪称是一件利器!

k9s 是一个基于 curses 的全屏终端 UI 管理工具,能够与 Kubernetes 集群进行交互,能够察看系统资源,在各种资源之间切换,查看清单、日志、监控事件并执行 Pod 等,从而确保桌面空间不至于被大量终端窗格所占据。

k9s 会以特定工夫距离监控 Kubernetes 资源,默认为 2 秒,并容许查看本人集群中的内容。它能够高深莫测地提供了运行中 Pod、日志和部署的可视化视图,以及对 Shell 的快速访问。以下是该工具的次要个性:

  • 信息触手可及
  • 跟踪 Kubernetes 集群中运行的资源的实时流动
  • 解决 Kubernetes 规范资源和自定义资源定义
  • 集群指标
  • 跟踪与 Pod,容器和节点等资源关联的实时指标
  • 高级个性
  • 提供规范的集群治理命令,例如日志,扩大,端口转发,重启
  • 定义本人的命令快捷方式,以通过命令别名和热键疾速导航
  • 反对插件扩大 k9s 来创立属于本人的集群操作治理命令
  • 弱小的过滤模式,容许用户向下钻取并查看与工作负载相干的资源
  • 外观可定制
  • 通过 K9s 皮肤定义本人的外观
  • 自定义 / 安顿要按资源显示的列

Pulses- 集群事务状态的顶级仪表板

XRay- 开掘群集资源并查看其依赖性

Pods - 列出你的 Pods 状态和资源耗费

Logs- 查看容器日志并与之交互

RBAC- 查看您的集群上的受权的用户、形式等

装置

装置起来尽管比较简单,然而有点不怎么给力!

K9s 采纳 Go 语言开发,可运行于 Linux,macOS 和 Windows 平台。K9s 装置十分的简略,官网曾经为咱们提供了各平台的二进制安装包,只需下载对应版本即可。

MacOS

# Homebrew
$ brew install derailed/k9s/k9s

Linux

# LinuxBrew
$ brew install derailed/k9s/k9s
# PacMan
$ pacman -S k9s

Build

# Clone the repo
$ git clone https://github.com/derailed/k9s.git
# Build and run the executable
$ make build && ./execs/k9s

Docker

# 指定 k8s 的配置文件门路
$ docker run --rm -it -v $KUBECONFIG:/root/.kube/config derailed/k9s
# k8s 配置文件的默认门路
$ docker run --rm -it -v ~/.kube/config:/root/.kube/config derailed/k9s

应用形式

k9s 和 dashboard 能够了解为 vim 和 idea 之间的关系!

K9s 自带有一些参数,能够应用该参数以不同的配置启动该工具,比方你须要看 Pod 相干的信息。

命令行启动参数

# 列出所有可用的 CLI 选项
$ k9s help
# 获取无关 K9s 运行时的信息
$ k9s info
$ k9s info logs
$ k9s info configs
# 在给定的名称空间中运行
$ k9s -n mycoolns
# 运行 K9s 在 pod 视图中启动
$ k9s -c pod
# 以只读模式启动 K9s;该模式禁用所有批改命令
$ k9s --readonly

操作快捷键

简略应用

次要演示一些罕用的命令参数的成果!

启动后,会弹出 k9s 的基于文本的用户界面。在没有指定命名空间标记的状况下,它会向你显示默认命名空间中的 Pod。通过快捷键来导航 k9s,能够随时应用方向键和回车键来抉择列出的我的项目。可能会留神到 k9s 设置为应用 Vim 命令键,包含应用 J 和 K 键高低挪动等。

  • k9s
0:# 显示在所有命名空间中的所有 Pod
d:# 形容所选的 Pod
l:# 显示所选的 Pod 的日志
y:# 查看 YAML 文件
e:# 编辑 YAML 文件
d:# 查看键映射形容
:svc:# 跳转到服务视图
:deploy:# 跳转到部署视图
:namespace:# 跳转到命名空间视图
:cj:# 跳转到 cronjob 视图,查看集群中打算了哪些作业
:rb:# 跳转到角色绑定视图,用于基于角色的访问控制 (RBAC) 治理

  • k9s info

运行该命令,会通知咱们该应用程序要在哪里找它的配置文件。

$ k9s info
 ____  __.________
|    |/ _/   __   ______
|      < ____    /  ___/
|    |     /    /___ 
|____|__  /____//____  >
        /            /
Configuration:   /Users/jess/.k9s/config.yml
Logs:            /var/folders/5l/xxx/T/k9s-jess.log
Screen Dumps:    /var/folders/5l/xxx/T/k9s-screens-jess
# 查看 k9s 的日志
$ tail -f /var/folders/5l/xxx/T/k9s-jess.log
# 进入 k9s 的调试模式
$ k9s -l debug
  • k9s -n namespace

通过指定 namespace 命名空间,咱们能够将注意力集中在给定的命名空间上。

配置文件

配置文件中次要定义一些应用下面的默认形式

K9s 将其配置保留在主目录 $HOME/.k9s 中的 .k9s 目录中。次要配置文件名为 config.yml 并存储各种 K9s 特定位。k9s 将更新此文件以存储以后视图和名称空间信息。

# config.yml
k9s:
  # Represents ui poll intervals. Default 2secs
  refreshRate: 2
  # Set to true to hide K9s header. Default false
  headless: false
  # Indicates whether modification commands like delete/kill/edit are disabled. Default is false
  readOnly: false
  # Toggles icons display as not all terminal support these chars.
  noIcons: false
  # Logs configuration
  logger:
    # Defines the number of lines to return. Default 100
    tail: 200
    # Defines the total number of log lines to allow in the view. Default 1000
    buffer: 500
    # Represents how far to go back in the log timeline in seconds. Default is 5min
    sinceSeconds: 300
    # Go full screen while displaying logs. Default false
    fullScreenLogs: false
    # Toggles log line wrap. Default false
    textWrap: false
    # Toggles log line timestamp info. Default false
    showTime: false
  # Indicates the current kube context. Defaults to current context
  currentContext: minikube
  # Indicates the current kube cluster. Defaults to current context cluster
  currentCluster: minikube
  # Persists per cluster preferences for favorite namespaces and view.
  clusters:
    cooln:
      namespace:
        active: coolio
        favorites:
          - cassandra
          - default
      view:
        active: po
      featureGates:
        # Toggles nodeshell support. Allow K9s to shell into nodes if needed. Default false.
        nodeShell: false
      # Provide shell pod customization of feature gate is enabled
      shellPod:
        # The shell pod image to use.
        image: killerAdmin
        # The namespace to launch to shell pod into.
        namespace: fred
        # The resource limit to set on the shell pod.
        limits:
          cpu: 100m
          memory: 100Mi
      # The IP Address to use when launching a port-forward.
      portForwardAddress: 1.2.3.4
    minikube:
      namespace:
        active: all
        favorites:
          - all
          - kube-system
          - default
      view:
        active: dp

总结阐明

对于日常常常须要操作 k8s 的运维人员来说却是很有帮忙!

除了上述的性能以外,k9s 还有其余比拟实用的性能,比方反对自建命令别名、自定义热键形式、反对自定义插件、还反对自定义终端界面显示以及资源显示程序和组合。这些在官网中,给出了一些简略的示例阐明和配置形式,根本能够做到,看了之后就能够自行 DIY 了。

理解你的工具并把握做事件的“硬道理”很重要。还有一点很重要的是要记住,就治理而言,重要的是要更聪慧地工作,而不是更致力。应用 k9s,就是我践行这个指标的办法。

作者: Escape
链接: https://www.escapelife.site/p…

退出移动版