K9s-Kubernetes的高級控制檯

K9s Kubernetes CLI,能夠個性化方式管理您的集羣!html

參考:git

Why K9s?

首先咱們得面對現實——Kubernetes及其周邊生態系統的運營方式正變得愈來愈複雜。集羣管理須要大量工具加以配合。當我在集羣之上進行平常運營時,和你們同樣,我也須要觀察本身使用的各類Kubernetes資源、深刻了解配置、設置以及在任務沒能按照預期完成時追蹤問題。這個流程一般須要使用大量使人頭痛、易於混淆的命令,安裝/操做用途單一的CLI工具,同時配合大量自定義bash腳本。除此以外,還有各種運行狀態調整須要考慮……github

我知道,Kubernetes做爲一款技術解決方案正面臨着諸多爭議,但我我的一般選擇在本地開發代碼並面向本地minikube實例,最後才進行Docker化轉換。通常來說,我不須要在本身的集羣之上部署整個應用程序來處理任何給定服務。我發現本身的代碼以及配置與資源清單是一種連續、而非獨立存在的活動。所以,個人平常Kubernetes例程一般包括啓動一個或多個終端窗口,其中又細分爲各種選項卡/窗格,又有部分選項卡/窗格內容納着用於監控資源的監控命令,外加用於發出kubectl並構建命令的開放CLI。api

K9s工做狀態

終於有一天,我對這個極爲燒腦的流程作出一番考量,並意識到徹底能夠經過一款簡單的CLI工具來觀察Kubernetes資源,在各類資源之間切換,檢查清單、日誌、監控事件並執行Pod,從而確保本身寶貴的桌面空間不至於被大量終端窗格所佔據……bash

所以,我編寫了一款用於實現上述目標的工具!我將其命名爲K9s,其工做效果以下圖所示。 
640?wx_fmt=pngK9s Pod視圖
這是一款基於終端的UI,會以特定時間間隔(默認爲2秒)監控Kubernetes資源,並容許我查看本身集羣中的內容。app

我可使用ctx<enter>命令在開發集羣與生產集羣之間快速導航。這款CLI還容許我按照命名空間進行過濾操做,並對大部分Kubernetes資源執行只讀操做(這項功能仍在開發當中……)。若是集羣卡住,我可使用?<enter>命令列出全部受支持的資源。工具

K9s安裝與使用

安裝

K9s 可用於 Linux, OSX 和 Windows 平臺。spa

  • 對於 Linux, Windows 和 Mac 的二進制安裝包,下載到 release 頁面。命令行

  • 對於 OSX,可使用 Homebrew安裝:日誌

    brew tap derailed/k9s && brew install k9s
  • 從源碼構建 K9s,使用 go 1.12 以上版本,須要:

    1. Clone the repo

    2. Set env var GO111MODULE=on

    3. 添加下面行到 go.mod 文件

    4. replace (
        github.com/derailed/k9s => MY_K9S_CLONED_GIT_REPO
      )

       

    5. 構建並運行:  

    6. go run main.go

       


命令行

# List all available CLI options
k9s -h
# To get info about K9s runtime (logs, configs, etc..)
k9s info
# To run K9s in a given namespace
k9s -n mycoolns
# Start K9s in an existing KubeConfig context
k9s --context coolCtx

預先檢查


K9s config file ($HOME/.k9s/config.yml)

K9s 保存配置 dot file 在 home directory

NOTE: This is still in flux and will change while in pre-release stage!

k9s:
  # Indicates api-server poll intervals.
  refreshRate: 2
  # Indicates log view maximum buffer size. Default 1k lines.
  logBufferSize: 200
  # Indicates how many lines of logs to retrieve from the api-server. Default 200 lines.
  logRequestSize: 200
  # 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
    minikube:
      namespace:
        active: all
        favorites:
        - all
        - kube-system
        - default
      view:
        active: dp

快捷鍵綁定

K9s uses aliases to navigate most K8s resources.

Command Result Example
:alias<ENTER> View a Kubernetes resource :po<ENTER>
? Show keyboard shortcuts and help  
Ctrl-a Show all available resource alias select+<ENTER> to view
/filterENTER> Filter out a resource view given a filter /bumblebeetuna
<Esc> Bails out of command mode  
d,vel,... Key mapping to describe, view, edit, view logs,... d (describes a resource)
:ctx<ENTER> To view and switch to another Kubernetes context :+ctx+<ENTER>
:qCtrl-c To bail out of K9s
相關文章
相關標籤/搜索