DUICUO

K9 はどのようにして Kubernetes クラスターの管理を加速できるのでしょうか?

[[333142]]

[51CTO.comからのオリジナル記事] K9sは、Kubernetesクラスターとの対話を可能にするターミナルベースのUIです。K9sは、デプロイされたアプリケーションのナビゲーション、監視、管理のプロセスを簡素化することを目的としています。K9sはKubernetesへの変更を継続的に監視し、監視対象のリソースと対話するための後続コマンドを提供します。

特徴

  • Kubernetes クラスターで実行されているリソースのリアルタイム アクティビティを追跡します。
  • Kubernetes の標準リソースとカスタム リソース定義を処理します。
  • ポッド、コンテナ、ノードなどのリソースに関連するリアルタイムのメトリックを追跡します。
  • ログ、スケーリング、ポート転送、再起動などの標準的なクラスター管理コマンドを提供します。
  • エイリアスとホットキーを使用してコマンドのショートカットをカスタマイズします。
  • 独自のクラスター コマンドを作成するために K9s プラグインを拡張することをサポートします。
  • 強力なフィルタリング モード: ユーザーが自分のワークロードに関連するリソースをドリルダウンして表示できるようにします。
  • エラー増幅: クラスター リソースの問題を直接詳細に把握します。
  • カスタマイズ可能な外観
    • K9s スキンを使用してターミナルの外観を定義します。
    • リソースごとに表示される列をカスタマイズ/配置します。
  • 最小または完全なリソース定義を表示するための切り替えを提供します。
  • Pulse および XRay ビューを通じてクラスター リソースの概要を提供します。
  • RBAC
    • クラスター/ロールやそれらに関連付けられたバインディングなどの RBAC ルールの表示をサポートします。
    • 逆引き参照は、ユーザー/グループまたは ServiceAccount がクラスター上で何ができるかをアサートします。
  • K9s に組み込まれているベンチマークから HTTP サービス/ポッドを直接ベンチマークして、アプリケーションのパフォーマンスを確認し、それに応じてリソース要求/制限を調整できます。
  • K9s は、Kubernetes リソースとその関連リソースを走査するための便利な方法を提供します。

インストール

K9sはLinux、macOS、Windowsプラットフォームで使用できます。K9sの公式ドキュメントは非常にシンプルなので、ここでは詳しく説明しませんので、直接参照してください。

注文

K9sはKubernetesクラスターの表示と管理のためのCLIです。一緒に使い方を学び、その便利さとパワーを体験してみましょう。

ヘルプコマンド

k9sヘルプ: 利用可能なすべてのCLIオプションを一覧表示します

  1. # k9s ヘルプ
  2. K9s は、Kubernetes クラスターを表示および管理するためのCLIです
  3. 使用法:
  4. k9s [フラグ]
  5. k9s [コマンド]
  6. 使用可能なコマンド:
  7. ヘルプコマンドに関するヘルプ
  8. info設定情報を印刷
  9. バージョン バージョン/ビルド情報を印刷
  10. フラグ:
  11. -A, --all-namespaces すべての名前空間で K9s を起動します
  12. --as string 操作のために偽装するユーザー名
  13. --as-group stringArray 操作のために偽装するグループ
  14. --certificate-authority string 証明機関の証明書ファイルへのパス
  15. --client-certificate string TLSのクライアント証明書ファイルへのパス
  16. --client-key string TLSのクライアントキーファイルへのパス
  17. --cluster string 使用するkubeconfigクラスターの名前
  18. -c, --command 文字列 アプリケーションの起動時に表示されるデフォルトのコマンドを指定します
  19. --context string 使用するkubeconfigコンテキストの名前
  20. --demo デモモードを有効にしてキーボードコマンドを表示します
  21. --headless K9s ヘッダーをオフにする
  22. -h, --help k9s のヘルプ
  23. --insecure-skip-tls-verify trueの場合、サーバーのcaCertFileの有効性はチェックされません
  24. --kubeconfig string CLIリクエストに使用するkubeconfigファイルへのパス
  25. -l, --logLevel stringログレベルを指定します(info、warn、debug、error、fatal、panic、trace)(デフォルトは「info」)
  26. -n, --namespace 文字列 存在する場合、この CLI リクエストの名前空間スコープ
  27. --readonly クラスターを変更するすべてのコマンドを無効にする
  28. -r, --refresh intデフォルトのリフレッシュレートを整数(秒)で指定します(デフォルトは2)
  29. --request-timeout 文字列 単一のサーバー要求を放棄するまでの待機時間の長さ
  30. --token string APIサーバーへの認証用のベアラートークン
  31. --user string使用するkubeconfigユーザーの名前
  32. コマンドの詳細については、 「k9s [command] --help」を使用してください。

k9s info: K9s ランタイムに関する情報 (ログ、構成など) を取得します。

  1. # k9s 情報
  2. ____ __.________
  3. | |/ _/ __ _______
  4. | < \____ / ___/
  5. | | \ / /\___ \
  6. |____|__ \ /____//____ >
  7. \/ \/
  8. 設定: /root/.k9s/config.yml
  9. ログ: /tmp/k9s-root.log
  10. スクリーンダンプ: /tmp/k9s-screens-root

k9sバージョン: インストールされているK9sバージョンを確認します

  1. # k9s バージョン
  2. ____ __.________
  3. | |/ _/ __ _______
  4. | < \____ / ___/
  5. | | \ / /\___ \
  6. |____|__ \ /____//____ >
  7. \/ \/
  8. バージョン: 0.19.7
  9. コミット: 46c2f31249b3b67a16659614bde179c481a547de
  10. 日付: 2020-05-23T17:18:49Z

起動コマンド

k9s: k9sを開始

  1. # k9s を開始
  2. k9s
  3. # 指定された名前空間で K9s を実行する
  4. k9s -n マイクールンズ
  5. # K9s を実行し、ポッドビューの `pod command` で起動します
  6. k9s -c ポッド
  7. # デフォルト以外の KubeConfig コンテキストで K9s を起動する
  8. k9s --context クールCtx
  9. # K9s を読み取り専用モードで起動します - すべての変更コマンド (削除作成など) を無効にします
  10. k9s --読み取り専用

ショートカットキー

K9sは、ほとんどのK8sリソースを見つけるためにエイリアスを使用します。こちらがK9sの公式キーバインディングです。

ほとんどすべてはこの写真に載っています。でも、使い方がわからない場合はどうすればいいですか?ご安心ください。以下で一つずつ使い方を解説します。

Ctrl+a: 使用可能なすべてのリソースのエイリアスを表示します。

前述のk9sの機能紹介で述べたように、k9sには多くのショートカットキーとエイリアスが用意されています。これらのショートカットキーを使えば、k8sリソースのエイリアス(略称)を素早く確認でき、リソースへのアクセスが容易になり、作業効率が向上します。

最初の列は Kubernetes リソース名、2 番目の列は Kubernetes コンソールでのリソースの略語 (エイリアス)、3 番目の列はリソースが属するグループです。

?: K9s が提供するコマンド コンソールのショートカット キーを表示します。

Esc: 戻る/終了。

初期のポッド インターフェースに戻ると、デフォルトの名前空間に 2 つのポッド リソースがあることがわかります。

/: フィルターモードに入る

`/custom` と入力すると、現在のビュー内のリソースがフィルタリングされ、名前に文字列「custom」が含まれるすべてのポッドが検索されます。

:: コマンドラインモードに入る

表示したいリソース/リソースエイリアスを自由に入力できます。例: :deploy、:svc...

現在のクラスター内のすべての名前空間を表示するには、:ns と入力します。

結果ビュー:

Kubernetes と同様に、:cm 名前空間、:cj 名前空間などの指定された名前空間内のリソースを表示できます。

cm zhangsan と入力すると、zhangsan 名前空間の下に次の configmap リソースが表示されます。

dyle: それぞれ yaml ログの編集を記述する

これには、リソースの説明情報、YAMLファイル、ログの参照、そしてリソース情報の変更が含まれます。Kubernetesに精通している人なら誰でもこの作業はよく知っているので、ここで詳しく説明する必要はありません。

Ctrl+Z: リソースのエラーメッセージを素早く見つける

Ctrl+D: 選択した Kubernetes リソースを削除します。削除前にメッセージが表示されます。

Ctrl+K: プロンプトなしでリソースを直接削除します。

:q Ctrl c: K9sを終了

これは本当にすごい!ほんの少しの学習で(K9sは私がまとめたこの記事を1つ読むだけで十分です)、仕事の効率を一気に飛躍的に向上させることができます。

設定ファイル

K9sは、ホームディレクトリの.k9sディレクトリ($HOME/.k9s/config.yml)に設定ファイルを保存します。このファイル内のフィールドを変更することで、K9sの現在のデフォルトのブートビューと名前空間情報を保存できます。以下に、設定ファイルの内容と各項目の意味と機能を示します。これらの値は、必要に応じて後で変更できます。

  1. # $HOME/.k9s/config.yml
  2. k9s:
  3. # UIのポーリング間隔を示します。デフォルト値は2秒です。
  4. リフレッシュレート: 2
  5. # K9sヘッ​​ダーを非表示にするにはtrueに設定します。デフォルトはfalseです。
  6. ヘッドレス: false
  7. # delete 、kill、editなどの変更コマンドを無効にするかどうかを示します。デフォルト値はfalseです。
  8. 読み取り専用: false
  9. # すべての端末がこれらの文字をサポートしているわけではないので、アイコンの表示を切り替えます。
  10. アイコンなし:
  11. # ログ設定
  12. ロガー:
  13. # 返される行数を定義します。デフォルトは100です。
  14. 尾: 200
  15. # ビューに表示できるログ行の総数を定義します。デフォルト値: 1000
  16. バッファ: 500
  17. # ログタイムラインを返す間隔を秒単位で指定します。デフォルト値は5分(秒)です。
  18. 秒数: 300
  19. # ログを表示するときに全画面モードに入ります。デフォルト値: false
  20. フルスクリーンログ: false
  21. # ログの改行を切り替えます。デフォルト値: false
  22. テキストラップ:
  23. # ログ行のタイムスタンプ情報を切り替えます。デフォルト値: false
  24. 表示時間:
  25. # 現在のkubeコンテキストを示します。デフォルトは現在のコンテキストです。
  26. 現在のコンテキスト: minikube
  27. # 現在のkubeクラスターを表します。デフォルトは現在のコンテキストクラスターです。
  28. 現在のクラスター: minikube
  29. # 各クラスターの名前空間とビューの設定に基づいた永続ストレージ。
  30. クラスター:
  31. クラスター1:
  32. 名前空間:
  33. アクティブ: クールリオ
  34. お気に入り:
  35. - カサンドラ
  36. -デフォルト
  37. ビュー
  38. アクティブ: po
  39. 機能ゲート:
  40. # ノードシェルのサポートを切り替えます。必要に応じてK9sをノードにラップできるようにします。デフォルトはfalseです。
  41. ノードシェル: false
  42. # シェルポッドにカスタムゲート機能を有効にする機能を提供します
  43. シェルポッド:
  44. # 使用する Shell Pod イメージ。
  45. 画像: killerAdmin
  46. # Shell Pod の名前空間で開始します。
  47. 名前空間: fred
  48. # シェル コンテナーに設定されたリソース制限。
  49. 制限:
  50. CPU: 100m
  51. メモリ: 100Mi
  52. # ポート転送を開始するときに使用する IP アドレス。
  53. ポート転送アドレス: 1.2.3.4
  54. クラスター2:
  55. 名前空間:
  56. アクティブ:すべて
  57. お気に入り:
  58. -全て
  59. - kubeシステム
  60. -デフォルト
  61. ビュー
  62. アクティブ: dp

カスタムコマンドエイリアス

ここまで来たら、K9のすごいところをいくつか紹介しましょう。K9の基本をマスターしたら、次は自分だけのK9コマンドをカスタマイズしてみましょう!一緒に作ってみましょう。

設定ファイル config.yml と同じディレクトリ ($HOME/.k9s の下) に alias.yml という名前のファイルを作成します。

  1. # $HOME/.k9s/alias.yml
  2. エイリアス:
  3. # Podのエイリアスとしてppを使用する
  4. pp: v1/ポッド
  5. # ClusterRoleBindingの略語としてcrbを使用します
  6. crb: rbac. authorization .k8s.io/v1/clusterrolebindings
  7. # ClusterRoleの略語としてCRを使用する
  8. cr: rbac.認証.k8s.io/v1/clusterroles
  9. # デプロイメントのエイリアスとして dep を使用する
  10. dep: アプリ/v1/デプロイメント
  11. # カスタムリソースCRD Frederickの別名としてfredを使用する
  12. フレッド: acme.io/v1alpha1/fredericks

エイリアス/略語/短縮名は同じ意味を持ちますが、ここでは単に理解を容易にするために使用されています。

ショートカットキーをカスタマイズする

頻繁にアクセスするリソースを閲覧する場合、コマンドモードに入ってリソース名やエイリアスを入力するのは面倒です。ホットキーを利用することで、K9s から K8s リソースに素早くアクセスできるように設定できます。

同様に、$HOME/.k9s ディレクトリに /hotkey.yml という名前のファイルを作成して、独自のキーボード ショートカットをカスタマイズすることもできます。

  1. # $HOME/.k9s/hotkey.yml
  2. ホットキー:
  3. # Shift + 0 を押してポッドビューに移動します
  4. シフト0:
  5. ショートカット: Shift-0
  6. 説明: ポッドの表示
  7. コマンド: ポッド
  8. # Shift + 0 を押してデプロイメントビューに移動します
  9. シフト1:
  10. ショートカット: Shift + 1
  11. 説明: デプロイメントを表示
  12. コマンド: dp
  13. # Shift + 0 を押して Xray デプロイメント ビューに移動します
  14. シフト2:
  15. ショートカット: Shift + 2
  16. 説明: XRayデプロイメント
  17. コマンド: xray deploy

同様に、この方法でプラグインをカスタマイズしてK9sを拡張することもできます。$HOME/.k9sディレクトリにplugin.ymlというファイルを作成することで実現できます。魚を与えるよりも、魚の釣り方を教える方が効果的です。公式ドキュメントを参考に、ぜひご自身で試してみてください。私が方法をお伝えしたので、賢い人は「魚の釣り方」を学ぶべきです。

一生懸命働くのではなく、賢く働くことが大切です。

著者: 張源輝

自己紹介:私は中科星図有限公司(北京)の研究開発部門バックエンド技術グループに勤務しています。Python/Java開発に精通し、フロントエンド開発の基礎知識を有しています。MySQLとMongoDBのスキルがあり、Redisについてもある程度の知識を持っています。Linux開発環境に精通し、Shellプログラミングに精通し、Gitソースコード管理の習慣も身についています。Nginx、Flask、Swagger開発フレームワークに精通しており、Docker+Kubernetesクラウドサービス開発の経験があります。人工知能とクラウドネイティブ技術に強い関心を持っています。

[これは51CTOからのオリジナル記事です。提携サイトへの転載の際は、原著者と出典を51CTO.comと明記してください。]