文章目录:

  • 0x01 基础简介

  • 0x02 安装实践

    • 安装流程

    • 配置示例

  • 0x02 命令实践

    • 命令参数

    • 简单使用

0x01 基础简介

K9s - Kubernetes CLI To Manage Your Clusters In Style!
描述: k9s 是用于管理 Kubernetes 集群的 CLI, K9s 提供了一个终端 UI 来与您的 Kubernetes 集群进行交互。通过封装 kubectl 功能 k9s 持续监视 Kubernetes 的变化并提供后续命令来与您观察到的资源进行交互,直白地说就是k9s可以让开发者快速查看并解决运行 Kubernetes 时的日常问题。

目前在 Github 上 该项目 star 将近 15k, 还是比较活跃的。

官网地址: https://k9scli.io/

功能特性:

  • 跟踪在 Kubernetes 集群运行的资源的实时活动

  • 处理 Kubernetes 标准资源和自定义资源

  • 跟踪与资源相关联的实时指标,如 pods、容器和节点

  • 支持定制外观

  • 支持多资源视图

  • 支持查看 RBAC 规则

  • 支持遍历 Kubernetes 资源及其相关资源

参考来源:
Github 项目地址: https://github.com/derailed/k9s
Gitee Mirrors 镜像地址: https://gitee.com/mirrors/K9s (国内推荐)

0x02 安装实践

K9s 在 Linux、macOS 和 Windows 平台上可用。

常用安装方式

# 编译后的二进制包
https://github.com/derailed/k9s/releases# MacOS or LinuxBrew for Linux
brew install k9s# On Arch Linux
pacman -S k9s# Via Webi for Linux and macOS
curl -sS https://webinstall.dev/k9s | bash# Via Webi for Windows
curl.exe -A MS https://webinstall.dev/k9s | powershell# Running the official Docker image
docker run --rm -it -v ~/.kube/config:/root/.kube/config quay.io/derailed/k9s

Tips: 当然您也可以参照官方文档进行从源码构建, K9s 目前使用的是 go v1.14 或更高版本。

安装流程

此外以安装二进制包为例进行实践。

# 1. 利用 wget 命令 -c 短点续传和 -b 后台下载
wget -b -c https://github.com/derailed/k9s/releases/download/v0.25.18/k9s_Linux_x86_64.tar.gz# 2.解压并删除多余文件
tar -zxf k9s_linux_x86_64.tar.gz
rm  k9s_linux_x86_64.tar.gz  LICENSE  README.md# 3.拷贝 kubernetes 控制配置文件到加目录中
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf# 4.直接运行即可,如果你对vim操作比较熟悉,那么恭喜你了你很快能上手k9s.
/nfsdisk-31/newK8s-Backup/tools# ./k9s# 5.退出k9s指令
:quit

配置示例

  1. K9s 使用 256 色终端模式。在 `Nix 系统上,确保相应地设置了 TERM。

export TERM=xterm-256color
  1. 为了发出清单编辑命令,请确保您的 EDITOR 环境已设置。

# Kubectl edit command will use this env var.
export EDITOR=my_fav_editor
# Should your editor deals with streamed vs on disk files differently, also set...
export K9S_EDITOR=my_fav_editor
  1. K9s 更喜欢最近的 kubernetes 版本,即 1.16+。

  2. K9s 将其配置保存在 k9s 目录中,位置取决于您的操作系统, 其利用 XDG 加载其各种配置文件。
    Unix : ~/.config/k9s
    Mac : ~/Library/Application Support/k9s
    Windows : %LOCALAPPDATA%\k9s

# $XDG_CONFIG_HOME/k9s/config.yml
k9s : # 代表 ui 轮询间隔。默认 2secs refreshRate :  2 # 与 api-server 的连接丢失后的重试次数。默认 15。maxConnRetry :  5 # 启用鼠标支持。默认 false enableMouse :  true # 设置为 true 以隐藏 K9s 标头。默认 false headless :  false # 设置为 true 以隐藏 K9s crumbs。默认 false crumbsless :  false # 指示是否禁用删除/杀死/编辑等修改命令。默认为 false readOnly :  false # 切换图标显示,因为并非所有终端都支持这些字符。noIcons :  false # 日志配置 logger : # 定义要返回的行数。Default 100 tail :  200 # 定义视图中允许的日志行总数。Default 1000 buffer :  500 # 表示以秒为单位在日志时间线中返回多远。设置为 -1 将显示所有可用的日志。默认为 5 分钟。sinceSeconds :  300 # 显示日志时全屏显示。默认 false fullScreenLogs :  false # 切换日志换行。默认 false textWrap :  false # 切换日志行时间戳信息。默认假 showTime :  false # 表示当前的 kube 上下文。默认为当前上下文 currentContext :  minikube # 表示当前的 kube 集群。默认为当前上下文集群 currentCluster :  minikube # 保留每个集群首选项以获取最喜欢的命名空间和视图。clusters:coolio:namespace:active: cooliofavorites:- cassandra- defaultview:active: pofeatureGates:# 切换NodeShell支持nodeShell :  false # 启用功能门的 shell pod 自定义 shellPod : # 要使用的 shell pod 映像。image :  killerAdmin # 要启动到 shell pod 的命名空间。namespace :  fred # 在 shell pod 上设置的资源限制。limits : cpu :  100m memory :  100Mi # 启动端口转发时使用的 IP 地址。portForwardAddress :  1.2.3.4 kind : namespace : active :  all favorites : -  all -  kube-system -  default view : active :  dp # 屏幕转储的路径。默认值:'%temp_dir%/k9s-screens-%username%'(k9s 信息) screenDumpDir :/tmp
  1. Node Shell 配置,通过在给定集群上启用 nodeShell 功能门,K9s 允许您在集群节点中进行 shell。

# $XDG_CONFIG_HOME/k9s/config.yml
k9s:clusters:# Configures node shell on cluster bleeblee:featureGates:# You must enable the nodeShell feature gate to enable shelling into nodesnodeShell: true# You can also further tune the shell pod specificationshellPod:image: cool_kid_admin:42namespace: bleelimits:cpu: 100mmemory: 100Mi
  1. HotKey Support 设置: 允许用户定义自己的热键来激活他们最喜欢的资源视图。

# $XDG_CONFIG_HOME/k9s/hotkey.yml
cat <<'EOF' > ~/.config/k9s/hotkey.yml
hotKey:# Hitting Shift-0 navigates to your pod viewshift-0:shortCut:    Shift-0description: Viewing podscommand:     pods# Hitting Shift-1 navigates to your deploymentsshift-1:shortCut:    Shift-1description: View deploymentscommand:     dp
EOF
  1. Command Aliases 设置: 命令别名设置。

# 使用此别名文件,您现在可以键入 pp/crb 以分别列出 pod 或 ClusterRoleBindings。
# $XDG_CONFIG_HOME/k9s/alias.yml
cat <<'EOF' > ~/.config/k9s/alias.yml
alias:pp: v1/podscrb: rbac.authorization.k8s.io/v1/clusterrolebindings
EOF
  1. FastForwards: 从 v0.25.0 开始,您可以利用 FastForwards 功能告诉 K9s 如何默认端口转发.

# 您现在可以使用以下注释来注释您的清单:
k9scli.io/auto-portforwards -> 激活一个或多个端口转发,直接绕过端口转发对话框。
k9scli.io/portforwards -> 在启动端口转发对话框时预先选择一个或多个端口转发。# 例如:
# Pod fred
apiVersion: v1
kind: Pod
metadata:name: fredannotations:k9scli.io/auto-portforwards: zorg::5556  # => 将默认为 zorg 容器端口5556和本地端口5566# Or...k9scli.io/portforward: bozo::9090:p1  # => 启动“端口转发”对话框,选择为 bozo 容器中的p1(8081)映射到本地端口9090...
spec:containers:- name: zorgports:- name: p1containerPort: 5556...- name: bozoports:- name: p1containerPort: 8081- name: p2containerPort: 5555...
  1. Resource Custom Columns:自定义显示的资源列,您可以通过自定义视图更改为给定资源显示哪些列。

# $XDG_CONFIG_HOME/k9s/views.yml
cat <<'EOF' > ~/.config/k9s/views.yml
k9s:views:v1/pods:columns:- AGE- NAMESPACE- NAME- IP- NODE- STATUS- READYv1/services:columns:- AGE- NAMESPACE- NAME- TYPE- CLUSTER-IP
EOF
  1. plugin : 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 视图中跟踪日志。
# $XDG_CONFIG_HOME/k9s/plugin.yml
cat <<'EOF' > ~/.config/k9s/plugin.yml
plugin:fred:shortCut: Ctrl-Lconfirm: falsedescription: Pod logsscopes:- podscommand: kubectlbackground: falseargs:- logs- -f- $NAME- -n- $NAMESPACE- --context- $CONTEXT
EOF
  • 11.Skins : 您可以根据自己的外观和风格来设计 K9s。

# $XDG_CONFIG_HOME/k9s/skin.yml
cat <<'EOF' > ~/.config/k9s/skin.yml
# Skin InTheNavy...
k9s:# General K9s stylesbody:fgColor: dodgerbluebgColor: '#ffffff'logoColor: '#0000ff'# ClusterInfoView styles.info:fgColor: lightskybluesectionColor: steelblue# Help panel styleshelp:fgColor: whitebgColor: blackkeyColor: cyannumKeyColor: bluesectionColor: grayframe:# Borders styles.border:fgColor: dodgerbluefocusColor: aliceblue# MenuView attributes and styles.menu:fgColor: darkbluekeyColor: cornflowerblue# Used for favorite namespacesnumKeyColor: cadetblue# CrumbView attributes for history navigation.crumbs:fgColor: whitebgColor: steelblueactiveColor: skyblue# Resource status and update stylesstatus:newColor: '#00ff00'modifyColor: powderblueaddColor: lightskyblueerrorColor: indianredhighlightcolor: royalbluekillColor: slategraycompletedColor: gray# Border title styles.title:fgColor: aquabgColor: whitehighlightColor: skybluecounterColor: slatebluefilterColor: slategrayviews:# TableView attributes.table:fgColor: bluebgColor: darkbluecursorColor: aqua# Header row styles.header:fgColor: whitebgColor: darkbluesorterColor: orange# YAML info styles.yaml:keyColor: steelbluecolonColor: bluevalueColor: royalblue# Logs styles.logs:fgColor: whitebgColor: black
EOF

0x02 命令实践

命令参数

# List all available CLI options
k9s help# To get info about K9s runtime (logs, configs, etc..)
k9s info# Configuration:   /root/.config/k9s/config.yml# Logs:            /tmp/k9s-root.log# Screen Dumps:    /tmp/k9s-screens-root# To run K9s in a given namespace
k9s -n mycoolns# Start K9s in an existing KubeConfig context
k9s --context coolCtx# Start K9s in readonly mode - with all cluster modification commands disabled
k9s --readonly

简单使用

使用截图

  • Pulses - A top level dashboard of the state of affairs of your cluster

  • XRay - Dig in your cluster resources and view their dependencies

  • Pods - List out your pods status and resource consumption

  • RBAC - View the who/what/how of authorizations on your cluster

实践使用

  • 0.查看Pod资源配置清单,按键流程: -> pods -> y.(返回上一步是按ESC按键)

  • 1.进入指定pod的shell终端中,按键流程: -> pods -> s.

  • 2.指定pod进行容器内部端口转发,按键流程: -> pods -> <shift-f>, 输入容器内部名称::端口, 然后在输入映射到本地的端口,如果要查看端口转发配置,按键流程: -> pods -> f 即可查看。

  • 3.pod 日志查看,按键流程: -> pods -> l

  • 4.namespace 查看,按键流程: -> ns -> l

  • 5.svc 查看,按键流程: -> svc -> l

  • 6.我们创建一个新的pod并采用k9s进行管理编辑, 按键流程: -> pods -> e 然后进行编辑该Pod资源清单,使用vim作为默认编辑器进行编辑,完成后输入:wq保存并退出。

~$ kubectl run myweb --image=nginx:latest --labels="app=web" --port=8080
pod/myweb created
~$ k9s
spec:containers:- image: nginx:latestimagePullPolicy: Alwaysname: mywebports:- containerPort: 80   # 此处将 8080 端口改成 80protocol: TCPresources: {}
  • 7.deployments/statefulset/pod删除操作: ,按键流程: -> pod|deploy|state -> ctrl+d

  • 8.查看集群中RBAC角色绑定信息,按键流程: -> rbac -> e 编辑。

至此完毕!

更多精彩文章,请查看,我在B站学云原生之Docker镜像安全最佳实践(https://www.bilibili.com/read/cv15553799)


欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者 个人公众号【WeiyiGeek】联系我。

更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】 个人博客【https://weiyigeek.top 】

专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏【点个赞、投个币、收个藏、关个注,转个发】,这将对我的肯定,谢谢!。

echo  "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"

printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")

fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")

System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")

console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")

K9s之Kubernetes集群管理交互工具实践相关推荐

  1. 美团点评Kubernetes集群管理实践

    背景 作为国内领先的生活服务平台,美团点评很多业务都具有非常显著.规律的"高峰"和"低谷"特征.尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长.这 ...

  2. Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

    前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...

  3. 搭建kubernetes集群管理平台

    一. kubernetes和相关组件介绍 1. kubernetes概述 Kubernetes是google开源的容器集群管理系统,基于docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务 ...

  4. 基于Rancher实现kubernetes集群管理

    基于Rancher实现kubernetes集群管理 1.Rancher介绍 2.Rancher部署 添加kubernetes集群 3.Rancher简单操作 1.Rancher介绍 Rancher可以 ...

  5. 4、kubernetes 集群管理工具 kubectl

    文章目录 kubectl概述 K8s kubectl 命令自动补全 kubectl的常用子命令(command) kubernetes资源对象类型(type) kubectl 常用命令总结 kubec ...

  6. 云原生第4课:Kubernetes 集群管理

    本篇文章来自<华为云云原生王者之路训练营>黄金系列课程第4课,由华为云Kubernetes容器平台技术专家Alan主讲,详细介绍Kubernetes集群和Kubernetes节点的生命周期 ...

  7. kubernetes集群命令行工具kubectl

    文章目录 1 kubectl 概述 2 kubernetes命令 2.1 kubectl 命令的语法 2.2 常用命令 1 kubectl 概述 kubectl是Kubernetes集群的命令行工具, ...

  8. 基于Python+Django的Kubernetes集群管理平台

    时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调度管理等方面都有其难以言喻的优 ...

  9. 【CKA考试笔记】三、kubernetes集群管理

    文章目录 实验环境 一.查看集群配置信息 二.查看各节点所使用的runtime是什么 三.集群缩容 四.集群扩容 五.恢复出厂设置reset.重新初始化集群 实验:删除集群中所有节点,并重新初始化集群 ...

最新文章

  1. SPQuery简单使用示例
  2. MECAT:PC组装人的基因组
  3. python3基础教程廖雪峰云-学习廖雪峰Python3教程的pytho
  4. Geometers Anonymous Club CodeForces - 1195F (闵可夫斯基和)
  5. Asp.net下web.config或是bin中的dll有变更后,重启的问题
  6. Windows下rsync软件配置和使用【数据同步】
  7. android 解决错误:Intel HAXM is required to run this AVD
  8. 问题解决 | maven包冲突了怎么办,这款插件你不容错过
  9. Arcgis javascript那些事儿(十六)——GP服务的发布与使用
  10. 51nod-1351:吃点心
  11. 浅谈客服中心员工情绪管理这件事
  12. pycharm个人最喜欢的配色方案
  13. 人生励志语录 排比句
  14. Appium 按压元素进行滑动
  15. Anaconda3 python3.7安装Django稀里糊涂终于successful法
  16. 【DKN】(七)dataset.py【未完】
  17. Windows解锁网易云音乐客户端变灰歌曲
  18. 恢复系统设置或计算机点击没反应,win7自带还原里quot;恢复系统设置或计算机quot;点击没反应...
  19. Apache Doris技术实践
  20. 数学建模之倚天剑与屠龙刀

热门文章

  1. 如何查区块链项目的服务器地址,怎么查区块链服务器地址
  2. 4.2 英文分词及词性标注
  3. APIC Timer
  4. 基类、派生类、虚基类、虚函数、虚析构、纯虚函数、抽象类
  5. 「雕爷学编程」Arduino动手做(25)——MQ2气敏检测模块
  6. Android 判断当前应用是否开启消息通知
  7. python开发小程序拼团_微信小程序新功能,正合适开发拼团类小程序|明智科技...
  8. html 边框终点 圆点,CSS设置虚线或虚边框dashed border
  9. html中表格边框好看的样式,table完美css样式 table表格边框样式
  10. c语言编程a4988驱动步进电机,A4988步进电机单片机驱动程序