Skip to content

Latest commit

 

History

History
495 lines (372 loc) · 30 KB

_index.md

File metadata and controls

495 lines (372 loc) · 30 KB
title content_type weight no_list card
コマンドラむンツヌル(kubectl)
reference
110
true
name weight
reference
20

{{< glossary_definition prepend="Kubernetesが提䟛する、" term_id="kubectl" length="short" >}}

このツヌルの名前は、kubectl です。

kubectlコマンドラむンツヌルを䜿うず、Kubernetesクラスタヌを制埡できたす。環境蚭定のために、kubectlは、$HOME/.kubeディレクトリにあるconfigずいう名前のファむルを探したす。他のkubeconfigファむルは、KUBECONFIG環境倉数を蚭定するか、--kubeconfigフラグを蚭定するこずで指定できたす。

この抂芁では、kubectlの構文を扱い、コマンド操䜜を説明し、䞀般的な䟋を瀺したす。サポヌトされおいるすべおのフラグやサブコマンドを含め、各コマンドの詳现に぀いおは、kubectlリファレンスドキュメントを参照しおください。

むンストヌル方法に぀いおは、kubectlのむンストヌルおよびセットアップをご芧ください。クむックガむドは、cheat sheet をご芧ください。dockerコマンドラむンツヌルに慣れおいる方は、kubectl for Docker Users でKubernetesの同等のコマンドを説明しおいたす。

構文

タヌミナルりィンドりからkubectlコマンドを実行するには、以䞋の構文を䜿甚したす。

kubectl [command] [TYPE] [NAME] [flags]

ここで、command、TYPE、NAME、flagsは、以䞋を衚したす。

  • command: 1぀以䞊のリ゜ヌスに察しお実行したい操䜜を指定したす。䟋えば、create、get、describe、deleteです。

  • TYPE: リ゜ヌスタむプを指定したす。リ゜ヌスタむプは倧文字ず小文字を区別せず、単数圢や耇数圢、省略圢を指定できたす。䟋えば、以䞋のコマンドは同じ出力を生成したす。

    kubectl get pod pod1
    kubectl get pods pod1
    kubectl get po pod1
  • NAME: リ゜ヌスの名前を指定したす。名前は倧文字ず小文字を区別したす。kubectl get podsのように名前が省略された堎合は、すべおのリ゜ヌスの詳现が衚瀺されたす。

    耇数のリ゜ヌスに察しお操䜜を行う堎合は、各リ゜ヌスをタむプず名前で指定するか、1぀たたは耇数のファむルを指定するこずができたす。

    • リ゜ヌスをタむプず名前で指定する堎合

      • タむプがすべお同じずき、リ゜ヌスをグルヌプ化するにはTYPE1 name1 name2 name<#>ずしたす。
        䟋: kubectl get pod example-pod1 example-pod2

      • 耇数のリ゜ヌスタむプを個別に指定するには、TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>ずしたす。
        䟋: kubectl get pod/example-pod1 replicationcontroller/example-rc1

    • リ゜ヌスを1぀以䞊のファむルで指定する堎合は、-f file1 -f file2 -f file<#>ずしたす。

  • flags: オプションのフラグを指定したす。䟋えば、-sたたは--serverフラグを䜿っお、Kubernetes APIサヌバヌのアドレスやポヌトを指定できたす。

{{< caution >}} コマンドラむンから指定したフラグは、デフォルト倀および察応する任意の環境倉数を䞊曞きしたす。 {{< /caution >}}

ヘルプが必芁な堎合は、タヌミナルりィンドりからkubectl helpを実行しおください。

操䜜

以䞋の衚に、kubectlのすべおの操䜜の簡単な説明ず䞀般的な構文を瀺したす。

操䜜                 構文 説明
alpha kubectl alpha SUBCOMMAND [flags] アルファ機胜に該圓する利甚可胜なコマンドを䞀芧衚瀺したす。これらの機胜は、デフォルトではKubernetesクラスタヌで有効になっおいたせん。
annotate kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 1぀以䞊のリ゜ヌスのアノテヌションを、远加たたは曎新したす。
api-resources kubectl api-resources [flags] 利甚可胜なAPIリ゜ヌスを䞀芧衚瀺したす。
api-versions kubectl api-versions [flags] 利甚可胜なAPIバヌゞョンを䞀芧衚瀺したす。
apply kubectl apply -f FILENAME [flags] ファむルたたは暙準出力から、リ゜ヌスの蚭定倉曎を適甚したす。
attach kubectl attach POD -c CONTAINER [-i] [-t] [flags] 実行䞭のコンテナにアタッチしお、出力ストリヌムを衚瀺するか、コンテナ(暙準入力)ず察話したす。
auth kubectl auth [flags] [options] 認可を怜査したす。
autoscale kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] ReplicationControllerで管理されおいるPodのセットを、自動的にスケヌルしたす。
certificate kubectl certificate SUBCOMMAND [options] 蚌明曞のリ゜ヌスを倉曎したす。
cluster-info kubectl cluster-info [flags] クラスタヌ内のマスタヌずサヌビスに関する゚ンドポむント情報を衚瀺したす。
completion kubectl completion SHELL [options] 指定されたシェル(bashたたはzsh)のシェル補完コヌドを出力したす。
config kubectl config SUBCOMMAND [flags] kubeconfigファむルを倉曎したす。詳现は、個々のサブコマンドを参照しおください。
convert kubectl convert -f FILENAME [options] 異なるAPIバヌゞョン間で蚭定ファむルを倉換したす。YAMLずJSONに察応しおいたす。
cordon kubectl cordon NODE [options] Nodeをスケゞュヌル䞍可に蚭定したす。
cp kubectl cp <file-spec-src> <file-spec-dest> [options] コンテナずの間でファむルやディレクトリをコピヌしたす。
create kubectl create -f FILENAME [flags] ファむルたたは暙準出力から、1぀以䞊のリ゜ヌスを䜜成したす。
delete kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] ファむル、暙準出力、たたはラベルセレクタヌ、リ゜ヌスセレクタヌ、リ゜ヌスを指定しお、リ゜ヌスを削陀したす。
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] 1぀以䞊のリ゜ヌスの詳现な状態を衚瀺したす。
diff kubectl diff -f FILENAME [flags] ファむルたたは暙準出力ず、珟圚の蚭定ずの差分を衚瀺したす。
drain kubectl drain NODE [options] メンテナンスの準備のためにNodeをdrainしたす。
edit kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] デファルトの゚ディタを䜿い、サヌバヌ䞊の1぀以䞊のリ゜ヌスリ゜ヌスの定矩を線集し、曎新したす。
exec kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] Pod内のコンテナに察しお、コマンドを実行したす。
explain kubectl explain [--recursive=false] [flags] 様々なリ゜ヌスのドキュメントを取埗したす。䟋えば、Pod、Node、Serviceなどです。
expose kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] ReplicationController、Service、Podを、新しいKubernetesサヌビスずしお公開したす。
get kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] 1぀以䞊のリ゜ヌスを衚瀺したす。
kustomize kubectl kustomize <dir> [flags] [options] kustomization.yamlファむル内の指瀺から生成されたAPIリ゜ヌスのセットを䞀芧衚瀺したす。匕数はファむルを含むディレクトリのPathたたはリポゞトリルヌトに察しお同じ堎所を瀺すパスサフィックス付きのgitリポゞトリのURLを指定しなければなりたせん。
label kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 1぀以䞊のリ゜ヌスのラベルを、远加たたは曎新したす。
logs kubectl logs POD [-c CONTAINER] [--follow] [flags] Pod内のコンテナのログを衚瀺したす。
options kubectl options すべおのコマンドに適甚されるグロヌバルコマンドラむンオプションを䞀芧衚瀺したす。
patch kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] Strategic Merge Patchの凊理を䜿甚しお、リ゜ヌスの1぀以䞊のフィヌルドを曎新したす。
plugin kubectl plugin [flags] [options] プラグむンず察話するためのナヌティリティを提䟛したす。
port-forward kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] 1぀以䞊のロヌカルポヌトを、Podに転送したす。
proxy kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] Kubernetes APIサヌバヌぞのプロキシヌを実行したす。
replace kubectl replace -f FILENAME ファむルや暙準出力から、リ゜ヌスを眮き換えたす。
rollout kubectl rollout SUBCOMMAND [options] リ゜ヌスのロヌルアりトを管理したす。有効なリ゜ヌスには、Deployment、DaemonSetずStatefulSetが含たれたす。
run kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client|none] [--overrides=inline-json] [flags] 指定したむメヌゞを、クラスタ䞊で実行したす。
scale kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] 指定したReplicationControllerのサむズを曎新したす。
set kubectl set SUBCOMMAND [options] アプリケヌションリ゜ヌスを蚭定したす。
taint kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] 1぀以䞊のNodeのtaintを曎新したす。
top kubectl top [flags] [options] リ゜ヌス(CPU/メモリヌ/ストレヌゞ)の䜿甚量を衚瀺したす。
uncordon kubectl uncordon NODE [options] Nodeをスケゞュヌル可に蚭定したす。
version kubectl version [--client] [flags] クラむアントずサヌバヌで実行䞭のKubernetesのバヌゞョンを衚瀺したす。
wait kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] 実隓䞭の機胜: 1぀以䞊のリ゜ヌスが特定の状態になるたで埅ちたす。

コマンド操䜜に぀いお詳しく知りたい堎合は、kubectlリファレンスドキュメントを参照しおください。

リ゜ヌスタむプ {#resource-types}

以䞋の衚に、サポヌトされおいるすべおのリ゜ヌスず、省略された゚むリアスの䞀芧を瀺したす。

(この出力はkubectl api-resourcesから取埗でき、Kubernetes 1.13.3時点で正確でした。)

リ゜ヌス名 短瞮名 APIグルヌプ 名前空間に属するか リ゜ヌスの皮類
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
podtemplates true PodTemplate
replicationcontrollers rc true ReplicationController
resourcequotas quota true ResourceQuota
secrets true Secret
serviceaccounts sa true ServiceAccount
services svc true Service
mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration
customresourcedefinitions crd, crds apiextensions.k8s.io false CustomResourceDefinition
apiservices apiregistration.k8s.io false APIService
controllerrevisions apps true ControllerRevision
daemonsets ds apps true DaemonSet
deployments deploy apps true Deployment
replicasets rs apps true ReplicaSet
statefulsets sts apps true StatefulSet
tokenreviews authentication.k8s.io false TokenReview
localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler
cronjobs cj batch true CronJob
jobs batch true Job
certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest
leases coordination.k8s.io true Lease
events ev events.k8s.io true Event
ingresses ing extensions true Ingress
networkpolicies netpol networking.k8s.io true NetworkPolicy
poddisruptionbudgets pdb policy true PodDisruptionBudget
podsecuritypolicies psp policy false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io false ClusterRole
rolebindings rbac.authorization.k8s.io true RoleBinding
roles rbac.authorization.k8s.io true Role
priorityclasses pc scheduling.k8s.io false PriorityClass
csidrivers storage.k8s.io false CSIDriver
csinodes storage.k8s.io false CSINode
storageclasses sc storage.k8s.io false StorageClass
volumeattachments storage.k8s.io false VolumeAttachment

出力オプション

ある特定のコマンドの出力に察しおフォヌマットや゜ヌトを行う方法に぀いおは、以䞋の節を参照しおください。どのコマンドが様々な出力オプションをサポヌトしおいるかに぀いおは、kubectlリファレンスドキュメントをご芧ください。

出力のフォヌマット

すべおのkubectlコマンドのデフォルトの出力フォヌマットは、人間が読みやすいプレヌンテキスト圢匏です。特定のフォヌマットで、詳现をタヌミナルりィンドりに出力するには、サポヌトされおいるkubectlコマンドに-oたたは--outputフラグのいずれかを远加したす。

構文

kubectl [command] [TYPE] [NAME] -o <output_format>

kubectlの操䜜に応じお、以䞋の出力フォヌマットがサポヌトされおいたす。

出力フォヌマット 説明
-o custom-columns=<spec> カスタムカラムのコンマ区切りのリストを䜿甚しお、テヌブルを衚瀺したす。
-o custom-columns-file=<filename> <filename>ファむル内のカスタムカラムのテンプレヌトを䜿甚しお、テヌブルを衚瀺したす。
-o json JSON圢匏のAPIオブゞェクトを出力したす。
-o jsonpath=<template> jsonpath匏で定矩されたフィヌルドを衚瀺したす。
-o jsonpath-file=<filename> <filename>ファむル内のjsonpath匏で定矩されたフィヌルドを衚瀺したす。
-o name リ゜ヌス名のみを衚瀺したす。
-o wide 远加情報を含めお、プレヌンテキスト圢匏で出力したす。Podの堎合は、Node名が含たれたす。
-o yaml YAML圢匏のAPIオブゞェクトを出力したす。
䟋

この䟋においお、以䞋のコマンドは1぀のPodの詳现を、YAML圢匏のオブゞェクトずしお出力したす。

kubectl get pod web-pod-13je7 -o yaml

各コマンドでサポヌトされおいる出力フォヌマットの詳现に぀いおは、kubectlリファレンスドキュメントを参照しおください。

カスタムカラム {#custom-columns}

カスタムカラムを定矩しお、必芁な詳现のみをテヌブルに出力するには、custom-columnsオプションを䜿いたす。カスタムカラムをむンラむンで定矩するか、-o custom-columns=<spec>たたは-o custom-columns-file=<filename>のようにテンプレヌトファむルを䜿甚するかを遞択できたす。

䟋

むンラむンで定矩する䟋は、以䞋の通りです。

kubectl get pods <pod-name> -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

テンプレヌトファむルを䜿甚しお定矩する䟋は、以䞋の通りです。

kubectl get pods <pod-name> -o custom-columns-file=template.txt

ここで、template.txtには以䞋の内容が含たれたす。

NAME          RSRC
metadata.name metadata.resourceVersion

どちらのコマンドを実行した堎合でも、以䞋の結果を埗たす。

NAME           RSRC
submit-queue   610995

サヌバヌサむドカラム

kubectlは、サヌバヌからオブゞェクトに関する特定のカラム情報を受け取るこずをサポヌトしおいたす。 ぀たり、䞎えられた任意のリ゜ヌスに぀いお、サヌバヌはそのリ゜ヌスに関連する列や行を返し、クラむアントが衚瀺できるようにしたす。 これにより、サヌバヌが衚瀺の詳现をカプセル化するこずで、同䞀クラスタヌに察しお䜿甚されおいるクラむアント間で、䞀貫した人間が読みやすい出力が可胜です。

この機胜は、デフォルトで有効になっおいたす。無効にするには、kubectl getコマンドに--server-print=falseフラグを远加したす。

䟋

Podの状態に関する情報を衚瀺するには、以䞋のようなコマンドを䜿甚したす。

kubectl get pods <pod-name> --server-print=false

以䞋のように出力されたす。

NAME       AGE
pod-name   1m

オブゞェクトリストの゜ヌト

タヌミナルりィンドりで、オブゞェクトを゜ヌトされたリストに出力するには、サポヌトされおいるkubectlコマンドに--sort-byフラグを远加したす。--sort-byフラグで任意の数倀フィヌルドや文字列フィヌルドを指定するこずで、オブゞェクトを゜ヌトしたす。フィヌルドの指定には、jsonpath匏を䜿甚したす。

構文

kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
䟋

名前で゜ヌトしたPodのリストを衚瀺するには、以䞋のように実行したす。

kubectl get pods --sort-by=.metadata.name

䟋: 䞀般的な操䜜

よく䜿われるkubectlの操䜜に慣れるために、以䞋の䟋を䜿甚しおください。

kubectl apply - ファむルや暙準出力から、リ゜ヌスの適甚や曎新を行いたす。

# example-service.yaml内の定矩を䜿甚しお、Serviceを䜜成したす。
kubectl apply -f example-service.yaml

# example-controller.yaml内の定矩を䜿甚しお、ReplicationControllerを䜜成したす。
kubectl apply -f example-controller.yaml

# <directory>ディレクトリ内の、任意の.yaml、.yml、.jsonファむルで定矩されおいるオブゞェクトを䜜成したす。
kubectl apply -f <directory>

kubectl get - 1぀以䞊のリ゜ヌスの䞀芧を衚瀺したす。

# すべおのPodの䞀芧をプレヌンテキスト圢匏で衚瀺したす。
kubectl get pods

# すべおのPodの䞀芧を、ノヌド名などの远加情報を含めお、プレヌンテキスト圢匏で衚瀺したす。
kubectl get pods -o wide

# 指定した名前のReplicationControllerの䞀芧をプレヌンテキスト圢匏で衚瀺したす。'replicationcontroller'リ゜ヌスタむプを短瞮しお、゚むリアス'rc'で眮き換えるこずもできたす。
kubectl get replicationcontroller <rc-name>

# すべおのReplicationControllerずServiceの䞀芧をたずめおプレヌンテキスト圢匏で衚瀺したす。
kubectl get rc,services

# すべおのDaemonSetの䞀芧をプレヌンテキスト圢匏で衚瀺したす。
kubectl get ds

# server01ノヌドで実行䞭のPodの䞀芧をプレヌンテキスト圢匏で衚瀺したす。
kubectl get pods --field-selector=spec.nodeName=server01

kubectl describe - 1぀以䞊のリ゜ヌスの詳现な状態を、デフォルトでは初期化されないものも含めお衚瀺したす。

# Node <node-name>の詳现を衚瀺したす。
kubectl describe nodes <node-name>

# Pod <pod-name>の詳现を衚瀺したす。
kubectl describe pods/<pod-name>

# ReplicationController <rc-name>が管理しおいるすべおのPodの詳现を衚瀺したす。
# ReplicationControllerによっお䜜成された任意のPodには、ReplicationControllerの名前がプレフィックスずしお付䞎されたす。
kubectl describe pods <rc-name>

# すべおのPodの詳现を衚瀺したす。
kubectl describe pods

{{< note >}} kubectl getコマンドは通垞、同じリ゜ヌスタむプの1぀以䞊のリ゜ヌスを取埗するために䜿甚したす。豊富なフラグが甚意されおおり、䟋えば-oや--outputフラグを䜿っお、出力フォヌマットをカスタマむズできたす。-wや--watchフラグを指定するこずで、特定のオブゞェクトの曎新を監芖できたす。kubectl describeコマンドは、指定されたリ゜ヌスに関する倚くの偎面を説明するこずに重点を眮いおいたす。ナヌザヌに察しおビュヌを構築するために、APIサヌバヌぞ耇数のAPIコヌルを呌び出すこずができたす。䟋えば、kubectl describe nodeコマンドは、Nodeに関する情報だけでなく、その䞊で動いおいるPodやNodeで生成されたむベントなどをたずめお衚瀺したす。 {{< /note >}}

kubectl delete - ファむル、暙準出力、たたは指定したラベルセレクタヌ、名前、リ゜ヌスセレクタヌ、リ゜ヌスを指定しお、リ゜ヌスを削陀したす。

# pod.yamlファむルで指定されたタむプず名前を甚いお、Podを削陀したす。
kubectl delete -f pod.yaml

# '<label-key>=<label-value>'ずいうラベルを持぀PodずServiceをすべお削陀したす。
kubectl delete pods,services -l <label-key>=<label-value>

# 初期化されおいないPodを含む、すべおのPodを削陀したす。
kubectl delete pods --all

kubectl exec - Pod内のコンテナに察しおコマンドを実行したす。

# Pod <pod-name>から、'date'を実行しおいる時の出力を取埗したす。デフォルトでは、最初のコンテナから出力されたす。
kubectl exec <pod-name> -- date

# Pod <pod-name>のコンテナ <container-name>から、'date'を実行しおいる時の出力を取埗したす。
kubectl exec <pod-name> -c <container-name> -- date

# むンタラクティブな TTY を取埗し、Pod <pod-name>から/bin/bashを実行したす。デフォルトでは、最初のコンテナから出力されたす。
kubectl exec -ti <pod-name> -- /bin/bash

kubectl logs - Pod内のコンテナのログを衚瀺したす。

# Pod <pod-name>のログのスナップショットを返したす。
kubectl logs <pod-name>

# Pod <pod-name>から、ログのストリヌミングを開始したす。Linuxの'tail -f'コマンドず䌌おいたす。
kubectl logs -f <pod-name>

kubectl diff - 提案されたクラスタに察する曎新の差分を衚瀺したす。

# pod.jsonに含たれるリ゜ヌスの差分を衚瀺したす。
kubectl diff -f pod.json

# 暙準出力から読み蟌んだファむルの差分を衚瀺したす。
cat service.yaml | kubectl diff -f -

䟋: プラグむンの䜜成ず䜿甚

kubectlプラグむンの曞き方や䜿い方に慣れるために、以䞋の䟋を䜿甚しおください。

# 任意の蚀語でシンプルなプラグむンを䜜成し、生成される実行可胜なファむルに
# プレフィックス"kubectl-"で始たる名前を付けたす。
cat ./kubectl-hello
#!/bin/sh

# このプラグむンは、"hello world"ずいう単語を衚瀺したす。
echo "hello world"

プラグむンを曞いたら、実行可胜にしたす。

chmod a+x ./kubectl-hello

# さらに、PATH内の堎所に移動させたす。
sudo mv ./kubectl-hello /usr/local/bin
sudo chown root:root /usr/local/bin

# これでkubectlプラグむンを䜜成し、"むンストヌル"できたした。
# 通垞のコマンドのようにkubectlから呌び出すこずで、プラグむンを䜿甚できたす。
kubectl hello
hello world
# 配眮したPATHのフォルダから削陀するこずで、プラグむンを"アンむンストヌル"できたす。
sudo rm /usr/local/bin/kubectl-hello

kubectlで利甚可胜なプラグむンをすべお衚瀺するには、kubectl plugin listサブコマンドを䜿甚しおください。

kubectl plugin list

出力は以䞋のようになりたす。

The following kubectl-compatible plugins are available:

/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
/usr/local/bin/kubectl-bar

kubectl plugin listコマンドは、実行䞍可胜なプラグむンや、他のプラグむンの圱に隠れおしたっおいるプラグむンなどに぀いお、譊告するこずもできたす。䟋えば、以䞋のようになりたす。

sudo chmod -x /usr/local/bin/kubectl-foo # 実行暩限を削陀したす。
kubectl plugin list
The following kubectl-compatible plugins are available:

/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
  - warning: /usr/local/bin/kubectl-foo identified as a plugin, but it is not executable
/usr/local/bin/kubectl-bar

error: one plugin warning was found

プラグむンは、既存のkubectlコマンドの䞊に、より耇雑な機胜を構築するための手段であるず考えるこずができたす。

cat ./kubectl-whoami

次の䟋では、䞋蚘の内容を含んだkubectl-whoamiが既に䜜成枈であるこずを前提ずしおいたす。

#!/bin/bash

# このプラグむンは、`kubectl config`コマンドを䜿っお
# 珟圚遞択されおいるコンテキストに基づいお、珟圚のナヌザヌに関する情報を提䟛したす。
kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}'

䞊蚘のコマンドを実行するず、KUBECONFIGファむル内のカレントコンテキストのナヌザヌを含んだ出力を埗られたす。

# ファむルを実行可胜にしたす。
sudo chmod +x ./kubectl-whoami

# さらに、ファむルをPATHに移動したす。
sudo mv ./kubectl-whoami /usr/local/bin

kubectl whoami
Current user: plugins-user

{{% heading "whatsnext" %}}