kubectl コマンドライン ツールは、Kubernetes と対話するための主要なツールです。 kubectl を使用して、Kubernetes クラスター内の Pod、サービス、デプロイメントなどのリソースを作成、更新、管理できます。次に、Kubernetes の運用と保守に必須となる 12 個の Kubectl コマンドについて学習します。 1. kubectl クラスター情報次のコマンドを使用して、API サーバー アドレス、クラスターのステータスなど、Kubernetes クラスターの現在のステータスに関する情報を提供します。 $ kubectl cluster-info Kubernetes control plane is running at https://10.0.42.142:6443 metrics-server is running at https://10.0.42.142:6443/api/v1/namespaces/kube-system/services/heapster/proxy KubeDNS is running at https://10.0.42.142:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy 2. kubectl バージョンシステムに現在インストールされている kubectl のバージョンと、それが接続されている Kubernetes クラスターのバージョンを表示するには、次のコマンドを使用します。 $ kubectl version WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version. Client Version: version.Info{Major:"1", Minor:"24+", GitVersion:"v1.24.6-aliyun.1", GitCommit:"a45529632bcea0750cf04a1122c73f0fc97d26b0", GitTreeState:"clean", BuildDate:"2023-03-08T03:10:49Z", GoVersion:"go1.18.6", Compiler:"gc", Platform:"linux/amd64"} Kustomize Version: v4.5.4 Server Version: version.Info{Major:"1", Minor:"24+", GitVersion:"v1.24.6-aliyun.1", GitCommit:"5296768e052ba56e92b5d5bf7b52d33973a34c6f", GitTreeState:"clean", BuildDate:"2023-04-19T06:36:28Z", GoVersion:"go1.18.6", Compiler:"gc", Platform:"linux/amd64"} 3. kubectl を取得するこのコマンドは、Kubernetes クラスターで使用可能なリソースのリストを提供します。共通リソースは次のとおりです。 現在のデフォルト名前空間で利用可能なすべてのリソースを表示するには、次のコマンドを実行します。 $ kubectl get all NAME READY STATUS RESTARTS AGE pod/mysql-tnj2g 1/1 Running 0 37d pod/oom-cb7dbb86d-tkw5d 1/1 Running 0 9d NAME DESIRED CURRENT READY AGE replicationcontroller/mysql 1 1 1 3y83d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 172.25.0.1 <none> 443/TCP 4y115d service/oom-svc ClusterIP 172.25.14.133 <none> 8080/TCP 224d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/willie-oom 1/1 1 1 224d NAME DESIRED CURRENT READY AGE replicaset.apps/oom-55b85549b6 0 0 0 50d replicaset.apps/oom-6b7cf75c98 0 0 0 9d 現在のデフォルト名前空間のデプロイメント リソースを表示するには、次のコマンドを実行します。 $ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE oom 1/1 1 1 224d 特定の名前空間を指定します: (-n パラメータは、特定の名前空間 -namespace を指定することの省略形です): $ kubectl get deployments -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE ags-metrics-collector 1/1 1 1 3y111d alibaba-log-controller 1/1 1 1 49d alicloud-disk-controller 1/1 1 1 4y115d 指定されたリソースに関する詳細情報を表示します: (-o パラメータは詳細情報を表示します): $ kubectl get deployments -n kube-system -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR ags-metrics-collector 1/1 1 1 3y111d ags-metrics-collector registry.cn-hangzhou.aliyuncs.com/gene-aliyun/ags-metrics-collector:v1.0.0.2-cc3b2d6-aliyun app=ags-metrics-collector,owner=aliyun alibaba-log-controller 1/1 1 1 49d alibaba-log-controller registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/log-controller:0.3.3.0-d37b3ff-aliyun k8s-app=alibaba-log-controller 4.kubectlを作成しますKubernetes コマンド kubectl create は、クラスターに新しいリソースを追加するために使用されます。ユーザーはこのコマンドを使用して、Pod、サービス、デプロイメントなどのリソースを作成できます。 次のコマンドを使用すると、nginx イメージを使用して my-nginx という名前の新しいデプロイメントが作成されます。 $ kubectl create deployment my-nginx --image=nginx deployment.apps/my-nginx created 次のコマンドを使用して新しい cronjob を作成する別の例: $ kubectl create job my-cronjob --schedule="*/5 * * * *" --image=busybox -- command -- args="echo This is a cron job!" コマンドパラメータ: - --schedule は cron 構文でタスクスケジュールを指定します
- --image は実行するコンテナイメージを指定します
- --commandはコンテナを実行するコマンドを実行します
5.kubectl編集kubectl edit コマンドは、クラスター内の既存のリソース オブジェクトを編集できます。 kubectl edit を使用すると、リソースの構成を直接変更できるため、新しい YAML ファイルを手動で生成する必要がなくなります。次のコマンドは、my-nginx という名前のデプロイメントのリソース構成を変更します。 $ kubectl edit deployments my-nginx deployment.apps/my-nginx edited 6. kubectl 削除Kubectl delete コマンドは、ポッド、デプロイメント、サービス、コーンジョブなど、Kubernetes クラスター内の任意のリソースを削除するのに役立ちます。my-nginx という名前のデプロイメント リソースを削除するには、次のコマンドを使用します。 $ kubectl delete deployments.apps my-nginx deployment.apps "my-nginx" deleted 7.kubectlを適用しますkubectl apply コマンドを使用すると、YAML オーケストレーション ファイルを使用してクラスター内のリソースを作成または変更できます。 $ kubectl apply -f deployment.yaml 8. kubectl の設定Kubernetes では、コマンド kubectl config を使用して kubectl クライアントの構成を管理できます。 config コマンドを使用すると、複数のクラスター構成を表示、編集、または切り替えたり、ユーザー資格情報やコンテキスト設定を管理したりできます。 $ kubectl config set-context --current --namespace=NAMESPACE kubectl config set-context は、kubectl 構成のコンテキストを変更できる Kubernetes のコマンドです。コンテキストは、kubectl コマンドが動作するクラスター、ユーザー、および名前空間を定義します。この例では、このコマンドは現在の名前空間を「NAMESPACE」に設定します。 9. kubectl の説明kubectl describe を使用すると、リソースに関する包括的な情報をすばやく取得できるため、リソースの現在の状態を理解し、問題を特定しやすくなります。リソースのステータス、イベント、メタデータに関する詳細情報が表示されます。次のコマンドを使用して、Pod 名 metrics-server-85bd976946-rlk6c の詳細情報を表示します。 $ kubectl describe -n kube-system pod metrics-server-85bd976946-rlk6c Name: metrics-server-85bd976946-rlk6c Namespace: kube-system Priority: 2000001000 Priority Class Name: system-node-critical Node: cn-shanghai.i-uf64cmp52ak0xgn2l0aa/10.0.41.110 Start Time: Mon, 08 May 2023 23:30:47 +0800 Labels: k8s-app=metrics-server pod-template-hash=85bd976946 Annotations: kubernetes.io/psp: ack.privileged Status: Running IP: 172.24.3.211 IPs: IP: 172.24.3.211 Controlled By: ReplicaSet/metrics-server-85bd976946 Containers: metrics-server: Container ID: containerd://aae2f389294e5000222e6e015df2df2283ffe91d5cd4243d2cf7a60479f7e666 Image: registry-vpc.cn-shanghai.aliyuncs.com/acs/metrics-server:v0.3.9-d554015-aliyun Image ID: registry-vpc.cn-shanghai.aliyuncs.com/acs/metrics-server@sha256:c920f8733e79e06aaab201eb58a5d3ebdac5e87fe1cbb4ecb5b32af843d39a04 Port: <none> Host Port: <none> Command: /metrics-server --source=kubernetes.hybrid:'' --sink=socket:tcp://monitor.csk.cn-shanghai.aliyuncs.com:8093?clusterId=c76c5be3d8fe647699cc2a480bf870d5a&public=true State: Running Started: Tue, 06 Jun 2023 16:59:21 +0800 Last State: Terminated Reason: Unknown Exit Code: 255 Started: Tue, 06 Jun 2023 16:57:55 +0800 Finished: Tue, 06 Jun 2023 16:58:55 +0800 Ready: True Restart Count: 3 Limits: cpu: 4 memory: 8Gi Requests: cpu: 100m memory: 200Mi Liveness: tcp-socket :443 delay=0s timeout=1s period=10s #success=1 #failure=3 Readiness: tcp-socket :443 delay=0s timeout=1s period=10s #success=1 #failure=3 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-nx95f (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-nx95f: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: Burstable Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: <none> 10.kubectlログkubectl logs はポッド内のコンテナのログを取得し、コンテナの問題を追跡または解決するために使用できます。 metrics-server-85bd976946-rlk6c という名前の Pod のログを表示するには、次のコマンドを実行します。 $ kubectl logs -n kube-system metrics-server-85bd976946-rlk6c I0714 08:49:52.202911 1 socket.go:39] Start ExportData 156 metrics. I0714 08:49:52.206977 1 socket.go:175] Successful write 260741 bytes metrics to monitor server I0714 08:49:52.410389 1 socket.go:175] Successful write 241216 bytes metrics to monitor server I0714 08:49:52.613469 1 socket.go:175] Successful write 226287 bytes metrics to monitor server I0714 08:49:52.816824 1 socket.go:175] Successful write 240725 bytes metrics to monitor server 11. kubectl の実行kubectl exec は、ポッドの実行中のコンテナ内でコマンドを実行します。アプリケーションのデバッグ、トラブルシューティング、およびステータスの監視に役立ちます。次のコマンドを実行して、Pod コマンド metrics-server-85bd976946-rlk6c コンテナーに入ります。 $ kubectl exec -it -n kube-system metrics-server-85bd976946-rlk6c sh kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. /go # 12. kubectl cp kubectl cp を使用すると、ローカル ファイル システムとポッド内のコンテナー間、または同じポッド内の 2 つのコンテナー間でファイルとディレクトリをコピーできます。これは、ホストとコンテナ間でファイルを転送する場合や、ポッド内のコンテナ間でファイルをコピーする場合に便利です。 $ kubectl cp <local-file-path> <pod-name>:<container-destination-path> パラメータ: - kubectl cp は、ローカル ファイルをポッド内のコンテナーにコピーするために使用されます。
- local-file-path は、ローカル ファイル システム上のファイルへのパスを指定します。
- pod-name と container-destination-path は、コンテナ内のファイルの保存先を指定します。
|