【クラウドネイティブ|Kubernetesをゼロから学ぶ】 25. 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 つ以上のファイルで指定できます。

  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. 説明: 1 つ以上のリソースのコメントを追加または更新します。

注釈はキー/値で構成されます。注釈の目的は補助データ、特にツールやシステム拡張によって操作されるデータを格納することです。-overwrite が true の場合、既存の注釈を上書きできます。それ以外の場合、注釈を上書きしようとすると、 If set --resource-version が指定されている場合、更新はこのリソース バージョンを使用し、それ以外の場合は元のリソース バージョンを使用します。

  1. 文法:

kubectl annotate (-f ファイル名 | タイプ名 | タイプ/名前) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]

  1. 例:

"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 バージョン

  1. 文法:

kubectl api-versions [フラグ]

  1. 説明: 利用可能な API バージョンを一覧表示します

  2. さまざまな apiVersion の意味:

alpha: 内部ベータ版、多くのバグが含まれています。使用中にバグがある可能性があります。このバージョンが放棄された場合、お客様には通知されません
。eta: パブリック ベータ版。このバージョンは多くのテストの後、通常どおり使用できます。詳細は変更される可能性があります。 , しかし、この安定版は放棄されません
: 安定版: このバージョンは非常に安定しており、安心して使用できます. 以降のバージョンには、v1 のような名前のこの安定版が常に含まれます.

  1. 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

申し込み

  1. 文法:

kubectl apply -f ファイル名 [フラグ]

ファイルからリソースのアプリケーション構成を変更します。宣言的な更新構成ファイル。

自動スケーリング

レプリカ コントローラーによって管理される一連のポッドを自動スケーリングします。

  1. 文法:

kubectl autoscale (-f ファイル名 | タイプ名 | タイプ/名前) [–min=MINPODS] --max=MAXPODS [–cpu-percent=CPU] [フラグ]

クラスター情報

  1. 文法:

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

構成

  1. 文法:

kubectl config サブコマンド [フラグ] kubeconfig ファイルを変更する

create、通常は使用されません。この代わりに apply を使用します

  1. 文法:

kubectl create -f FILENAME [flags] ファイルまたは標準入力から 1 つ以上のリソースを作成します。

消去

  1. 文法:

kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] ファイル、標準入力、または指定されたラベル セレクター、名前、リソース セレクター、またはリソースからリソースを削除します。

[root@k8smaster ~]# kubectl delete deployment tomcat-deploy
deployment.apps "tomcat-deploy" deleted

説明

  1. 文法:

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

編集

  1. 文法:

kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] デフォルトのエディターを使用して、サーバー上の 1 つ以上のリソースの定義を編集および更新し、動的に変更します。

エグゼクティブ

  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

説明

  1. 文法:

kubectl Explain [–recursive=false] [flags] さまざまなリソースのドキュメントを取得します。たとえば、ポッド、ノード、サービスなどはヘルプ コマンドに相当し、
リソースの作成方法を教えてくれます。

公開

  1. 文法:

kubectl 公開 (-f ファイル名 | タイプ名 | タイプ/名前) [–port=ポート] [–protocol=TCP|UDP] [–target-port=番号または名前] [–name=名前] [–externalip= external-ip-of-service] [–type=type] [flags] レプリカ コントローラー、サービス、またはポッドを新しい Kubernetes サービスとして公開します。

得る

  1. 文法:

kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [–watch] [–sortby=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
1 つ以上のリソースを一覧表示します。

ラベル

  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

ログ

  1. 文法:

kubectl logs POD [-c CONTAINER] [–follow] [flags] コンテナーのログを出力します。-c はコンテナーを指定できます

[root@k8smaster ~]# kubectl logs tomcat-deploy-6b65dd5799-88676

パッチ

  1. 文法:

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 に転送します。

プロキシー

  1. 文法:

kubectl proxy [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–apiprefix=prefix] [flags] Kubernetes API サーバーを実行するプロキシ。

交換

  1. 構文: kubectl replace -f FILENAM ファイルまたは標準入力からリソースを置き換えます。

走る

  1. 文法:

kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–dryrun=server | client | none] [–overrides=inline-json] [flags] 指定したクラスタ ミラー

kubectl run nginx --image=nginx

nginx アプリケーションを作成できます。ポッド アプリケーションの実際の作成は、リソース マニフェスト ファイルを作成することによって作成されます。

規模

  1. 文法:

kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags] 指定したレプリカ コントローラーのサイズを更新します (数を変更します)のレプリカ) .

バージョン

  1. 文法:

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を学ぶ ご覧
いただきありがとうございます 記事には個人的な理解が混在しています 誤りがある場合は、私に連絡して指摘してください〜

おすすめ

転載: blog.csdn.net/qq_45400861/article/details/127147257