k9s入门及实战

news2025/3/13 10:53:45

概述

k9s,GitHub,是用于管理k8s集群的CLI,提供一个终端UI来与k8s集群进行交互。通过封装kubectl功能,k9s会以特定时间间隔监控k8s的变化,默认为2秒,并提供后续命令来与k8s资源进行交互,k9s可让开发者快速查看并解决运行k8s时的日常问题。k9s操作逻辑基于Vim。

功能特性:

  • 跟踪在k8s集群运行的资源的实时活动
  • 处理k8s标准资源和自定义资源
  • 跟踪与资源相关联的实时指标,如pods、容器和节点
  • 支持定制外观、皮肤
  • 支持多资源视图
  • 支持查看RBAC规则
  • 支持遍历k8s资源及其相关资源
  • 支持插件扩展k9s来创建个性化的集群操作管理命令
  • 强大的过滤模式,允许用户向下钻取并查看与工作负载相关的资源

安装

k9s采用Go语言开发,支持Linux,macOS和Windows平台。

Mac:brew install derailed/k9s/k9s

Linux:pacman -S k9s

Build:

git clone https://github.com/derailed/k9s.git
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

和kubectl一样,默认使用环境变量KUBECONFIG指定的k9s配置,支持指定:kubeconfig k9s --kubeconfig=xx

命令行

命令行,按照个人理解,可分为两类,一类是不进入交互式终端UI的,比如:

k9s help
k9s info
k9s info logs
k9s info configs

k9s info输出:

Version:           v0.32.5
Config:            /root/.config/k9s/config.yaml
Custom Views:      /root/.config/k9s/views.yaml
Plugins:           /root/.config/k9s/plugins.yaml
Hotkeys:           /root/.config/k9s/hotkeys.yaml
Aliases:           /root/.config/k9s/aliases.yaml
Skins:             /root/.config/k9s/skins
Context Configs:   /root/.local/share/k9s/clusters
Logs:              /root/.local/state/k9s/k9s.log
Benchmarks:        /root/.local/state/k9s/benchmarks
ScreenDumps:       /root/.local/state/k9s/screen-dumps

另一类是进入交互式终端的,用得较少,最后还是会变成终端UI方式:

k9s -n observe
# 以只读模式启动k9s,禁用所有修改命令
k9s --readonly
# 进入k9s的调试模式
k9s -l debug

基本使用

输入k9s命令,进入终端UI:
在这里插入图片描述
快捷键:

  • enter:进入,执行等多种含义和用途;
  • esc:退出;
  • :ctx:选择k8s集群,即上面截图左上角最上面的Context,点击enter键进入到Pods页;
  • :pod:类似于k8s命令行下pod等同于pods,输入:pods也能进入Pods页,其他资源类似,不再赘述;
  • :deploy:进入Deployments终端页;k9s内置命令补全,输入:de后,按Tab即可自动补全,其他资源类似;
    在这里插入图片描述
  • :svc:进入Services终端页;
  • :statefulset:进入Statefulsets终端页;
  • y:选中某个Pod、Deployment、Service、DaemonSet后,y可查看该资源的YAML描述文件;
  • d:同上,选择某个资源后,d可查看该资源的详细信息,类似于kubectl describe命令;
  • e:进入Vim来修改资源的Yaml定义,退出命令则是Vim的:q:wq等;几乎所有资源类型都能进行编辑。如果修改后的语法不正确,k9s会提示修改失败,修改不会生效;
  • l:即log,在任何资源页都可使用该命令,顶多是没有日志输出。在查看容器日志时,按0代表查看日志的尾部,即最新日志,按w代表日志自动换行。
    在这里插入图片描述
  • s:在Deployments页面,s表示Scale,触发修改副本数操作(即Replicas):
    在这里插入图片描述
    在Pods页面,s表示Shell,会进入到容器的Shell命令行,输入exitctrl-d退出,注意ctrl-c并不能退出容器;如果一个Pod包含多个Container,则会进入Container界面让你选择要进入的Container:
    在这里插入图片描述
  • 数字:如上截图所示,在任何一个终端页,输入数字则仅展示该数字对应的命名空间下的资源;
  • :ns:切换命名空间;
  • /filter:如果指定命名空间后,Pod还是太多,可类似于Vim编辑器里输入/进行过滤,可过滤命名空间、资源名称和状态;
  • /!filter:逆过滤器,去除所有匹配的资源。不支持日志过滤;
  • /-f filter:模糊匹配过滤;
  • j:等同于方向键,向下移到被选择的资源;
  • k:等同于方向键,向上移到被选择的资源;
  • p:查看之前的Container的日志,这个功能貌似没啥用,Container重启后,日志丢失,看不到日志;
    在这里插入图片描述
  • ctrl-d:删除某个资源,有弹窗二次确认,选择OK后执行删除,触发自动重启;
    -
  • ctrl-k:删除某个Pod,没有二次弹窗确认,自动触发重启;
  • :rb:进入Rolebindings,角色绑定视图,用于基于角色的访问控制(RBAC)管理;
  • :cj:跳转到Cronjobs视图,查看集群中的计划作业;
  • :q:退出k9s;
  • ctrl-c:退出k9s;

总结:

  • 充分利用Tab补全;

PortForward

别名

编辑/root/.config/k9s/aliases.yaml文件:

aliases:
  dp: deployments
  sec: v1/secrets
  jo: jobs
  cr: clusterroles
  crb: clusterrolebindings
  ro: roles
  rb: rolebindings
  np: networkpolicies

热键

允许用户定义自己的热键来激活他们最喜欢的资源视图。编辑/root/.config/k9s/hotkeys.yaml文件:

hotKey:
  # Hitting Shift-0 navigates to your pod view
  shift-0:
    shortCut:    Shift-0
    description: Viewing pods
    command:     pods
  # Hitting Shift-1 navigates to your deployments
  shift-1:
    shortCut:    Shift-1
    description: View deployments
    command:     dp

进阶

配置文件

编辑/root/.config/k9s/config.yaml文件:

k9s:
  liveViewAutoRefresh: false
  screenDumpDir: /root/.local/state/k9s/screen-dumps
  refreshRate: 2
  # Set to true to hide K9s header. Default false
  headless: false
  # Toggles icons display as not all terminal support these chars.
  noIcons: false
  maxConnRetry: 5
  readOnly: false
  noExitOnCtrlC: false
  ui:
    enableMouse: false
    headless: false
    logoless: false
    crumbsless: false
    reactive: false
    noIcons: false
    defaultsToFullScreen: false
  skipLatestRevCheck: false
  disablePodCounting: false
  shellPod:
    image: busybox:1.35.0
    namespace: default
    limits:
      cpu: 100m
      memory: 100Mi
  imageScans:
    enable: false
    exclusions:
      namespaces: []
      labels: {}
  logger:
    tail: 100
    buffer: 5000
    sinceSeconds: -1
    textWrap: false
    # Go full screen while displaying logs. Default false
    fullScreenLogs: false
    showTime: false
  thresholds:
    cpu:
      critical: 90
      warn: 70
    memory:
      critical: 90
      warn: 70

皮肤

可根据自己的外观和风格来配置k9s,放在/root/.config/k9s/skins目录下:

# Skin InTheNavy...
k9s:
  # General K9s styles
  body:
    fgColor: dodgerblue
    bgColor: '#ffffff'
    logoColor: '#0000ff'
  # ClusterInfoView styles.
  info:
    fgColor: lightskyblue
    sectionColor: steelblue
  # Help panel styles
  help:
    fgColor: white
    bgColor: black
    keyColor: cyan
    numKeyColor: blue
    sectionColor: gray
  frame:
    # Borders styles.
    border:
      fgColor: dodgerblue
      focusColor: aliceblue
    # MenuView attributes and styles.
    menu:
      fgColor: darkblue
      keyColor: cornflowerblue
      # Used for favorite namespaces
      numKeyColor: cadetblue
    # CrumbView attributes for history navigation.
    crumbs:
      fgColor: white
      bgColor: steelblue
      activeColor: skyblue
    # Resource status and update styles
    status:
      newColor: '#00ff00'
      modifyColor: powderblue
      addColor: lightskyblue
      errorColor: indianred
      highlightcolor: royalblue
      killColor: slategray
      completedColor: gray
    # Border title styles.
    title:
      fgColor: aqua
      bgColor: white
      highlightColor: skyblue
      counterColor: slateblue
      filterColor: slategray
  views:
    # TableView attributes.
    table:
      fgColor: blue
      bgColor: darkblue
      cursorColor: aqua
      # Header row styles.
      header:
        fgColor: white
        bgColor: darkblue
        sorterColor: orange
    # YAML info styles.
    yaml:
      keyColor: steelblue
      colonColor: blue
      valueColor: royalblue
    # Logs styles.
    logs:
      fgColor: white
      bgColor: black

插件

k9s允许您通过插件定义集群命令来扩展您的命令行和工具。

# k9s目前提供额外的环境变量来自定义您的插件参数,可用的环境变量如下:
$RESOURCE_GROUP-- 选定的资源组
$RESOURCE_VERSION-- 选择的资源api版本
$RESOURCE_NAME-- 选择的资源名称
$NAMESPACE-- 选择的资源命名空间
$NAME-- 选择的资源名称
$CONTAINER-- 当前容器(如果适用)
$FILTER-- 当前过滤器(如果有)
$KUBECONFIG-- KubeConfig 位置。
$CLUSTER --  活动集群名称
$CONTEXT --  活动上下文名称
$USER --  活跃用户
$GROUPS --  活跃的群体
$POD --  在容器视图中
$COL-<RESOURCE_COLUMN_NAME> -- 为查看的资源使用给定的列名。 必须以 COL-!

# 例如, 此处定义一个插件实现 `ctrl-l` 快捷方式来在 pod 视图中跟踪日志。
# /root/.config/k9s/views.yaml
plugin:
  fred:
    shortCut: Ctrl-L
    confirm: false
    description: Pod logs
    scopes:
    - pods
    command: kubectl
    background: false
    args:
    - logs
    - -f
    - $NAME
    - -n
    - $NAMESPACE
    - --context
    - $CONTEXT

视图

编辑/root/.config/k9s/views.yaml文件,自定义资源的显示列和先后顺序:

k9s:
  views:
    v1/pods:
      columns:
        - AGE
        - NAMESPACE
        - NAME
        - IP
        - NODE
        - STATUS
        - READY
    v1/services:
      columns:
        - AGE
        - NAMESPACE
        - NAME
        - TYPE
        - CLUSTER-IP

nodeShell

通过在给定集群上启用nodeShell功能门,k9s允许您在集群节点中进行shell:

k9s:
  clusters:
    # Configures node shell on cluster blee
    blee:
      featureGates:
        # You must enable the nodeShell feature gate to enable shelling into nodes
        nodeShell: true
      # You can also further tune the shell pod specification
      shellPod:
        image: demo-demo:01
        namespace: test-namespace
        limits:
          cpu: 100m
          memory: 100Mi

XRay

Pulses

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

RBAC

查看您的集群上的授权的用户、方式等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis增加ip白名单

Redis增加IP白名单 随着互联网的快速发展&#xff0c;网络安全问题也日益凸显。为了保护服务器安全&#xff0c;我们常常需要对访问服务器的IP地址进行限制。而Redis作为一种高性能的缓存数据库&#xff0c;可以用来实现IP白名单功能。本文将介绍如何使用Redis来增加IP白名单&…

git commit messege 模板设置 (规范化管理git)

配置方法 git config --global core.editor vim &#xff08;设置 Git 的默认编辑器为 Vim&#xff09;在用户根目录下&#xff08;~&#xff09;&#xff0c;创建一个.git_commit_msg文件&#xff0c;然后把下面的内容拷贝到文件中并保存。 [version][模块][类型]{解决xxx问题…

Franka机器人ROS 2 发布:赋能机器人研究和行业应用

Franka机器人 ROS 2 发布&#xff1a;赋能机器人研究和行业应用 Franka ROS 2 发布&#xff1a;赋能机器人研究和行业应用 由zlem Odeh 于Franka Robotics 发布 在机器人操作系统 (ROS) 等技术和生态系统的推动下&#xff0c;机器人世界正以前所未有的速度发展。ROS 2 是广受…

docker部署jenkins,安装使用一条龙教程

Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。 2. 什么是CI / CD…

短视频下载去水印,用什么工具好?

去除视频和图片水印是许多用户的需求&#xff0c;尤其是在分享或保存内容时。以下是6款超好用的工具&#xff0c;帮助你轻松去除水印&#xff0c;享受纯净的视觉体验&#xff1a; 1. 易下载去水印小程序 特点&#xff1a; 操作简单&#xff0c;支持抖音、快手、小红书、哔哩哔哩…

推理大模型时代,TextIn ParseX助力出版业知识资产重构

在大语言模型&#xff08;LLM&#xff09;与推理能力快速进化的技术浪潮下&#xff0c;出版机构沉淀数十年的非结构化数据资产&#xff0c;包括书籍、期刊、手稿及历史档案&#xff0c;正在焕发新的机遇。基于文档解析、NLP与大模型的推理生成能力&#xff0c;我们在图书馆层层…

Redis 2025/3/9

Redis主从集群 搭建主从集群 Redis并发能力非常强&#xff0c;单节点能够达到数万的并发。 不过对一些用户规模大&#xff0c;并发量比较高的应用来讲&#xff0c;数万并发不太够。这时候就用到redis的集群了。因为Redis中的数据通常读多写少&#xff0c;所以最常用的集群方…

2min搞定~Mac Pro 编译安装 Nginx 1.8.1

2min搞定&#xff5e;Mac Pro 编译安装 Nginx 1.8.1 一安装流程简述1、编译源码前&#xff0c;获取要依赖的源码包2、进行编译、安装nginx3、启动 二、实战部分&#xff1a;测试demo1、nginx.conf改动2、代码改动3、访问 一安装流程简述 阿哟啊哟老铁&#xff0c;别嫌我啰嗦奥…

要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,

UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、最终效果 前言 ue5角色受击没有播放受击动画&#xff0c;主角达到怪物身上没有反应 一、实现思路 要在Unreal Engine 5&#xff08;UE5&#xff09;中实现角色打击怪物并让怪物做出受击反应&#xff0c;你需要…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来学习C蓝桥杯基础篇&#xff08;十一&#xff09;&#xff0c;学习类&#xff0c;结构体&#xff0c;指针相关知识&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、类与结构体 类的定义&#xff1a;在C中&#x…

Leetcode 698-划分为k个相等的子集

给定一个整数数组 nums 和一个正整数 k&#xff0c;找出是否有可能把这个数组分成 k 个非空子集&#xff0c;其总和都相等。 示例 1&#xff1a; 输入&#xff1a; nums [4, 3, 2, 3, 5, 2, 1], k 4 输出&#xff1a; True 说明&#xff1a; 有可能将其分成 4 个子集&#…

Word 小黑第2套

对应大猫42 Word1 从文件中导入新样式 样式组 -管理样式 -导入导出 -关闭Normal文件 -打开文件 -修改文件 -选中所需 -复制 调整字符宽度 调整字符间距 -字体组 加宽 适当修改磅值 文字效果通过文字组修改 另起一页&#xff0c;分隔符&#xff08;布局 -分隔符 -分节符 -下一…

ctfshow做题笔记—栈溢出—pwn69~pwn72

目录 前言 一、pwn69(可以尝试用ORW读flag flag文件位置为/ctfshow_flag) 二、pwn70(可以开始你的个人秀了 flag文件位置为/flag) 三、pwn71(32位的ret2syscall) 四、pwn72 前言 学了一些新的东西&#xff0c;pwn69的文档忘保存了&#xff08;悲&#xff09;&#xff0c…

同盾v2 2025版 blackbox , wasm加解密,逆向协议算法生成,小盾安全

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; # 欢迎交流 wjxch1004

c++领域展开第十六幕——STL(vector容器的了解以及模拟实现、迭代器失效问题)超详细!!!!

文章目录 前言一、vector的介绍和使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector的空间增长问题1.2.4 vector的增删改查 二、vector在 oj 中的使用只出现一次的数删除有序数组中的重复项杨辉三角 总结 前言 在c专栏的上一篇…

ubuntu2404 安装 过程中 手动设置网络

ubuntu2404 安装 过程中 手动设置网络 https://blog.csdn.net/2401_83947353/article/details/138454379 6.1 可以直接Done&#xff08;不配置P&#xff09; 6.2 可以配置ip地址&#xff0c;选择manual 6.2.1 search domains填 6.2.2 search domains不填 6.3 更深层次的…

去北京的前端实习经历

趁现在对这部分还有深刻的感受记忆&#xff0c;赶紧记录下来。因为工作久了会发现真的对以前的事记不起来了。 公司&#xff1a; 北京的实习公司首先有学长学姐在&#xff0c;而且这个公司知名度还挺高的&#xff0c;但是工资比较低&#xff0c;3k左右吧&#xff0c;但是管2顿…

力扣热题 100:动态规划专题经典题解析

系列文章目录 力扣热题 100&#xff1a;哈希专题三道题详细解析(JAVA) 力扣热题 100&#xff1a;双指针专题四道题详细解析(JAVA) 力扣热题 100&#xff1a;滑动窗口专题两道题详细解析&#xff08;JAVA&#xff09; 力扣热题 100&#xff1a;子串专题三道题详细解析(JAVA) 力…

变量赋值汇编

一、核心概念 寄存器&#xff1a;CPU内部的高速存储单元&#xff08;如EAX、EBX、x86中的RAX、ARM中的R0等&#xff09; 内存地址&#xff1a;变量存储在内存中的位置&#xff08;如 0x1000&#xff09; 指令&#xff1a;操作寄存器和内存的命令&#xff08;如 MOV, STR, LDR…

页面白屏出现的原因

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&#…