【51CTO.com原創(chuàng)稿件】K9s是一個基于終端的UI,可以與Kubernetes集群進行交互。K9s的目的是簡化導(dǎo)航,觀察和管理已部署應(yīng)用程序的過程。K9s持續(xù)監(jiān)視Kubernetes的變化,并提供后續(xù)命令來與所觀察到的資源進行交互。
特征
- 跟蹤Kubernetes集群中運行的資源的實時活動。
- 處理Kubernetes標準資源和自定義資源定義。
- 跟蹤與Pod、容器和節(jié)點等資源相關(guān)的實時指標。
- 提供標準的集群管理命令,例如log,scaling,port-forward,restart...
- 通過別名和熱鍵自定義命令快捷方式。
- 支持擴展K9s插件以創(chuàng)建自己的集群命令。
- 強大的過濾模式:允許用戶向下鉆并查看與工作負載相關(guān)的資源。
- 誤差放大:直接深入了解群集資源的問題。
- 外觀可定制
- 通過K9s皮膚定義自己的終端外觀。
- 按資源自定義/安排要顯示的列。
- 提供查看最小或完整資源定義的切換
- 通過Pulses和XRay視圖提供群集資源的概述。
- RBAC
- 支持查看RBAC規(guī)則,例如群集/角色及其關(guān)聯(lián)的綁定。
- 反向查找斷言用戶/組或ServiceAccount可以在集群上做什么。
- 可以直接從K9s內(nèi)置的基準測試對HTTP services/pods進行基準測試,以查看應(yīng)用程序的運行情況,并相應(yīng)地調(diào)整資源請求/限制。
- K9s提供方便地遍歷Kubernetes資源及其相關(guān)資源。
安裝
K9s可用于Linux、macOS和Windows平臺,可直接參考K9s官方文檔,因為非常簡單這里就不再過多贅述。
命令
K9s是一個用于查看和管理Kubernetes集群的CLI。接下來我們一起學(xué)習一下它的使用方法,感受下它的便捷和強大。
幫助命令
k9s help:列出所有可用的CLI選項
- # k9s help
- K9s is a CLI to view and manage your Kubernetes clusters.
- Usage:
- k9s [flags]
- k9s [command]
- Available Commands:
- helpHelp about any command
- infoPrint configuration info
- version Print version/build info
- Flags:
- -A, --all-namespaces Launch K9s in all namespaces
- --as string Username to impersonate for the operation
- --as-group stringArray Group to impersonate for the operation
- --certificate-authority string Path to a cert file for the certificate authority
- --client-certificate string Path to a client certificate file for TLS
- --client-key string Path to a client key file for TLS
- --cluster string The name of the kubeconfig cluster to use
- -c, --command string Specify the default command to view when the application launches
- --context string The name of the kubeconfig context to use
- --demo Enable demo mode to show keyboard commands
- --headless Turn K9s header off
- -h, --help help for k9s
- --insecure-skip-tls-verify If true, the server's caCertFile will not be checked for validity
- --kubeconfig string Path to the kubeconfig file to use for CLI requests
- -l, --logLevel stringSpecify a log level (info, warn, debug, error, fatal, panic, trace) (default "info")
- -n, --namespace string If present, the namespace scope for this CLI request
- --readonly Disable all commands that modify the cluster
- -r, --refresh intSpecify the default refresh rate as an integer (sec) (default 2)
- --request-timeout string The length of time to wait before giving up on a single server request
- --token string Bearer token for authentication to the API server
- --user stringThe name of the kubeconfig user to use
- Use "k9s [command] --help" for more information about a command.
k9s info:獲取關(guān)于K9s運行時的信息(日志、配置等)
- # k9s info
- ____ __.________
- | |/ _/ __ \______
- | < \____ / ___/
- | | \ / /\___ \
- |____|__ \ /____//____ >
- \/ \/
- Configuration: /root/.k9s/config.yml
- Logs: /tmp/k9s-root.log
- Screen Dumps: /tmp/k9s-screens-root
k9s version:查看K9s安裝版本
- # k9s version
- ____ __.________
- | |/ _/ __ \______
- | < \____ / ___/
- | | \ / /\___ \
- |____|__ \ /____//____ >
- \/ \/
- Version: 0.19.7
- Commit: 46c2f31249b3b67a16659614bde179c481a547de
- Date: 2020-05-23T17:18:49Z
啟動命令
k9s:啟動k9s
- # 啟動k9s
- k9s
- # 在給定的namespace中運行K9s
- k9s -n mycoolns
- # 運行K9s并通過`pod命令`在pod視圖中啟動
- k9s -c pod
- # 在非默認的KubeConfig上下文中啟動K9s
- k9s --context coolCtx
- # 以只讀模式啟動K9s -禁用所有修改命令(delete,create等)
- k9s --readonly
快捷鍵
K9s使用別名來定位到大多數(shù)K8s資源。這里貼出K9S官方的按鍵綁定。
基本所有的東西都在這張圖里了,看到了不會用怎么辦?別著急,下面我還是和大家一起挨個演示一遍它的用法。
Ctrl a:顯示所有可用資源的別名。
上面介紹k9s的特征時提到過,K9s為我們提供很多快捷鍵和別名,通過這個快捷鍵我們可以快速查看K8s的資源別名(縮寫),幫助我們輕松資源,提高工作效率。
第一列為k8s資源名稱,第二列為K9s 控制臺對應(yīng)的資源簡稱(別名),第三列為該資源所在的組。
?:顯示K9s提供的命令控制臺的快捷鍵。
Esc:返回/退出。
我們回到初始pod界面,可以看到在default名稱空間下我有兩個pod資源:
/:進入過濾模式
輸入/custom,對當前視圖下的資源進行過濾,查找名稱含有custom字符串的所有pod:
::進入命令行模式
允許你輸入想要查看的任何資源/資源別名。例如::deploy,:svc......
輸入:ns,查看當前集群的所有namespace:
結(jié)果視圖:
和k8s一樣,可以查看指定命名空間的資源,例如::cm namespace,:cj namespace。
輸入:cm zhangsan,看一下zhangsan名稱空間下的configmap資源如下:
d y l e:分別對應(yīng)于describe yaml logs edit
即查看資源的描述信息、yaml文件和日志,對資源信息進行修改,大家玩兒k8s的都很熟悉,這里細節(jié)沒必要再過多展開了。
Ctrl z:快速定位資源錯誤信息
Ctrl d:刪除選中的K8s資源,刪除前提示
Ctrl k:直接刪除資源,沒有提示
:q Ctrl c:退出K9s
簡直不要太酷了!你只需要付出很少的學(xué)習成本(K9s只要看完我整理的這一篇,在工作中就足夠用了),就能大大提高工作效率,一勞永逸。
配置文件
K9s將其配置文件保存在主目錄的.k9s目錄中$HOME/.k9s/config.yml。我們可以通過修改該文件的字段來存儲K9s當前默認啟動視圖和命名空間信息,下面我列出配置文件中的內(nèi)容和每一項代表的含義和作用,后面可根據(jù)自己的需求對值進行修改即可。
- # $HOME/.k9s/config.yml
- k9s:
- # #表示ui輪詢間隔。默認值2secs
- refreshRate: 2
- # 設(shè)置為true以隱藏K9s標頭。默認值false
- headless: false
- # 指示是否禁用諸如delete/kill/edit之類的修改命令。默認值為false
- readOnly: false
- # 切換圖標顯示,因為并非所有終端都支持這些字符。
- noIcons: false
- # 日志配置
- logger:
- # 定義要返回的行數(shù)。默認100
- tail: 200
- # 定義視圖中允許的日志行總數(shù)。默認值1000
- buffer: 500
- # 表示以秒為單位返回日志時間軸的距離。默認值為5分鐘(秒)
- sinceSeconds: 300
- # 在顯示日志時進入全屏模式。默認值false
- fullScreenLogs: false
- # 切換日志換行。默認值false
- textWrap: false
- # 切換日志行時間戳信息。默認值false
- showTime: false
- # 指示當前的kube上下文。默認為當前上下文
- currentContext: minikube
- # 表示當前的kube集群。默認為當前上下文集群
- currentCluster: minikube
- # 根據(jù)每個集群的命名空間和視圖偏好持久存儲。
- clusters:
- cluster1:
- namespace:
- active: coolio
- favorites:
- - cassandra
- - default
- view:
- active: po
- featureGates:
- # 切換nodeshell支持。如果需要,允許K9s封裝到節(jié)點中。默認為false。
- nodeShell: false
- # 提供shell pod啟用自定義gate功能
- shellPod:
- # 要使用的Shell Pod鏡像。
- image: killerAdmin
- # 要啟動到Shell Pod的namespace。
- namespace: fred
- # 在shell容器上設(shè)置的資源限制。
- limits:
- cpu: 100m
- memory: 100Mi
- # 啟動端口轉(zhuǎn)發(fā)時使用的IP地址。
- portForwardAddress: 1.2.3.4
- cluster2:
- namespace:
- active: all
- favorites:
- - all
- - kube-system
- - default
- view:
- active: dp
自定義命令別名
看到這里了,是時候帶大家真正秀一波K9s的”騷操作“了。掌握了K9s的基本用法,我們可以定制自己的K9s命令了!下面我們接著一起定制一個。
在配置文件config.yml同級目錄$HOME/.k9s下,創(chuàng)建一個名為alias.yml的文件:
- # $HOME/.k9s/alias.yml
- alias:
- # 使用pp作為Pod的別名
- pp: v1/pods
- # 使用crb作為 ClusterRoleBinding的縮寫
- crb: rbac.authorization.k8s.io/v1/clusterrolebindings
- # 使用cr作為ClusterRole的簡稱
- cr: rbac.authorization.k8s.io/v1/clusterroles
- # 使用dep作為Deployments的別名
- dep: apps/v1/deployments
- # 使用fred作為自定義資源CRD Frederick的別名
- fred: acme.io/v1alpha1/fredericks
別名/簡稱/縮寫是相同的意思,這里只是為了便于大家理解。
自定義快捷鍵
進入命令模式并輸入資源名稱或別名對于瀏覽經(jīng)常訪問的資源可能很麻煩。通過利用hotkeys,可以將K9s配置為快速導(dǎo)航到我們的K8s資源。
同樣的,這里我們也可以在$HOME/.k9s目錄下創(chuàng)建一個名為/hotkey.yml的文件,來定制我們自己的快捷鍵:
- # $HOME/.k9s/hotkey.yml
- hotKey:
- # 點擊Shift-0導(dǎo)航到pod視圖
- shift-0:
- shortCut: Shift-0
- description: Viewing pods
- command: pods
- # 點擊Shift-0導(dǎo)航到deployments視圖
- shift-1:
- shortCut: Shift-1
- description: View deployments
- command: dp
- # 點擊Shift-0導(dǎo)航到xray deployments視圖
- shift-2:
- shortCut: Shift-2
- description: XRay Deployments
- command: xray deploy
同樣的,后面你可以基于此方法,自定義插件對K9s進行擴展,也是通過在$HOME/.k9s目錄下,創(chuàng)建一個名為plugin.yml的文件,授人以魚不如授人以漁,這里我希望你可以參照官方文檔自己動手試一試,方法都交給你了,聰明人要學(xué)會要”漁“。
Tt's important to work smarter, not harder.
作者:臧遠慧
簡介:就職于中科星圖股份有限公司(北京),研發(fā)部后端技術(shù)組。個人擅長 Python/Java 開發(fā),了解前端基礎(chǔ);熟練掌握 MySQL,MongoDB,了解 Redis;熟悉 Linux 開發(fā)環(huán)境,掌握 Shell 編程,有良好的 Git 源碼管理習慣;精通 Nginx ,F(xiàn)lask、Swagger 開發(fā)框架;有 Docker+Kubernetes 云服務(wù)開發(fā)經(jīng)驗。對人工智能、云原生技術(shù)有較大的興趣。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】