Kubernetes の運用とメンテナンスに知っておくべき 12 個の Kubectl コマンド

Kubernetes の運用とメンテナンスに知っておくべき 12 個の Kubectl コマンド

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 は、コンテナ内のファイルの保存先を指定します。

<<:  Kubernetes 上の Kafka のマルチクラスター展開を簡素化

>>:  エッジコンピューティングは IoT の状況をどのように変えているのでしょうか?

推薦する

ウェブサイトの最適化において高品質の外部リンクを取得するためのチャネルについての簡単な説明

ウェブサイトの最適化のプロセスにおいて、一部のウェブマスターにとって頭の痛いことが 1 つあります。...

コンテンツキングはSEOのニュートンの法則ですか?

昔、ニュートンという人がいました。彼は、リンゴが木から落ちるのは地球の重力のせいだと言いました。また...

UCloud AIオンラインサービスが低遅延シナリオに重点を置くGPUバージョンをリリース

序文UCloud AIオンラインサービス「UAI-Inference」は、昨年5月の無料公開ベータ版...

2兆ドルのブルーオーシャンが呼んでいます。我が国のクラウドコンピューティング開発をどのように収益化すればよいのでしょうか?

関連データによると、わが国のクラウドコンピューティング産業の規模は2018年に962.8億元に達し、...

B2C Eコマースサイトの注文コンバージョン率の分析

一般的に、電子商取引にはインターネット、小売、サプライ チェーンの 3 つのアプローチがあります。コ...

DoeLashes が SEO 戦略を通じて熾烈な競争の激しいつけまつげ業界で抜きん出た存在となった方法

最近はブランドサイトやSEOに注目しているせいか、最近見たり友人と話したりするのは、ブランドサイトや...

ファイリングスペースは不要

申請不要スペース:申請不要、高速、低価格、これらは海外ホストの主な特徴です。ここでは、香港の申請不要...

フレンドリーリンクを作成する際に注意すべき5つのポイント

フレンドリー リンクは、変更方法はもちろん、どこを変更すればよいのかもわからないため、多くのウェブマ...

仮想マシン保護技術についてお話しましょう

[[224947]]仮想マシンの概要いわゆる仮想マシン保護技術とは、コードを機械や人間が認識できない...

Baiduスパイダーをあなたの花嫁にして、検索エンジンがあなたのウェブサイトをもっと好きになるようにしましょう

コアヒント: 検索エンジンにウェブサイトをもっと気に入ってもらうにはどうすればよいでしょうか? 初心...

Sharktech: 独立記念日に最大50%オフ、月額49ドル、40Gbpsの高防御

アメリカの独立記念日である7月4日、老舗ブランドSharktechがロサンゼルス、シカゴ、デンバーの...

Oracle NetSuiteは、さまざまな業界の組織の計画改善を支援します

顧客がビジネス パフォーマンスを即座に把握し、リアルタイムの意思決定を促進できるようにするために、O...

データセンターの仮想化による 10 大メリット

企業のビジネスが拡大するにつれて、データセンターはますます大きなプレッシャーに直面しています。より多...

クラウドガバナンスのベストプラクティスについてお話ししましょう

クラウド ガバナンスは、クラウドでサービスを実行する企業が採用する一連のルールとポリシーです。組織は...

SEO エキスパートになる方法についての簡単な説明

最近、ある疑問について考えていました。同じ SEO を行っている人でも、なぜ成功する人がいる一方で、...