K9s之Kubernetes集群管理交互工具实践
文章目录:
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
配置示例
K9s 使用 256 色终端模式。在 `Nix 系统上,确保相应地设置了 TERM。
export TERM=xterm-256color
为了发出清单编辑命令,请确保您的 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
K9s 更喜欢最近的 kubernetes 版本,即 1.16+。
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
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
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
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
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...
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
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集群管理交互工具实践相关推荐
- 美团点评Kubernetes集群管理实践
背景 作为国内领先的生活服务平台,美团点评很多业务都具有非常显著.规律的"高峰"和"低谷"特征.尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长.这 ...
- Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere
前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...
- 搭建kubernetes集群管理平台
一. kubernetes和相关组件介绍 1. kubernetes概述 Kubernetes是google开源的容器集群管理系统,基于docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务 ...
- 基于Rancher实现kubernetes集群管理
基于Rancher实现kubernetes集群管理 1.Rancher介绍 2.Rancher部署 添加kubernetes集群 3.Rancher简单操作 1.Rancher介绍 Rancher可以 ...
- 4、kubernetes 集群管理工具 kubectl
文章目录 kubectl概述 K8s kubectl 命令自动补全 kubectl的常用子命令(command) kubernetes资源对象类型(type) kubectl 常用命令总结 kubec ...
- 云原生第4课:Kubernetes 集群管理
本篇文章来自<华为云云原生王者之路训练营>黄金系列课程第4课,由华为云Kubernetes容器平台技术专家Alan主讲,详细介绍Kubernetes集群和Kubernetes节点的生命周期 ...
- kubernetes集群命令行工具kubectl
文章目录 1 kubectl 概述 2 kubernetes命令 2.1 kubectl 命令的语法 2.2 常用命令 1 kubectl 概述 kubectl是Kubernetes集群的命令行工具, ...
- 基于Python+Django的Kubernetes集群管理平台
时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调度管理等方面都有其难以言喻的优 ...
- 【CKA考试笔记】三、kubernetes集群管理
文章目录 实验环境 一.查看集群配置信息 二.查看各节点所使用的runtime是什么 三.集群缩容 四.集群扩容 五.恢复出厂设置reset.重新初始化集群 实验:删除集群中所有节点,并重新初始化集群 ...
最新文章
- SPQuery简单使用示例
- MECAT:PC组装人的基因组
- python3基础教程廖雪峰云-学习廖雪峰Python3教程的pytho
- Geometers Anonymous Club CodeForces - 1195F (闵可夫斯基和)
- Asp.net下web.config或是bin中的dll有变更后,重启的问题
- Windows下rsync软件配置和使用【数据同步】
- android 解决错误:Intel HAXM is required to run this AVD
- 问题解决 | maven包冲突了怎么办,这款插件你不容错过
- Arcgis javascript那些事儿(十六)——GP服务的发布与使用
- 51nod-1351:吃点心
- 浅谈客服中心员工情绪管理这件事
- pycharm个人最喜欢的配色方案
- 人生励志语录 排比句
- Appium 按压元素进行滑动
- Anaconda3 python3.7安装Django稀里糊涂终于successful法
- 【DKN】(七)dataset.py【未完】
- Windows解锁网易云音乐客户端变灰歌曲
- 恢复系统设置或计算机点击没反应,win7自带还原里quot;恢复系统设置或计算机quot;点击没反应...
- Apache Doris技术实践
- 数学建模之倚天剑与屠龙刀
热门文章
- 如何查区块链项目的服务器地址,怎么查区块链服务器地址
- 4.2 英文分词及词性标注
- APIC Timer
- 基类、派生类、虚基类、虚函数、虚析构、纯虚函数、抽象类
- 「雕爷学编程」Arduino动手做(25)——MQ2气敏检测模块
- Android 判断当前应用是否开启消息通知
- python开发小程序拼团_微信小程序新功能,正合适开发拼团类小程序|明智科技...
- html 边框终点 圆点,CSS设置虚线或虚边框dashed border
- html中表格边框好看的样式,table完美css样式 table表格边框样式
- c语言编程a4988驱动步进电机,A4988步进电机单片机驱动程序