kubectl をより効果的に䜿甚する方法: 詳现ガむド

kubectl をより効果的に䜿甚する方法: 詳现ガむド
Kubernetes を䜿甚しおいる堎合、kubectl はおそらく最もよく䜿甚するナヌティリティの XNUMX ぀です。 特定のツヌルの䜿甚に倚くの時間を費やす堎合は、そのツヌルをよく研究し、効果的な䜿甚方法を孊ぶこずが重芁です。

チヌム Mail.ru の Kubernetes aaS Daniel Weibel による蚘事を翻蚳したした。この蚘事では、kubectl を効果的に䜿甚するためのヒントずコツが説明されおいたす。 たた、Kubernetes をより深く理解するのにも圹立ちたす。

著者によるず、この蚘事の目暙は、Kubernetes を䜿甚した日垞の䜜業を効率化するだけでなく、より楜しくするこずです。

はじめに: kubectl ずは䜕ですか

kubectl をより効果的に䜿甚する方法を孊ぶ前に、kubectl が䜕であり、どのように機胜するかに぀いお基本的な理解を埗る必芁がありたす。

ナヌザヌの芳点から芋るず、kubectl は Kubernetes 操䜜を実行できるコントロヌル パネルです。

技術的に蚀えば、kubectl は Kubernetes API クラむアントです。

Kubernetes API は HTTP REST API です。 この API は真の Kubernetes ナヌザヌ むンタヌフェむスであり、これを通じお完党に制埡されたす。 これは、すべおの Kubernetes オペレヌションが API ゚ンドポむントずしお公開され、その゚ンドポむントぞの HTTP リク゚ストを䜿甚しお実行できるこずを意味したす。

したがっお、kubectl の䞻な仕事は、Kubernetes API に察しお HTTP リク゚ストを行うこずです。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
Kubernetes は完党にリ゜ヌス指向のシステムです。 これは、リ゜ヌスの内郚状態が維持され、すべおの Kubernetes 操䜜が CRUD 操䜜であるこずを意味したす。

これらのリ゜ヌスを管理するこずで Kubernetes を完党に制埡でき、Kubernetes はリ゜ヌスの珟圚の状態に基づいお䜕をすべきかを刀断したす。 このため、Kubernetes API リファレンスは、リ゜ヌス タむプずそれに関連する操䜜のリストずしお構成されおいたす。

䟋を芋おみたしょう.

ReplicaSet リ゜ヌスを䜜成するずしたす。 これを行うには、ReplicaSet を名前でファむルに蚘述したす。 replicaset.yaml、次にコマンドを実行したす。

$ kubectl create -f replicaset.yaml

これにより、ReplicaSet リ゜ヌスが䜜成されたす。 しかし、舞台裏では䜕が起こっおいるのでしょうか?

Kubernetes には ReplicaSet 䜜成操䜜がありたす。 他の操䜜ず同様に、これは API ゚ンドポむントずしお公開されたす。 この操䜜の特定の API ゚ンドポむントは次のようになりたす。

POST /apis/apps/v1/namespaces/{namespace}/replicasets

すべおの Kubernetes 操䜜の API ゚ンドポむントは、次の堎所にありたす。 APIリファレンス 含む 䞊蚘の゚ンドポむント。 ゚ンドポむントに実際のリク゚ストを行うには、たず API リファレンスにリストされおいる゚ンドポむント パスに API サヌバヌ URL を远加する必芁がありたす。

したがっお、䞊蚘のコマンドを実行するず、kubectl は HTTP POST リク゚ストを䞊蚘の API ゚ンドポむントに送信したす。 ファむル内で指定した ReplicaSet 定矩 replicaset.yaml、リク゚ストの本文で送信されたす。

これは、Kubernetes クラスタヌず察話するすべおのコマンドに察しお kubectl がどのように機胜するかです。 これらのすべおのケヌスにおいお、kubectl は適切な Kubernetes API ゚ンドポむントに察しお HTTP リク゚ストを行うだけです。

次のようなナヌティリティを䜿甚しお Kubernetes を完党に管理できるこずに泚意しおください。 curlHTTP リク゚ストを手動で Kubernetes API に送信したす。 Kubectl は単に Kubernetes API の䜿甚を容易にするだけです。

これは、kubectl ずは䜕か、そしおそれがどのように機胜するかの基本です。 ただし、Kubernetes API に぀いおは、すべおの kubectl ナヌザヌが知っおおくべきこずが他にもありたす。 Kubernetes の内郚䞖界を簡単に芋おみたしょう。

Kubernetes の内郚䞖界

Kubernetes は、クラスタヌ ノヌド䞊で個別のプロセスずしお実行される䞀連の独立したコンポヌネントで構成されたす。 䞀郚のコンポヌネントはマスタヌ ノヌドで実行され、その他のコンポヌネントはワヌカヌ ノヌドで実行され、各コンポヌネントは独自の特定のタスクを実行したす。

メむン ノヌドの最も重芁なコンポヌネントは次のずおりです。

  1. 倉庫 - リ゜ヌス定矩を保存したす (通垞はetcdです).
  2. APIサヌバヌ — API を提䟛し、ストレヌゞを管理したす。
  3. コントロヌラヌマネヌゞャヌ — リ゜ヌスのステヌタスが仕様に準拠しおいるこずを確認したす。
  4. プラハ — ワヌカヌノヌド䞊のポッドをスケゞュヌルしたす。

そしお、ワヌカヌ ノヌド䞊の最も重芁なコンポヌネントの XNUMX ぀を次に瀺したす。

  1. クベレット — 䜜業ノヌドでのコンテナの起動を管理したす。

これらのコンポヌネントがどのように連携しお機胜するかを理解するために、䟋を芋おみたしょう。

完了したばかりだず仮定したしょう kubectl create -f replicaset.yaml、その埌、kubectl が HTTP POST リク゚ストを行った ReplicaSet API ゚ンドポむント (ReplicaSet リ゜ヌス定矩を枡したす)。

クラスタヌ内で䜕が起こっおいるのでしょうか?

  1. した埌 kubectl create -f replicaset.yaml API サヌバヌは、ReplicaSet リ゜ヌス定矩をストレヌゞに保存したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  2. 次に、ReplicaSet コントロヌラヌがコントロヌラヌ マネヌゞャヌで起動され、ReplicaSet リ゜ヌスの䜜成、倉曎、削陀が凊理されたす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  3. ReplicaSet コントロヌラヌは、(ReplicaSet 定矩のポッド テンプレヌトに埓っお) 各 ReplicaSet レプリカのポッド定矩を䜜成し、ストレヌゞに保存したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  4. スケゞュヌラが起動され、ただワヌカヌ ノヌドに割り圓おられおいないポッドを远跡したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  5. スケゞュヌラヌは各ポッドに適切なワヌカヌ ノヌドを遞択し、この情報をストアのポッド定矩に远加したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  6. ポッドが割り圓おられおいるワヌカヌ ノヌドで Kubelet が起動され、このノヌドに割り圓おられたポッドを远跡したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

  7. Kubelet はストレヌゞからポッド定矩を読み取り、Docker などのコンテナヌ ランタむムにノヌド䞊でコンテナヌを起動するように指瀺したす。

    kubectl をより効果的に䜿甚する方法: 詳现ガむド

以䞋はこの説明のテキスト版です。

ReplicaSet 䜜成゚ンドポむントぞの API リク゚ストは API サヌバヌによっお凊理されたす。 API サヌバヌはリク゚ストを認蚌し、ReplicaSet リ゜ヌス定矩をストレヌゞに保存したす。

このむベントは、コントロヌラヌ マネヌゞャヌのサブプロセスである ReplicaSet コントロヌラヌを開始したす。 ReplicaSet コントロヌラヌは、ストア内の ReplicaSet リ゜ヌスの䜜成、曎新、削陀を監芖し、これが発生するずむベント通知を受け取りたす。

ReplicaSet コントロヌラヌの仕事は、必芁な数の ReplicaSet ポッドが存圚するこずを確認するこずです。 この䟋では、ただポッドが存圚しないため、ReplicaSet コントロヌラヌはこれらのポッド定矩を (ReplicaSet 定矩のポッド テンプレヌトに埓っお) 䜜成し、ストレヌゞに保存したす。

新しいポッドの䜜成は、ワヌカヌ ノヌドに察しおただスケゞュヌルされおいないポッド定矩を远跡するスケゞュヌラヌによっおトリガヌされたす。 スケゞュヌラは、各ポッドに適切なワヌカヌ ノヌドを遞択し、リポゞトリ内のポッド定矩を曎新したす。

この時点たで、クラスタヌ内のどこにもワヌクロヌド コヌドが実行されおいなかったこずに泚意しおください。 これたでに行われたすべおのこず - これは、マスタヌ ノヌド䞊のリポゞトリ内のリ゜ヌスの䜜成ず曎新です。

最埌のむベントは Kubelet をトリガヌし、ワヌカヌ ノヌドにスケゞュヌルされたポッドを監芖したす。 ReplicaSet ポッドがむンストヌルされおいるワヌカヌ ノヌドの Kubelet は、Docker などのコンテナ ランタむムに、必芁なコンテナ むメヌゞをダりンロヌドしお実行するように指瀺する必芁がありたす。

この時点で、ReplicaSet アプリケヌションが぀いに実行されたす。

Kubernetes API の圹割

前の䟋で芋たように、Kubernetes コンポヌネント (API サヌバヌずストレヌゞを陀く) は、ストレヌゞ内のリ゜ヌスぞの倉曎を監芖し、ストレヌゞ内のリ゜ヌスに関する情報を倉曎したす。

もちろん、これらのコンポヌネントはストレヌゞず盎接やり取りするのではなく、Kubernetes API を通じおのみやり取りしたす。

次の䟋を考えおみたしょう:

  1. ReplicaSet コントロヌラヌは API ゚ンドポむントを䜿甚したす ReplicaSet のリストを衚瀺する パラメヌタ付き watch ReplicaSet リ゜ヌスぞの倉曎を監芖したす。
  2. ReplicaSet コントロヌラヌは API ゚ンドポむントを䜿甚したす ポッドを䜜成する (ポッドの䜜成) ポッドを䜜成したす。
  3. スケゞュヌラは API ゚ンドポむントを䜿甚したす パッチポッド (ポッドの線集) は、遞択したワヌカヌ ノヌドに関する情報でポッドを曎新したす。

ご芧のずおり、これは kubectl がアクセスする API ず同じです。 内郚コンポヌネントず倖郚ナヌザヌに同じ API を䜿甚するこずは、Kubernetes 蚭蚈の基本的な抂念です。

ここで、Kubernetes がどのように機胜するかを芁玄できたす。

  1. ストレヌゞには状態、぀たり Kubernetes リ゜ヌスが保存されたす。
  2. API サヌバヌは、Kubernetes API の圢匏でストレヌゞぞのむンタヌフェむスを提䟛したす。
  3. 他のすべおの Kubernetes コンポヌネントずナヌザヌは、API を通じお Kubernetes 状態 (リ゜ヌス) を読み取り、芳察し、操䜜したす。

これらの抂念を理解するず、kubectl をより深く理解し、最倧限に掻甚できるようになりたす。

次に、kubectl を䜿甚しお生産性を向䞊させるのに圹立぀いく぀かの具䜓的なヒントずコツを芋おみたしょう。

1. コマンド補完による入力の高速化

kubectl でパフォヌマンスを向䞊させるための最も䟿利ですが、芋萜ずされがちなテクニックの XNUMX ぀は、コマンド補完です。

コマンド補完を䜿甚するず、Tab キヌを䜿甚しお kubectl コマンドの䞀郚を自動的に補完できたす。 これは、リ゜ヌス名のような耇雑なものを含む、サブコマンド、オプション、匕数に察しお機胜したす。

kubectl コマンド補完がどのように機胜するかを確認しおください。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
コマンド補完は Bash シェルず Zsh シェルで機胜したす。

公匏ガむド オヌトコンプリヌトを蚭定するための詳现な手順が蚘茉されおいたすが、以䞋に短い抜粋を瀺したす。

コマンド補完の仕組み

コマンド補完は、補完スクリプトを䜿甚しお動䜜するシェル機胜です。 拡匵スクリプトは、特定のコマンドの拡匵の動䜜を定矩するシェル スクリプトです。

Kubectl は、次のコマンドを䜿甚しお、Bash および Zsh の拡匵スクリプトを自動的に生成し、出力したす。

$ kubectl completion bash

ИлО

$ kubectl completion zsh

理論的には、kubectl がコマンドを補完できるように、これらのコマンドの出力を適切なコマンド シェルに接続するだけで十分です。

実際には、Bash (Linux ず MacOS の違いも含む) ず Zsh では接続方法が異なりたす。 以䞋では、これらすべおのオプションを芋おいきたす。

Linux 䞊のバッシュ

Bash 完了スクリプトは bash-completion パッケヌゞに䟝存しおいるため、最初にそれをむンストヌルする必芁がありたす。

$ sudo apt-get install bash-completion

ИлО

$ yum install bash-completion

次のコマンドを䜿甚しお、パッケヌゞが正垞にむンストヌルされたこずをテストできたす。

$ type _init_completion

これによりシェル関数コヌドが出力された堎合は、bash-completion が正しくむンストヌルされおいたす。 コマンドで「芋぀かりたせん」゚ラヌが発生した堎合は、次の行をファむルに远加する必芁がありたす。 ~ / .bashrc:

$ source /usr/share/bash-completion/bash_completion

この行をファむルに远加する必芁がありたすか? ~ / .bashrc かどうかは、bash-completion のむンストヌルに䜿甚したパッケヌゞ マネヌゞャヌによっお異なりたす。 これは APT には必芁ですが、YUM には必芁ありたせん。

bash-completion をむンストヌルした埌、kubectl 補完スクリプトがすべおのシェル セッションで有効になるようにすべおを構成する必芁がありたす。

これを行う XNUMX ぀の方法は、次の行をファむルに远加するこずです。 ~ / .bashrc:

source <(kubectl completion bash)

別の方法は、kubectl 拡匵スクリプトをディレクトリに远加するこずです。 /etc/bash_completion.d (存圚しない堎合は䜜成したす):

$ kubectl completion bash >/etc/bash_completion.d/kubectl

カタログ内のすべおのアドオン スクリプト /etc/bash_completion.d bash-completion に自動的に含たれたす。

どちらのオプションも同様に適甚できたす。

シェルを再起動するず、kubectl コマンド補完が機胜するようになりたす。

MacOS 䞊の Bash

MacOS では、セットアップは少し耇雑です。 実際、MacOS はデフォルトで Bash バヌゞョン 3.2 を䜿甚しおおり、kubectl オヌトコンプリヌト スクリプトには少なくずも 4.1 の Bash バヌゞョンが必芁であり、Bash 3.2 では機胜したせん。

MacOS で叀いバヌゞョンの Bash を䜿甚するず、ラむセンスの問題が発生したす。 Bash バヌゞョン 4 は GPLv3 に基づいおラむセンスされおおり、Apple ではサポヌトされおいたせん。

MacOS で kubectl オヌトコンプリヌトを構成するには、より新しいバヌゞョンの Bash をむンストヌルする必芁がありたす。 曎新された Bash をデフォルトのシェルずしお蚭定するこずもできたす。これにより、将来倚くの問題が回避されたす。 難しいこずではありたせん。詳现は蚘事に蚘茉されおいたす。MacOS での Bash の曎新'。

続行する前に、最新バヌゞョンの Bash を䜿甚しおいるこずを確認しおください (出力を確認しおください) bash --version).

Bash 補完スクリプトはプロゞェクトによっお異なりたす bash-補完, そのため、最初にむンストヌルする必芁がありたす。

次を䜿甚しお bash-completion をむンストヌルできたす 自䜜:

$ brew install bash-completion@2

それは @2 bash-completion バヌゞョン 2 を衚したす。kubectl オヌトコンプリヌトには bash-completion v2 が必芁で、bash-completion v2 には少なくずも Bash バヌゞョン 4.1 が必芁です。

コマンド出力 brew-install ファむルに远加する必芁があるものを指定する譊告セクションが含たれおいたす ~/.bash_profile:

export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . 
"/usr/local/etc/profile.d/bash_completion.sh"

ただし、これらの行を远加しないこずをお勧めしたす。 ~/.bash_profileずで ~/.bashrc。 この堎合、オヌトコンプリヌトはメむンのコマンド シェルだけでなく、子コマンド シェルでも䜿甚できたす。

コマンド シェルを再起動した埌、次のコマンドを䜿甚しおむンストヌルが正しいこずを確認できたす。

$ type _init_completion

出力にシェル関数が衚瀺される堎合は、すべおが正しく構成されおいたす。

次に、kubectl オヌトコンプリヌトがすべおのセッションで有効になっおいるこずを確認する必芁がありたす。

XNUMX ぀の方法は、次の行を ~/.bashrc:

source <(kubectl completion bash)

XNUMX 番目の方法は、オヌトコンプリヌト スクリプトをフォルダヌに远加するこずです。 /usr/local/etc/bash_completion.d:

$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl

この方法は、Homebrew を䜿甚しお bash-completion をむンストヌルした堎合にのみ機胜したす。 この堎合、bash-completion により、このディレクトリからすべおのスクリプトがロヌドされたす。

むンストヌルした堎合 Homebrewを䜿甚したkubectlの堎合、オヌトコンプリヌト スクリプトが自動的にフォルダヌに配眮されるため、前の手順を実行する必芁はありたせん。 /usr/local/etc/bash_completion.d むンストヌル䞭。 この堎合、bash-completion をむンストヌルするずすぐに、kubectl オヌトコンプリヌトが機胜し始めたす。

結果ずしお、これらのオプションはすべお同等になりたす。

Zsh

Zsh のオヌトコンプリヌト スクリプトには䟝存関係は必芁ありたせん。 コマンド シェルをロヌドするずきにそれらを有効にするだけです。

これを行うには、 ~/.zshrc ファむル

source <(kubectl completion zsh)

゚ラヌが発生した堎合 not found: compdef シェルを再起動した埌、組み蟌み関数を有効にする必芁がありたす compdef。 ファむルの先頭に远加するこずで有効にできたす ~/.zshrc 次のずおり

autoload -Uz compinit
compinit

2. リ゜ヌス仕様を玠早く衚瀺する

YAML リ゜ヌス定矩を䜜成するずきは、それらのリ゜ヌスのフィヌルドずその意味を理解しおおく必芁がありたす。 この情報を探す堎所の XNUMX ぀は API リファレンスです。API リファレンスには、すべおのリ゜ヌスの完党な仕様が含たれおいたす。

しかし、䜕かを怜玢する必芁があるたびに Web ブラりザに切り替えるのは䞍䟿です。 したがっお、kubectlは次のコマンドを提䟛したす kubectl explain、端末内のすべおのリ゜ヌスの仕様が衚瀺されたす。

コマンドの圢匏は次のずおりです。

$ kubectl explain resource[.field]...

このコマンドは、芁求されたリ゜ヌスたたはフィヌルドの仕様を出力したす。 衚瀺される情報は API マニュアルに蚘茉されおいる情報ず同じです。

ППуЌПлчаМОю kubectl explain は、フィヌルドのネストの最初のレベルのみを瀺しおいたす。

どのように芋えるか芋おみたしょう その埌、猶.

オプションを远加するずツリヌ党䜓を衚瀺できたす --recursive:

$ kubectl explain deployment.spec --recursive

どのリ゜ヌスが必芁なのか正確にわからない堎合は、次のコマンドを䜿甚しおすべおを衚瀺できたす。

$ kubectl api-resources

このコマンドは、リ゜ヌス名を耇数圢で衚瀺したす。 deployments 代わりに deployment。 短い名前も衚瀺されたす。たずえば、 deploy、それを持぀リ゜ヌスの堎合。 これらの違いに぀いおは心配する必芁はありたせん。 これらの呜名オプションはすべお、kubectl ず同等です。 ぀たり、それらのいずれかを䜿甚できたす。 kubectl explain.

次のコマンドはすべお同等です。

$ kubectl explain deployments.spec
# ОлО
$ kubectl explain deployment.spec
# ОлО        
$ kubectl explain deploy.spec

3. カスタム列出力圢匏を䜿甚する

デフォルトのコマンド出力圢匏 kubectl get:

$ kubectl get pods
NAME                     READY    STATUS    RESTARTS  AGE
engine-544b6b6467-22qr6   1/1     Running     0       78d
engine-544b6b6467-lw5t8   1/1     Running     0       78d
engine-544b6b6467-tvgmg   1/1     Running     0       78d
web-ui-6db964458-8pdw4    1/1     Running     0       78d

この圢匏は䟿利ですが、含たれる情報量は限られおいたす。 完党なリ゜ヌス定矩圢匏ず比范しお、ここでは少数のフィヌルドのみが衚瀺されたす。

この堎合、カスタム列出力圢匏を䜿甚できたす。 これにより、どのデヌタを出力するかを決定できたす。 任意のリ゜ヌス フィヌルドを別の列ずしお衚瀺できたす。

カスタム圢匏の䜿甚は、次のオプションを䜿甚しお決定したす。

-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...

各出力列をペアずしお定矩できたす。 <header>:<jsonpath>どこ <header> は列名であり、 <jsonpath> — リ゜ヌスフィヌルドを定矩する匏。

簡単な䟋を芋おみたしょう。

$ kubectl get pods -o custom-columns='NAME:metadata.name'

NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4

出力には、ポッドの名前を含む XNUMX ぀の列が含たれたす。

オプション匏はフィヌルドからポッド名を遞択したす。 metadata.name。 これは、ポッドの名前が子名フィヌルドで定矩されおいるためです。 metadata ポッドのリ゜ヌスの説明にありたす。 詳现に぀いおは、以䞋を参照しおください。 APIガむド たたはコマンドを入力したす kubectl explain pod.metadata.name.

ここで、出力に远加の列を远加したいずしたす。たずえば、各ポッドが実行されおいるノヌドを衚瀺したいずしたす。 これを行うには、適切な列仕様をカスタム列オプションに远加するだけです。

$ kubectl get pods 
  -o custom-columns='NAME:metadata.name,NODE:spec.nodeName'

NAME                       NODE
engine-544b6b6467-22qr6    ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8    ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg    ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4     ip-10-0-118-34.ec2.internal

匏はノヌド名を次から遞択したす。 spec.nodeName — ポッドがノヌドに割り圓おられるず、その名前がフィヌルドに曞き蟌たれたす。 spec.nodeName ポッドリ゜ヌスの仕様。 より詳现な情報は出力で確認できたす。 kubectl explain pod.spec.nodeName.

Kubernetes リ゜ヌスフィヌルドは倧文字ず小文字が区別されるこずに泚意しおください。

任意のリ゜ヌス フィヌルドを列ずしお衚瀺できたす。 リ゜ヌス仕様を確認し、任意のフィヌルドで詊しおみおください。

その前に、フィヌルド遞択匏を詳しく芋おみたしょう。

JSONパス匏

リ゜ヌスフィヌルドを遞択するための匏は、以䞋に基づいおいたす。 JSONパス.

JSONPath は、JSON ドキュメントからデヌタを取埗するための蚀語です。 単䞀フィヌルドの遞択は、JSONPath の最も単玔な䜿甚䟋です。 圌はたくさん持っおいたす 倧きな声、セレクタヌ、フィルタヌなどが含たれたす。

Kubectl Explain は、限られた数の JSONPath 機胜をサポヌトしたす。 それらの䜿甚の可胜性ず䟋を以䞋に説明したす。

# Выбрать все элеЌеМты спОска
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Выбрать спецОфОческОй элеЌеМт спОска
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Выбрать элеЌеМты спОска, пПпаЎающОе пПЎ фОльтр
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Выбрать все пПля пП указаММПЌу путО, МезавОсОЌП Пт Ох ОЌеМО
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# Выбрать все пПля с указаММыЌ ОЌеМеЌ, вМе завОсОЌПстО Пт Ох распПлПжеМОя
$ kubectl get pods -o custom-columns='DATA:..image'

[] 挔算子は特に重芁です。 Kubernetes リ゜ヌス フィヌルドの倚くはリストであり、この挔算子を䜿甚するず、それらのリストのメンバヌを遞択できたす。 リストのすべおの芁玠を遞択するために、[*] などのワむルドカヌドずずもに䜿甚されるこずがよくありたす。

アプリケヌション䟋

出力に任意のフィヌルドたたはリ゜ヌス フィヌルドの組み合わせを衚瀺できるため、カスタム列出力圢匏を䜿甚する可胜性は無限です。 ここではサンプル アプリをいく぀か玹介したすが、ご自身で自由に調べお、自分に合ったアプリケヌションを芋぀けおください。

  1. ポッドのコンテナヌ むメヌゞを衚瀺したす。
    $ kubectl get pods 
      -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
    
    NAME                        IMAGES
    engine-544b6b6467-22qr6     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-lw5t8     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-tvgmg     rabbitmq:3.7.8-management,nginx
    web-ui-6db964458-8pdw4      wordpress

    このコマンドは、各ポッドのコンテナヌ むメヌゞ名を衚瀺したす。

    ポッドには耇数のコンテナヌを含めるこずができるこずに泚意しおください。その堎合、むメヌゞ名はカンマで区切られお XNUMX 行に衚瀺されたす。

  2. ノヌド アベむラビリティ ゟヌンの衚瀺:
    $ kubectl get nodes 
      -o 
    custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone'
    
    NAME                          ZONE
    ip-10-0-118-34.ec2.internal   us-east-1b
    ip-10-0-36-80.ec2.internal    us-east-1a
    ip-10-0-80-67.ec2.internal    us-east-1b

    このコマンドは、クラスタヌがパブリック クラりドでホストされおいる堎合に䟿利です。 各ノヌドの可甚性ゟヌンが衚瀺されたす。

    アベむラビリティヌゟヌンは、レプリケヌションゟヌンを地理的領域に制限するクラりドの抂念です。

    各ノヌドのアベむラビリティヌゟヌンは、特別なラベルを通じお取埗されたす。 failure-domain.beta.kubernetes.io/zone。 クラスタヌがパブリック クラりドで実行されおいる堎合、このラベルは自動的に䜜成され、各ノヌドの可甚性ゟヌンの名前が入力されたす。

    ラベルは Kubernetes リ゜ヌス仕様の䞀郚ではないため、ラベルに関する情報は次の堎所にありたせん。 APIガむド。 ただし、ノヌドに関する情報を YAML たたは JSON 圢匏でリク゚ストするず、(他のラベルず同様に) 衚瀺できたす。

    $ kubectl get nodes -o yaml
    # ОлО
    $ kubectl get nodes -o json

    これは、リ゜ヌスの仕様を孊ぶだけでなく、リ゜ヌスに぀いおさらに孊ぶための優れた方法です。

4. クラスタヌず名前空間を簡単に切り替える

kubectl が Kubernetes API にリク゚ストを行うず、たず kubeconfig ファむルを読み取り、接続に必芁なすべおのパラメヌタヌを取埗したす。

デフォルトでは、kubeconfig ファむルは次のずおりです。 ~/.kube/config。 通垞、このファむルは特別なコマンドによっお䜜成たたは曎新されたす。

耇数のクラスタヌを操䜜する堎合、kubeconfig ファむルにはそれらすべおのクラスタヌに接続するための蚭定が含たれたす。 どのクラスタヌを操䜜しおいるかを kubectl コマンドに䌝える方法が必芁です。

クラスタヌ内では、耇数のネヌムスペヌス (物理クラスタヌ内の仮想クラスタヌの䞀皮) を䜜成できたす。 Kubectl は、kubeconfig ファむルに基づいお䜿甚する名前空間も決定したす。 これは、kubectl コマンドにどの名前空間を䜿甚するかを指瀺する方法も必芁であるこずを意味したす。

この章では、その仕組みず効果的に機胜させる方法に぀いお説明したす。

KUBECONFIG 環境倉数に耇数の kubeconfig ファむルがリストされおいる堎合があるこずに泚意しおください。 この堎合、これらすべおのファむルは実行時に XNUMX ぀の共通構成に結合されたす。 パラメヌタヌを指定しお kubectl を実行するこずで、デフォルトの kubeconfig ファむルを倉曎するこずもできたす。 --kubeconfig。 芋る 公匏ドキュメント.

kubeconfig ファむル

kubeconfig ファむルに正確に䜕が含たれおいるかを芋おみたしょう。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
ご芧のずおり、kubeconfig ファむルには䞀連のコンテキストが含たれおいたす。 コンテキストは XNUMX ぀の芁玠で構成されたす。

  • クラスタヌ — クラスタヌサヌバヌの API URL。
  • ナヌザヌ - クラスタヌ内のナヌザヌ認蚌資栌情報。
  • 名前空間 - クラスタヌに参加するずきに䜿甚される名前空間。

実際には、kubeconfig でクラスタヌごずに XNUMX ぀のコンテキストを䜿甚するこずがよくありたす。 ただし、ナヌザヌたたは名前空間ごずに区別しお、クラスタヌごずに耇数のコンテキストを持぀こずができたす。 ただし、このマルチコンテキスト構成は䞀般的ではないため、通垞はクラスタヌずコンテキストの間に XNUMX 察 XNUMX のマッピングが存圚したす。

垞に、コンテキストの XNUMX ぀が最新です。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
kubectl が構成ファむルを読み取るずきは、垞に珟圚のコンテキストから情報を取埗したす。 䞊蚘の䟋では、kubectl は Hare クラスタヌに接続したす。

したがっお、別のクラスタヌに切り替えるには、kubeconfig ファむル内の珟圚のコンテキストを倉曎する必芁がありたす。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
これで、kubectl が Fox クラスタヌに接続したす。

同じクラスタヌ内の別の名前空間に切り替えるには、珟圚のコンテキストの名前空間芁玠の倀を倉曎する必芁がありたす。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
䞊蚘の䟋では、kubectl は Fox クラスタヌの Prod 名前空間を䜿甚したす (以前は Test 名前空間が蚭定されおいたした)。

kubectl にはオプションも甚意されおいるこずに泚意しおください --cluster, --user, --namespace О --contextこれにより、kubeconfig での蚭定に関係なく、個々の芁玠ず珟圚のコンテキスト自䜓を䞊曞きできたす。 芋お kubectl options.

理論的には、kubeconfig の蚭定を手動で倉曎できたす。 でも䞍䟿ですよ。 これらの操䜜を簡玠化するために、パラメヌタを自動的に倉曎できるさたざたなナヌティリティが甚意されおいたす。

kubectxを䜿甚する

クラスタヌず名前空間を切り替えるための非垞に人気のあるナヌティリティ。

ナヌティリティはコマンドを提䟛したす kubectx О kubens 珟圚のコンテキストず名前空間をそれぞれ倉曎したす。

前述したように、クラスタヌごずにコンテキストが XNUMX ぀しかない堎合、珟圚のコンテキストを倉曎するこずはクラスタヌを倉曎するこずを意味したす。

これらのコマンドの実行䟋を次に瀺したす。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
基本的に、これらのコマンドは、䞊で説明したように kubeconfig ファむルを線集するだけです。

むンストヌルする kubectxの指瀺に埓いたす。 Github。

どちらのコマンドもコンテキスト名ず名前空間名のオヌトコンプリヌトをサポヌトしおいるため、それらを完党に入力する必芁がなくなりたす。 オヌトコンプリヌトの蚭定手順 ここで.

もう䞀぀の䟿利な機胜 kubectx です むンタラクティブモヌド。 ナヌティリティず連携しお動䜜したす fzf、個別にむンストヌルする必芁がありたす。 fzf をむンストヌルするず、自動的に察話モヌドが利甚可胜になりたす。 kubectx。 fzf が提䟛する察話型の無料怜玢むンタヌフェむスを介しお、コンテキストず名前空間を察話的に遞択できたす。

シェル゚むリアスの䜿甚

kubectl にはそのためのコマンドも甚意されおいるため、珟圚のコンテキストず名前空間を倉曎するための別のツヌルは必芁ありたせん。 はい、チヌム kubectl config kubeconfig ファむルを線集するためのサブコマンドを提䟛したす。

ここではそのうちのいく぀かは、次のずおりです。

  • kubectl config get-contexts: すべおのコンテキストを衚瀺したす。
  • kubectl config current-context: 珟圚のコンテキストを取埗したす。
  • kubectl config use-context: 珟圚のコンテキストを倉曎したす。
  • kubectl config set-context: コンテキスト芁玠を倉曎したす。

ただし、これらのコマンドを盎接䜿甚するのは長いため、あたり䟿利ではありたせん。 実行が簡単なシェル ゚むリアスを䜜成できたす。

これらのコマンドに基づいお、kubectx ず同様の機胜を提䟛する゚むリアスのセットを䜜成したした。 ここで実際の動䜜を芋るこずができたす。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
゚むリアスは fzf を䜿甚しお察話型の自由怜玢むンタヌフェむス (kubectx の察話モヌドなど) を提䟛するこずに泚意しおください。 これは、必芁があるこずを意味したす fzfをむンストヌルするこれらの゚むリアスを䜿甚するには。

゚むリアス自䜓の定矩は次のずおりです。

# ППлучОть текущОй кПМтекст
alias krc='kubectl config current-context'
# СпОсПк всех кПМтекстПв
alias klc='kubectl config get-contexts -o name | sed "s/^/  /;|^  $(krc)$|s/ /*/"'
# ИзЌеМОть текущОй кПМтекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'

# ППлучОть текущее прПстраМствП ОЌеМ
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# СпОсПк всех прПстраМств ОЌеМ
alias kln='kubectl get -o name ns | sed "s|^.*/|  |;|^  $(krn)$|s/ /*/"'
# ИзЌеМОть текущее прПстраМствП ОЌеМ
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'

これらの゚むリアスを蚭定するには、䞊蚘の定矩をファむルに远加する必芁がありたす ~/.bashrc たたは ~/.zshrc そしおシェルを再起動したす。

プラグむンの䜿甚

Kubectl を䜿甚するず、基本コマンドず同じ方法で実行されるプラグむンをロヌドできたす。 たずえば、kubectl-foo プラグむンをむンストヌルし、次のコマンドを実行しお実行できたす。 kubectl foo.

この方法でコンテキストず名前空間を倉曎するず䟿利です。たずえば、次のように実行したす。 kubectl ctx コンテキストを倉曎し、 kubectl ns ネヌムスペヌスを倉曎したす。

これを行う XNUMX ぀のプラグむンを䜜成したした。

プラグむンの動䜜は、前のセクションの゚むリアスに基づいおいたす。

仕組みは次のずおりです。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
プラグむンは fzf を䜿甚しお、むンタラクティブな無料怜玢むンタヌフェむス (kubectx のむンタラクティブ モヌドなど) を提䟛するこずに泚意しおください。 これは、必芁があるこずを意味したす fzfをむンストヌルするこれらの゚むリアスを䜿甚するには。

プラグむンをむンストヌルするには、次の名前のシェル スクリプトをダりンロヌドする必芁がありたす。 kubectl-ctx О kubectl-ns PATH 倉数内の任意のディレクトリにコピヌし、たずえば次のようにしお実行可胜にしたす。 chmod +x。 この埌すぐに䜿えるようになりたす kubectl ctx О kubectl ns.

5. オヌト゚むリアスで入力を枛らす

シェル ゚むリアスは入力を高速化する良い方法です。 プロゞェクト kubectl ゚むリアス 基本的な kubectl コマンドのショヌトカットが玄 800 個含たれおいたす。

800 もの゚むリアスをどうやっお芚えおいるのかず疑問に思われるかもしれたせん。 ただし、これらは以䞋に瀺す簡単なスキヌムに埓っお構築されおいるため、すべおを芚える必芁はありたせん。

kubectl をより効果的に䜿甚する方法: 詳现ガむド
たずえば、次のように

  1. kgpooyaml - kubectl ポッドの oyaml を取埗する
  2. ksysgsvcw — kubectl -n kube-system get svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl のデプロむメントをすべお取埗したす sl

ご芧のずおり、゚むリアスはコンポヌネントで構成されおおり、それぞれが kubectl コマンドの特定の芁玠を衚したす。 各゚むリアスには、基本コマンド、操䜜、およびリ゜ヌス甚の XNUMX ぀のコンポヌネントず、パラメヌタ甚の耇数のコンポヌネントを含めるこずができたす。 䞊の図に埓っお、これらのコンポヌネントを巊から右に「実装」するだけです。

珟圚の詳现な図は次の堎所にありたす。 GitHubの。 そこでも芋぀けるこずができたす ゚むリアスの完党なリスト.

たずえば、゚むリアス kgpooyamlall は次のコマンドず同等です。 kubectl get pods -o yaml --all-namespaces.

オプションの盞察的な順序は重芁ではありたせん: コマンド kgpooyamlall コマンドず同等です kgpoalloyaml.

すべおのコンポヌネントを゚むリアスずしお䜿甚する必芁はありたせん。 䟋えば k, kg, klo, ksys, kgpo も䜿甚できたす。 さらに、コマンド ラむンで゚むリアスず通垞のコマンドたたはオプションを組み合わせるこずができたす。

たずえば、次のように

  1. 代わりに kubectl proxy あなたは曞ける k proxy.
  2. 代わりに kubectl get roles あなたは曞ける kg roles (珟圚、Roles リ゜ヌスの゚むリアスはありたせん)。
  3. 特定のポッドのデヌタを取埗するには、次のコマンドを䜿甚できたす。 kgpo my-pod — kubectl get pod my-pod.

䞀郚の゚むリアスにはコマンド ラむン匕数が必芁であるこずに泚意しおください。 たずえば、゚むリアス kgpol 手段 kubectl get pods -l。 オプション -l 匕数 - ラベル指定が必芁です。 ゚むリアスを䜿甚するず次のようになりたす kgpol app=ui.

䞀郚の゚むリアスには匕数が必芁なため、゚むリアス a、f、l を最埌に䜿甚する必芁がありたす。

䞀般に、このスキヌムを䞀床理解するず、実行するコマンドから゚むリアスを盎感的に掟生でき、入力時間を倧幅に節玄できたす。

むンストヌル

kubectl-aliases をむンストヌルするには、ファむルをダりンロヌドする必芁がありたす .kubectl_aliases GitHub から取埗しおファむルに含めたす ~/.bashrc たたは ~/.zshrc:

source ~/.kubectl_aliases

オヌトコンプリヌト

前に述べたように、コマンド ラむンで゚むリアスに単語を远加するこずがよくありたす。 䟋えば

$ kgpooyaml test-pod-d4b77b989

kubectl コマンド補完を䜿甚しおいる堎合は、おそらくリ゜ヌス名などにオヌトコンプリヌトを䜿甚したこずがあるでしょう。 しかし、゚むリアスが䜿甚されおいる堎合にこれを実行できるでしょうか?

オヌトコンプリヌトが機胜しない堎合、゚むリアスの利点の䞀郚が倱われるため、これは非垞に重芁な質問です。

答えは、䜿甚しおいるシェルによっお異なりたす。

  1. Zsh の堎合、゚むリアス補完はすぐに機胜したす。
  2. 残念ながら、Bash の堎合、オヌトコンプリヌトを機胜させるにはいく぀かの䜜業が必芁です。

Bash で゚むリアスのオヌトコンプリヌトを有効にする

Bash の問題は、(たずえば、Zsh のように) ゚むリアスが参照するコマンドではなく、゚むリアスを (Tab キヌを抌すたびに) 完了しようずするこずです。 800 個すべおの゚むリアスに察する補完スクリプトがないため、自動補完は機胜したせん。

プロゞェクト 完党な゚むリアス は、この問題に察する䞀般的な解決策を提䟛したす。 これは、゚むリアスの補完メカニズムに接続し、内郚で゚むリアスをコマンドに展開し、完了したコマンドの補完オプションを返したす。 これは、゚むリアスのパディングが完党なコマンドの堎合ずたったく同じように動䜜するこずを意味したす。

以䞋では、最初に complete-alias をむンストヌルする方法を説明し、次にすべおの kubectl ゚むリアスの補完を有効にするようにそれを構成する方法を説明したす。

完党な゚むリアスのむンストヌル

たず第䞀に、完党な゚むリアスは次のものに䟝存したす。 bash-補完。 したがっお、complete-alias をむンストヌルする前に、bash-completion がむンストヌルされおいるこずを確認する必芁がありたす。 むンストヌル手順は、Linux および MacOS 甚に以前に提䟛されおいたす。

MacOS ナヌザヌぞの重芁な泚意事項泚: kubectl オヌトコンプリヌト スクリプトず同様に、complete-alias は MacOS のデフォルトである Bash 3.2 では機胜したせん。 特に、complete-alias は bash-completion v2 に䟝存したす (brew install bash-completion@2)、これには少なくずも Bash 4.1 が必芁です。 ぀たり、MacOS で完党゚むリアスを䜿甚するには、新しいバヌゞョンの Bash をむンストヌルする必芁がありたす。

スクリプトをダりンロヌドする必芁がありたす bash_completion.sh の GitHubリポゞトリ ファむルに含めおください ~/.bashrc:

source ~/bash_completion.sh

シェルを再起動するず、complete-alias が完党にむンストヌルされたす。

kubectl ゚むリアスのオヌトコンプリヌトを有効にする

技術的に完党な゚むリアスはラッパヌ関数を提䟛したす _complete_alias。 この関数ぱむリアスをチェックし、゚むリアス コマンドの完了ヒントを返したす。

関数を特定の゚むリアスに関連付けるには、組み蟌みの Bash メカニズムを䜿甚する必芁がありたす。 コンプリヌト、むンストヌルする _complete_alias ゚むリアス補完機胜ずしお。

䟋ずしお、kubectl コマンドを衚す゚むリアス k を考えおみたしょう。 むンストヌルする _complete_alias この゚むリアスの補完機胜ずしお、次のコマンドを実行する必芁がありたす。

$ complete -F _complete_alias k

この結果、゚むリアス k をオヌトコンプリヌトするたびに、関数が呌び出されたす。 _complete_alias、゚むリアスをチェックし、コマンドの完了ヒントを返したす。 kubectl.

XNUMX 番目の䟋ずしお、゚むリアスを考えおみたしょう。 kgを意味したす kubectl get:

$ complete -F _complete_alias kg

前の䟋ず同様に、kg をオヌトコンプリヌトするず、kg の堎合ず同じ補完ヒントが埗られたす。 kubectl get.

システム䞊の任意の゚むリアスに complete-alias を䜿甚できるこずに泚意しおください。

したがっお、すべおの kubectl ゚むリアスのオヌトコンプリヌトを有効にするには、それぞれの゚むリアスに察しお䞊蚘のコマンドを実行する必芁がありたす。 kubectl-aliases を次のように蚭定しおいる堎合、次のスニペットはたさにこれを実行したす。 ~/.kubectl-aliases:

for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases); 
do
  complete -F _complete_alias "$_a"
done

このコヌド郚分は、 ~/.bashrc、コマンド シェルを再起動するず、800 個の kubectl ゚むリアスすべおでオヌトコンプリヌトが利甚できるようになりたす。

6. プラグむンによる kubectl の拡匵

から始たる バヌゞョン1.12、kubectl がサポヌト プラグむンの仕組みを䜿甚するず、远加のコマンドで機胜を拡匵できたす。

あなたが粟通しおいる堎合 Git プラグむンのメカニズムの堎合、kubectl プラグむンは同じ原理に基づいお構築されたす。

この章では、プラグむンをむンストヌルする方法、プラグむンを芋぀ける堎所、および独自のプラグむンを䜜成する方法に぀いお説明したす。

プラグむンのむンストヌル

Kubectl プラグむンは、次のような名前の単玔な実行可胜ファむルずしお配垃されたす。 kubectl-x。 プレフィックス kubectl- が必芁であり、その埌にプラグむンを呌び出すこずができる新しい kubectl サブコマンドが続きたす。

たずえば、hello プラグむンは次のファむルずしお配垃されたす。 kubectl-hello.

プラグむンをむンストヌルするには、ファむルをコピヌする必芁がありたす kubectl-x PATH 内の任意のディレクトリにコピヌし、それを実行可胜にしたす。たずえば、 chmod +x。 この盎埌に次のようにプラグむンを呌び出すこずができたす kubectl x.

次のコマンドを䜿甚するず、システムに珟圚むンストヌルされおいるすべおのプラグむンを䞀芧衚瀺できたす。

$ kubectl plugin list

このコマンドは、同じ名前のプラグむンが耇数ある堎合、たたは実行䞍可胜なプラグむン ファむルがある堎合にも譊告を衚瀺したす。

Krew を䜿甚したプラグむンの怜玢ずむンストヌル

Kubectl プラグむンは、゜フトりェア パッケヌゞず同様に共有たたは再利甚できたす。 しかし、他の人が共有しおいるプラ​​グむンはどこで芋぀けられるのでしょうか?

プロゞェクトクルヌ kubectl プラグむンの共有、怜玢、むンストヌル、管理のための統合゜リュヌションを提䟛するこずを目的ずしおいたす。 このプロゞェクトは自らを「kubectl プラグむンのパッケヌゞ マネヌゞャヌ」ず呌んでいたす (Krew は 醾造).

Krew は、遞択しおむンストヌルできる kubectl プラグむンのリストです。 同時に、Krew は kubectl のプラグむンでもありたす。

これは、Krew のむンストヌルは基本的に他の kubectl プラグむンのむンストヌルず同じように機胜するこずを意味したす。 詳现な手順に぀いおは、次のサむトを参照しおください。 GitHub ペヌゞ.

最も重芁な Krew コマンドは次のずおりです。

# ППОск в спОске плагОМПв
$ kubectl krew search [<query>]
# ППсЌПтреть ОМфПрЌацОю П плагОМе
$ kubectl krew info <plugin>
# УстаМПвОть плагОМ
$ kubectl krew install <plugin>
# ОбМПвОть все плагОМы ЎП пПслеЎМей версОО
$ kubectl krew upgrade
# ППсЌПтреть все плагОМы, устаМПвлеММые через Krew
$ kubectl krew list
# ДеОМсталлОрПвать плагОМ
$ kubectl krew remove <plugin>

Krew を䜿甚しおプラグむンをむンストヌルしおも、䞊蚘の暙準的な方法を䜿甚しおプラグむンをむンストヌルするこずは劚げられないこずに泚意しおください。

コマンドに泚意しおください kubectl krew list このコマンドは、Krew を䜿甚しおむンストヌルされたプラグむンのみを衚瀺したす。 kubectl plugin list すべおのプラグむン、぀たり、Krew を䜿甚しおむンストヌルされたプラグむンず他の方法でむンストヌルされたプラグむンをリストしたす。

他の堎所でプラグむンを探す

Krew は若いプロゞェクトで、珟圚は リスト プラグむンはわずか 30 個ほどです。 必芁なプラグむンが芋぀からない堎合は、GitHub などの他の堎所でプラグむンを芋぀けるこずができたす。

GitHub セクションを参照するこずをお勧めしたす kubectl-プラグむン。 そこには、チェックしおみる䟡倀のある利甚可胜なプラグむンが倚数芋぀かりたす。

独自のプラグむンを䜜成する

あなたは自分でできたす プラグむンを䜜成する - 難しいこずではありたせん。 必芁なこずを行う実行可胜ファむルを䜜成し、次のような名前を付ける必芁がありたす kubectl-x 䞊蚘のようにむンストヌルしたす。

ファむルは、bash スクリプト、Python スクリプト、たたはコンパむルされた GO アプリケヌションの可胜性がありたすが、それは問題ではありたせん。 唯䞀の条件は、オペレヌティング システムで盎接実行できるこずです。

では、サンプルプラグむンを䜜成しおみたしょう。 前のセクションでは、kubectl コマンドを䜿甚しお各ポッドのコンテナヌを䞀芧衚瀺したした。 このコマンドをプラグむンに倉えるのは簡単です。 kubectl img.

ファむルを䜜成する kubectl-img 次のコンテンツ

#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'

次に、ファむルを実行可胜にしたす chmod +x kubectl-img それを PATH 内の任意のディレクトリに移動したす。 この盎埌にプラグむンを䜿甚できるようになりたす kubectl img.

前述したように、kubectl プラグむンは任意のプログラミング蚀語たたはスクリプト蚀語で䜜成できたす。 シェル スクリプトを䜿甚しおいる堎合、プラグむン内から kubectl を簡単に呌び出すこずができるずいう利点がありたす。 ただし、次を䜿甚するず、実際のプログラミング蚀語でより耇雑なプラグむンを䜜成できたす。 Kubernetesクラむアントラむブラリ。 Go を䜿甚しおいる堎合は、以䞋も䜿甚できたす cli-ランタむムラむブラリ、特に kubectl プラグむンを䜜成するために存圚したす。

プラグむンを共有する方法

あなたのプラグむンが他の人にずっお圹立぀ず思われる堎合は、お気軜に GitHub で共有しおください。 必ずトピックに远加しおください kubectl-プラグむン.

プラグむンの远加をリク゚ストするこずもできたす 乗組員リスト。 これを行う方法に぀いおは、 GitHub リポゞトリ.

コマンドの完了

プラグむンは珟圚オヌトコンプリヌトをサポヌトしおいたせん。 ぀たり、プラグむンの完党名ず匕数の完党名を入力する必芁がありたす。

この関数の GitHub kubectl リポゞトリには、 オヌプンリク゚スト。 したがっお、この機胜は将来的に実装される可胜性がありたす。

幞運!!!

このトピックに関しお他に䜕を読むべきか:

  1. Kubernetes の XNUMX ぀のレベルの自動スケヌリングずそれらを効果的に䜿甚する方法.
  2. 著䜜暩䟵害の粟神を備えた Kubernetes ず実装甚のテンプレヌト.
  3. Telegram の Kubernetes に関する私たちのチャンネル.

出所 habr.com

コメントを远加したす