kubectl
1. kubectl の紹介
kubectl は、k8s クラスターを操作するためのコマンドライン ツールであり、k8s のマスター ノードにインストールされます。 kubectl を使用すると、$HOME/.kube ディレクトリで config という名前のファイルが検索されます。Kubeconfig 環境変数を設定するか、特定のkubeconfig、kubectl は、特定の kubeconfig ファイルを使用して k8s クラスターを操作することもできます。
kubectl は apiserver とやり取りすることで、k8s クラスター内のさまざまなリソースを追加、削除、変更、および確認できます。以下では、kubectl の構文、コマンド ライン操作、および一般的な例を紹介します。コマンドの詳細、パラメーター、およびサブコマンドは、kubectl リファレンス ドキュメントで確認できます。
1.kubectl 構文
k8s クラスターのマスター ノードで実行できる kubectl 構文の形式は次のとおりです。 kubectl [コマンド] [タイプ] [名前] [フラグ]
2. 上記構文の説明
command: create、get、describe、delete など、1 つ以上のリソースに対して実行する操作を指定します。
type: ポッド、デプロイメント、ステートフルセット、サービスなどのリソース タイプを指定します。リソースの種類は大文字と小文字が区別されず、単数形、複数形、または省略形で指定できます。たとえば、次のコマンドは同じ結果を出力します。
kubectl はポッド pod1 を取得します
kubectl ポッド pod1 を取得します
kubectl get po pod1
NAME: リソースの名前を指定します。名前は大文字と小文字が区別されます。名前を省略すると、すべてのリソースの詳細が表示されます: kubectl get pods.
flags: オプションのパラメーターを指定します。たとえば、 -o を使用して、ポッドがどのマシン上にあるかを確認できます
注: コマンドラインから指定された引数は、デフォルト値および対応する環境変数をオーバーライドします。
3. 複数のリソースに対して操作を実行する
各リソースは、タイプ、名前、1 つ以上のファイルで指定できます。
- タイプと名前でリソースを指定する
同じタイプのすべてのリソースをグループ化するには:
TYPE1 name1 name2 name<#>。
例: kubectl get pod example-pod1 example-pod2
複数のリソース タイプを個別に指定します。
TYPE1/名前1 TYPE1/名前2 TYPE2/名前3 TYPE<#>/名前<#>。
例:kubectl get pod/example-pod1 pod/example-pod2 deployment/example-rc1
[root@k8smaster ~]# kubectl get pods/tomcat-deploy-6b65dd5799-88676 deployment/tomcat-deploy
NAME READY STATUS RESTARTS AGE
pod/tomcat-deploy-6b65dd5799-88676 1/1 Running 5 2d21h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tomcat-deploy 0/2 2 0 2d21h
4.kubectl --help
kubectl のヘルプ コマンドを表示できます
第二に、kubectl 操作コマンドのデモンストレーション
参照: http://docs.kubernetes.org.cn/477.html
以下では、kubectl 操作に関連するコマンドと構文について説明します。
注釈を付ける
- 説明: 1 つ以上のリソースのコメントを追加または更新します。
注釈はキー/値で構成されます。注釈の目的は補助データ、特にツールやシステム拡張によって操作されるデータを格納することです。-overwrite が true の場合、既存の注釈を上書きできます。それ以外の場合、注釈を上書きしようとすると、 If set --resource-version が指定されている場合、更新はこのリソース バージョンを使用し、それ以外の場合は元のリソース バージョンを使用します。
- 文法:
kubectl annotate (-f ファイル名 | タイプ名 | タイプ/名前) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]
- 例:
"kubectl-pod" ポッドを更新し、アノテーション "description" の値を "my kubectl-pod" に設定します。同じアノテーションが複数回設定されている場合は、最後に設定された値のみが使用されます。
kubectl annotate pods kubectl-pod description='my kubectl-pod'
ポッド「kubectl-pod」を更新し、アノテーション「description」の値を「my tomcat」に設定して、既存の値を上書きします
kubectl annotate --overwrite pods kubectl-pod description='my tomcat'
[root@k8smaster ~]# kubectl annotate pods tomcat-deploy-6b65dd5799-88676 description='my kubectl-pod'
pod/tomcat-deploy-6b65dd5799-88676 annotated
[root@k8smaster ~]# kubectl describe pods tomcat-deploy-6b65dd5799-88676
Name: tomcat-deploy-6b65dd5799-88676
Namespace: default
Priority: 0
Node: k8snode1/192.168.11.136
Start Time: Thu, 11 Aug 2022 02:17:38 -0700
Labels: app=tomcat
pod-template-hash=6b65dd5799
release=canary
Annotations: cni.projectcalico.org/podIP: 10.244.249.28/32
cni.projectcalico.org/podIPs: 10.244.249.28/32
description: my kubectl-pod
API バージョン
- 文法:
kubectl api-versions [フラグ]
-
説明: 利用可能な API バージョンを一覧表示します
-
さまざまな apiVersion の意味:
alpha: 内部ベータ版、多くのバグが含まれています。使用中にバグがある可能性があります。このバージョンが放棄された場合、お客様には通知されません
。eta: パブリック ベータ版。このバージョンは多くのテストの後、通常どおり使用できます。詳細は変更される可能性があります。 , しかし、この安定版は放棄されません
: 安定版: このバージョンは非常に安定しており、安心して使用できます. 以降のバージョンには、v1 のような名前のこの安定版が常に含まれます.
- kubectl api-versions で表示される結果は次のとおりです。
Admissionregistration.k8s.io/v1 #アドミッションコントロール関連のAPI
v1 # Kubernetes API の安定版には、多くのコア オブジェクト (ポッド、サービスなど) が含まれています。
apps/v1 #Deployments、Statefulset、Daemonset など、いくつかの一般的なアプリケーション レイヤー API の組み合わせが含まれています。
[root@k8smaster ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
申し込み
- 文法:
kubectl apply -f ファイル名 [フラグ]
ファイルからリソースのアプリケーション構成を変更します。宣言的な更新構成ファイル。
自動スケーリング
レプリカ コントローラーによって管理される一連のポッドを自動スケーリングします。
- 文法:
kubectl autoscale (-f ファイル名 | タイプ名 | タイプ/名前) [–min=MINPODS] --max=MAXPODS [–cpu-percent=CPU] [フラグ]
クラスター情報
- 文法:
kubectl cluster-info [flags] クラスター内のマスターとサービスに関するエンドポイント情報を表示します。
[root@k8smaster ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.11.129:6443
KubeDNS is running at https://192.168.11.129:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.11.129:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
構成
- 文法:
kubectl config サブコマンド [フラグ] kubeconfig ファイルを変更する
create、通常は使用されません。この代わりに apply を使用します
- 文法:
kubectl create -f FILENAME [flags] ファイルまたは標準入力から 1 つ以上のリソースを作成します。
消去
- 文法:
kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] ファイル、標準入力、または指定されたラベル セレクター、名前、リソース セレクター、またはリソースからリソースを削除します。
[root@k8smaster ~]# kubectl delete deployment tomcat-deploy
deployment.apps "tomcat-deploy" deleted
説明
- 文法:
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] 1 つ以上のリソースの詳細なステータスを表示します。
[root@k8smaster ~]# kubectl describe pods tomcat-deploy-6b65dd5799-88676
[root@k8smaster ~]# kubectl describe pod/tomcat-deploy-6b65dd5799-88676
編集
- 文法:
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] デフォルトのエディターを使用して、サーバー上の 1 つ以上のリソースの定義を編集および更新し、動的に変更します。
エグゼクティブ
- 文法:
kubectl exec POD-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args…]] ポッド内のコンテナに対してコマンドを実行します。
以下のコマンドはポッド内のコンテナにログインするためのコマンドで、 -c はコンテナの名前で、一つしかない場合は書く必要はありません。
kubectl exec calico-node-cblk2 -n kube-system -i -t – /bin/sh
説明
- 文法:
kubectl Explain [–recursive=false] [flags] さまざまなリソースのドキュメントを取得します。たとえば、ポッド、ノード、サービスなどはヘルプ コマンドに相当し、
リソースの作成方法を教えてくれます。
公開
- 文法:
kubectl 公開 (-f ファイル名 | タイプ名 | タイプ/名前) [–port=ポート] [–protocol=TCP|UDP] [–target-port=番号または名前] [–name=名前] [–externalip= external-ip-of-service] [–type=type] [flags] レプリカ コントローラー、サービス、またはポッドを新しい Kubernetes サービスとして公開します。
得る
- 文法:
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [–watch] [–sortby=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
1 つ以上のリソースを一覧表示します。
ラベル
- 文法:
kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags] 1 つ以上のリソースのラベルを追加または更新します。
[root@k8smaster ~]# kubectl label pods tomcat-deploy-6b65dd5799-88676 a=b
pod/tomcat-deploy-6b65dd5799-88676 labeled
ログ
- 文法:
kubectl logs POD [-c CONTAINER] [–follow] [flags] コンテナーのログを出力します。-c はコンテナーを指定できます
[root@k8smaster ~]# kubectl logs tomcat-deploy-6b65dd5799-88676
パッチ
- 文法:
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] リソースの 1 つ以上のフィールドを更新します
ポートフォワード
1) 構文:
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] 1 つ以上のローカル ポートを Pod に転送します。
プロキシー
- 文法:
kubectl proxy [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–apiprefix=prefix] [flags] Kubernetes API サーバーを実行するプロキシ。
交換
- 構文: kubectl replace -f FILENAM ファイルまたは標準入力からリソースを置き換えます。
走る
- 文法:
kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–dryrun=server | client | none] [–overrides=inline-json] [flags] 指定したクラスタ ミラー
kubectl run nginx --image=nginx
nginx アプリケーションを作成できます。ポッド アプリケーションの実際の作成は、リソース マニフェスト ファイルを作成することによって作成されます。
規模
- 文法:
kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags] 指定したレプリカ コントローラーのサイズを更新します (数を変更します)のレプリカ) .
バージョン
- 文法:
kubectl version [–client] [flags] クライアントとサーバーで実行されている Kubernetes のバージョンを表示します
リソースタイプ
次の表に、サポートされているすべてのリソース タイプとその省略形のエイリアスを示します。
[root@k8smaster ~]# kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v1 true HorizontalPodAutoscaler
cronjobs cj batch/v1beta1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
bgpconfigurations crd.projectcalico.org/v1 false BGPConfiguration
bgppeers crd.projectcalico.org/v1 false BGPPeer
blockaffinities crd.projectcalico.org/v1 false BlockAffinity
clusterinformations crd.projectcalico.org/v1 false ClusterInformation
felixconfigurations crd.projectcalico.org/v1 false FelixConfiguration
globalnetworkpolicies crd.projectcalico.org/v1 false GlobalNetworkPolicy
globalnetworksets crd.projectcalico.org/v1 false GlobalNetworkSet
hostendpoints crd.projectcalico.org/v1 false HostEndpoint
ipamblocks crd.projectcalico.org/v1 false IPAMBlock
ipamconfigs crd.projectcalico.org/v1 false IPAMConfig
ipamhandles crd.projectcalico.org/v1 false IPAMHandle
ippools crd.projectcalico.org/v1 false IPPool
kubecontrollersconfigurations crd.projectcalico.org/v1 false KubeControllersConfiguration
networkpolicies crd.projectcalico.org/v1 true NetworkPolicy
networksets crd.projectcalico.org/v1 true NetworkSet
endpointslices discovery.k8s.io/v1beta1 true EndpointSlice
events ev events.k8s.io/v1 true Event
ingresses ing extensions/v1beta1 true Ingress
flowschemas flowcontrol.apiserver.k8s.io/v1beta1 false FlowSchema
prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta1 false PriorityLevelConfiguration
ingressclasses networking.k8s.io/v1 false IngressClass
ingresses ing networking.k8s.io/v1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses node.k8s.io/v1 false RuntimeClass
poddisruptionbudgets pdb policy/v1beta1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
roles rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers storage.k8s.io/v1 false CSIDriver
csinodes storage.k8s.io/v1 false CSINode
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments storage.k8s.io/v1 false VolumeAttachment
最後に書く
作成するのは簡単ではありません。コンテンツが役立つと思われる場合は、3 つのリンクをフォローしてサポートしてください。間違いがあればコメントで指摘していただければ修正します!
現在更新中のシリーズ:ゼロからk8sを学ぶ ご覧
いただきありがとうございます 記事には個人的な理解が混在しています 誤りがある場合は、私に連絡して指摘してください〜