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 の状況をどのように変えているのでしょうか?

推薦する

ウェブサイト最適化計画の書き方についての簡単な説明

実生活でも、インターネットでも、その他の分野でも、中小企業には独自の目標、開発計画、プログラムがあり...

マーケティングホットスポット:ソーシャルマーケティングの展望の分析

アメリカのインターネット業界で、巨大企業グーグルと最も競争できる企業は、アップルでもマイクロソフトで...

ウェブサイトのホームページのアンカーポイントを観察して削除することで、再びそれを含めることを望んでいます

みなさんこんにちは。私はハルビン仮想および現実ウェブサイト設計です。最近、Baiduにウェブサイトの...

ウェブサイトのキーワードランキングを安定させる方法

現在、多くのウェブサイトのキーワードランキングは不安定です。不安定になる原因は、不安定なサーバー、過...

テンセントQQモバイルブラウザカーネルがオープン

Tencent QQ モバイル ブラウザ X5 カーネルはモバイル アプリにオープンであり、組み込み...

dogyun: 香港(独立)サーバー、月額300元から、e5-2637v2/16Gメモリ/480gSSD/10M帯域幅

Dogyun (Dog Cloud) は、人間の介入なしに完全に自動的に展開される香港の独立サーバー...

velocihost-4.55USD/384MB RAM/KVM/7GB SSD/1TB 帯域幅

14 日間の返金保証があり、サーバーはフロリダにあります。 -Samsung SSD ハードウェア ...

有能な人がウェブサイトの運営方法を教え、思想的に自分自身を向上させる

ホームページ運営は非常に知的な仕事ですが、ホームページ企画はさらに知的な職業であり、知恵をフル活用し...

年末のSEOテクニックレビュー

今日は2012年12月21日です。世界平和を祈ります。この素晴らしい時間を利用して、SEO のあらゆ...

Kubernetes に基づく CICD の実践

DevOpsとは過去 10 年間、DevOps はホットな話題となってきました。 10 人の人には ...

マルチアクセス エッジ コンピューティング (MEC) 標準化団体についてどの程度ご存知ですか?

マルチアクセス エッジ コンピューティング (MEC) は、クラウド コンピューティングに続くもう ...

インターネットプロモーションの経験:プロモーションには自己マーケティングと破壊活動が必要

プロモーションのコンセプトは、外側から始めて内側に働きかけることです。初期段階での短期間の運用で、一...

eBayが帰ってきました! CEOドナホーの5年間の業績回復の秘密

北京時間2月9日、eBay CEOのジョン・ドナホー氏は、かつて栄華を誇ったeBayを驚異的な復活へ...

2019年のデジタル中国指数レポートが発表され、クラウドの利用、GDP、デジタル経済の発展の間に強い相関関係があることが示された。

5月21日、2019年テンセントグローバルデジタルエコシステムカンファレンスが開催されました。テンセ...

Lenovo が BlackBerry の買収を検討していると噂されていますが、これは何をもたらすのでしょうか?

レノボが携帯電話メーカーのブラックベリーを買収すると噂されている。レノボの幹部がメディアに対しブラッ...