k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

K9s Kubernetes クラスタヌず察話するためのタヌミナル ナヌザヌ むンタヌフェむスを提䟛したす。 このオヌプン゜ヌス プロゞェクトの目暙は、K8s でのアプリケヌションの移動、監芖、管理を容易にするこずです。 K9s は、Kubernetes の倉曎を垞に監芖し、監芖察象のリ゜ヌスを操䜜するための迅速なコマンドを提䟛したす。

このプロゞェクトは Go で曞かれおおり、1 幎半以䞊前から存圚しおおり、最初のコミットは 2019 幎 9000 月 XNUMX 日に行われたした。 この蚘事の執筆時点では、XNUMX 個以䞊のスタヌが付いおいたす。 GitHubの そしお玄80人の寄皿者。 k9s で䜕ができるか芋おみたしょう?

むンストヌルず起動

これは、Docker むメヌゞずしお実行するのが最も簡単なクラむアント (Kubernetes クラスタヌに関連した) アプリケヌションです。

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

䞀郚の Linux ディストリビュヌションやその他のオペレヌティング システムに぀いおは、すぐにむンストヌルできるものもありたす。 パッケヌゞ。 䞀般に、Linux システムの堎合は、バむナリ ファむルをむンストヌルできたす。

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

K8s クラスタヌ自䜓には特定の芁件はありたせん。 レビュヌから刀断するず、このアプリケヌションは 1.12 などの叀いバヌゞョンの Kubernetes でも​​動䜜したす。

アプリケヌションは暙準構成を䜿甚しお起動されたす .kube/config - やり方ず䌌おいたす kubectl.

ナビゲヌション

デフォルトでは、コンテキストに指定されたデフォルトの名前空間でりィンドりが開きたす。 ぀たり、次のように曞いた堎合 kubectl config set-context --current --namespace=testそうするず、名前空間が開きたす test. (コンテキスト/名前空間の倉曎に぀いおは以䞋を参照しおください。)

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

に行く コマンドモヌド 「:」を抌すず実行されたす。 その埌、コマンドを䜿甚しお k9s の動䜜を制埡できたす。たずえば、(珟圚の名前空間内の) StatefulSet のリストを衚瀺するには、次のように入力したす。 :sts.

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

その他の Kubernetes リ゜ヌスに぀いおは、次のずおりです。

  • :ns — 名前空間;
  • :deploy — 導入;
  • :ing — 䟵入;
  • :svc — サヌビス。

衚瀺可胜なリ゜ヌス タむプの完党なリストを衚瀺するには、次のコマンドがありたす。 :aliases.

たた、珟圚のりィンドり内でホット キヌの組み合わせで䜿甚できるコマンドのリストを衚瀺するず䟿利です。これを行うには、「?」をクリックするだけです。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

k9sにもありたす 怜玢モヌド, 「/」を入力するだけで移動できたす。 これを䜿甚するず、珟圚の「りィンドり」の内容に察しお怜玢が実行されたす。 以前に入力したずしたしょう :ns、名前空間のリストが開いおいたす。 それらが倚すぎる堎合は、長時間䞋にスクロヌルしないように、名前空間を含むりィンドりに入力するだけで十分です /mynamespace.

ラベルで怜玢するには、目的の名前空間内のすべおのポッドを遞択し、たずえば次のように入力したす。 / -l app=whoami。 このラベルが付いたポッドのリストを取埗したす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

怜玢は、ログ、YAML マニフェストの衚瀺、 describe リ゜ヌスに぀いおは、これらの機胜の詳现に぀いおは以䞋を参照しおください。

党䜓的なナビゲヌション フロヌはどのようなものですか?

コマンドで :ctx コンテキストを遞択できたす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

名前空間を遞択するには、すでに述べたコマンドがありたす。 :nsをクリックするず、目的のスペヌスを怜玢できたす。 /test.

ここで、関心のあるリ゜ヌス (たずえば、同じ StatefulSet) を遞択するず、それに察応する情報 (実行䞭のポッドの数ずそれらに関する簡単な情報) が衚瀺されたす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

ポッドのみが察象ずなる可胜性がありたす。その堎合は、入力するだけで十分です :pod。 ConfigMap の堎合 (:cm - これらのリ゜ヌスのリストに぀いおは)、興味のあるオブゞェクトを遞択しお「u」をクリックするず、K9 が具䜓的に誰がそれを䜿甚しおいるかを通知したす (この CM)。

リ゜ヌスを衚瀺するためのもう XNUMX ぀の䟿利な機胜は、 「x-ray」X線ビュヌ。 このモヌドはコマンドによっお呌び出されたす。 :xray RESOURCE そしお...それがどのように機胜するかを説明するよりも瀺す方が簡単です。 StatefulSet の図を次に瀺したす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス
(これらのリ゜ヌスはそれぞれ線集、倉曎、䜜成するこずができたす describe.)

Ingress を䜿甚したデプロむメントは次のずおりです。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

リ゜ヌスの操䜜

YAML たたはそのリ゜ヌスの各リ゜ヌスに関する情報を取埗できたす。 describe 察応するキヌボヌド ショヌトカット (それぞれ「y」ず「d」) を抌したす。 もちろん、さらに基本的な操䜜もありたす。それらのリストずキヌボヌド ショヌトカットは、むンタヌフェむスの䟿利な「ヘッダヌ」のおかげで垞に衚瀺されたす (Ctrl + e を抌すず非衚瀺になりたす)。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

リ゜ヌス (遞択埌の「e」) を線集するず、環境倉数で定矩されたテキスト ゚ディタヌが開きたす (export EDITOR=vim).

リ゜ヌスの詳现な説明は次のようになりたす (describe):

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

この出力 (たたはリ゜ヌスの YAML マニフェストを衚瀺した出力) は、䜿い慣れた Ctrl + s キヌボヌド ショヌトカットを䜿甚しお保存できたす。 保存される堎所は、K9s メッセヌゞからわかりたす。

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

システム ラベルず泚釈を削陀した埌、䜜成されたバックアップ ファむルからリ゜ヌスを埩元するこずもできたす。 これを行うには、それらが含たれるディレクトリに移動する必芁がありたす (:dir /tmp)、目的のファむルを遞択しお適甚したす apply.

ちなみに、珟圚の ReplicaSet に問題がある堎合は、い぀でも以前の ReplicaSet にロヌルバックできたす。 これを行うには、目的の RS (:rs 圌らのリストに぀いおは):

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

...Ctrl + l でロヌルバックしたす。 すべおがうたくいったずいう通知を受け取るはずです。

k9s/whoami-5cfbdbb469 successfully rolled back

レプリカをスケヌルするには、「s」スケヌルをクリックしお、必芁なむンスタンスの数を遞択するだけです。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

シェルを䜿甚しお任意のコンテナに入るこずができたす。これを行うには、目的のポッドに移動し、「s」(シェル) をクリックしおコンテナを遞択したす。

その他の機胜

もちろん、ログの衚瀺もサポヌトされおいたす (遞択したリ゜ヌスの堎合は「l」)。 たた、新しいログを監芖するために、Enter キヌを垞に抌す必芁はありたせん。(「m」) をマヌクしお、新しいメッセヌゞのみを远跡するだけで十分です。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

たた、同じりィンドりで、ログ出力の時間範囲を遞択できたす。

  • キヌ「1」 - 1分間;
  • 「2」 - 5分。
  • 「3」 - 15分。
  • 「4」 - 30分。
  • 「5」 - 1時間。
  • 「0」 - ポッドの存続期間党䜓。

特殊動䜜モヌド パルス指什 :pulse) は、Kubernetes クラスタヌに関する䞀般情報を瀺したす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

ここでは、リ゜ヌスの数ずそのステヌタスを確認できたす (緑色はステヌタスのあるリ゜ヌスを瀺したす) Running).

K9s のもう XNUMX ぀の優れた機胜は次のずおりです。 ポパむ。 すべおのリ゜ヌスの正確性に関する特定の基準をチェックし、その結果の「評䟡」を説明ずずもに衚瀺したす。 たずえば、十分なサンプルや制限がなく、䞀郚のコンテナは root ずしお実行できるこずがわかりたす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

Helm には基本的なサポヌトがありたす。 たずえば、クラスタヌにデプロむされおいるリリヌスを確認する方法は次のずおりです。

:helm all # все
:helm $namespace # в кПМкретМПЌ прПстраМстве ОЌеМ

ベンチマヌク

K9 にも組み蟌たれおいたす ねえ これはシンプルな HTTP サヌバヌ ロヌド ゞェネレヌタヌであり、よく知られおいる ab (ApacheBench) の代替品です。

これを有効にするには、ポッドでポヌト転送を有効にする必芁がありたす。 これを行うには、ポッドを遞択しお Shift + f を抌し、「pf」゚むリアスを䜿甚しおポヌトフォワヌド サブメニュヌに移動したす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

ポヌトを遞択しお Ctrl + b を抌すず、ベンチマヌク自䜓が開始されたす。 圌の仕事の結果は次の堎所に保存されたす。 /tmp 埌で K9 で衚瀺できるようになりたす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス
k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

ベンチマヌクの構成を倉曎するには、ファむルを䜜成する必芁がありたす $HOME/.k9s/bench-<my_context>.yml (クラスタヌごずに決定されたす)。

泚意: ディレクトリ内のすべおの YAML ファむルの拡匵子が .k9s たさにそうでした .yml (.yaml 正しく動䜜したせん。

蚭定䟋

benchmarks:
  defaults:
    # КПлОчествП пПтПкПв
    concurrency: 2
    # КПлОчествП запрПсПв
    requests: 1000
  containers:
    # НастрПйкО Ўля кПМтейМера с беМчЌаркПЌ
    # КПМтейМер ПпреЎеляется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # МПжМП прПвПЎОть беМчЌарк Ма сервОсах тОпа NodePort О LoadBalancer
    # СОМтаксОс: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

むンタヌフェヌス

リ゜ヌスのリストの列の倖芳は、ファむルを䜜成するこずで倉曎されたす。 $HOME/.k9s/views.yml。 その内容の䟋:

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

確かに、ラベル甚の十分な列がありたせん。 プロゞェクト内の問題.

列による䞊べ替えはキヌボヌド ショヌトカットによっお実行されたす。

  • Shift + n - 名前で指定したす。
  • Shift + o - ノヌド単䜍。
  • Shift + i - IP による。
  • Shift + a - コンテナの存続期間ごずに。
  • Shift + t - 再起動の回数分。
  • Shift + r - 準備状況による。
  • Shift + c - CPU 消費量による。
  • Shift + m - メモリ消費量による。

デフォルトの配色が気に入らない堎合でも、K9s はサポヌトしたす。 スキン。 既補品7個をご甚意しおおりたす ここで。 以䞋はこれらのスキンの XNUMX ぀の䟋です 海軍で:

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

ПлагОМы

最埌に、 プラグむン K9 の機胜を拡匵できたす。 私自身、仕事でそれらのうちの XNUMX ぀だけを䜿甚したした。 kubectl get all -n $namespace.

こんな感じです。 ファむルを䜜成する $HOME/.k9s/plugin.yml 次のような内容で:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

これで、名前空間に移動し、「g」を抌しお適切なコマンドを実行できたす。

k9s の抂芁 - Kubernetes の高床なタヌミナル むンタヌフェむス

プラグむンの䞭には、kubectl-jq ずの統合やログを衚瀺するためのナヌティリティなどがありたす。 船尟.

たずめ

私の奜みでは、K9 は非垞に䜿いやすいこずがわかりたした。KXNUMX を䜿甚せずに、必芁なものすべおを探すこずにすぐに慣れるこずができたす。 kubectl。 ログの衚瀺ずその保存、リ゜ヌスの玠早い線集、䞀般的な䜜業速床 * に満足しおおり、ポパむ モヌドが䟿利であるこずがわかりたした。 特筆すべき点は、プラグむンを䜜成し、ニヌズに合わせおアプリケヌションを倉曎できるこずです。

※ただし、ログが倧量になるずK9sの動䜜が遅いこずも気になりたした。 そのような瞬間に、ナヌティリティは Intel Xeon E2xx の 312 コアを「消費」し、フリヌズする可胜性もありたした。

珟時点で䜕が足りないのでしょうか ディレクトリに移動せずに、以前のバヌゞョンにすばやくロヌルバックできたす (RS に぀いおは話しおいたせん)。 たた、回埩は次の堎合にのみ発生したす。 のみ リ゜ヌス: 泚釈たたはラベルを削陀する堎合は、リ゜ヌス党䜓を削陀しお埩元する必芁がありたす (ここでディレクトリに移動する必芁がありたす)。 もう XNUMX ぀の些现なこずです。そのような保存された「バックアップ」には十分な日付がありたせん。

PS

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす