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

推薦する

工業情報化省はアプリの登録制度を導入する計画があると報じられているが、開発者らは導入は容易ではないと述べている。

アプリストアが認証およびレビューのプラットフォームになる可能性があると主張する人もいます。一部の A...

電子メールを活用して e コマース サイトの飛躍を促進 (パート 2)

前回の記事「電子メールに翼を与えて、電子商取引サイトの飛躍を助けましょう(パート 1)」では、電子メ...

MySQL分散アーキテクチャの拡張と縮小の予備設計

MySQL 分散アーキテクチャのスケールアップとスケールダウンは非常に興味深いトピックです。厳密に言...

ロシアの VPS サーバー: melbicom、苦情防止、著作権問題なし、トラフィック無制限、Windows 内蔵

RIPE NCC のメンバーであるリトアニア企業 (Melbikomas UAB、設立年不明、登録年...

否定的な批判からイベントマーケティングが成功した理由

昨晩テレビをつけたら、自分の好みに合う番組が見つからず、次々とチャンネルを変えていたら、突然、新しい...

SAP、寧波市政府と提携し製造業の変革とアップグレードを推進

先日、「SAP寧波スマート製造サミット」が盛大に開催されました。サミットでは、SAPと寧波市北侖区人...

発売から 18 か月の製品に 3,000 万人の負け組ユーザーがいるなんてあり得るのでしょうか? - A5 ウェブマスターネットワーク

Kuaiya製品は非常に特別です。まず、そのユーザーは非常に特殊です。羨ましいほどの高い成長曲線(四...

一部の販売者は頻繁に身元を変更することでタオバオの偽造防止システムを逃れている

リーリー「3.15」を前に、タオバオは「美しい」成績表を発表した。タオバオが発表した最新データによる...

企業ウェブサイト向けの SEO とマーケティングのアイデア

多くの企業は、SEO とマーケティングを 2 つの部門に分けます。これは管理が簡単そうに見えますが、...

企業製品の品質を公式サイトに反映させる方法

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています私はよく、...

ZStack はどのようにしてハイブリッド クラウドの災害復旧を実現するのでしょうか?この記事を読めば分かるだろう

[51CTO.com からのオリジナル記事]この記事では、ZStack ハイブリッド クラウド ディ...

#推奨 VPS# shockhosting - $3.47/KVM/1G メモリ/20gSSD/1T トラフィック/ロサンゼルス + ニュージャージー

shockhosting の KVM 仮想 VPS はもともと高価ではなく、今回は 25% の割引が...

budgetnode-7 USD VPS/KVM/3 GB RAM/120 GB HDD/2 TB トラフィック/Windows/カスタム ISO

budgetnodeは、米国マイアミデータセンターにKVM仮想化をベースとしたVPSを新たに追加しま...

ダフネの電子商取引事業はヤオディアン100の影響で停滞

8月22日、易邦電力網は最近辞職したダフネ電子商取引部門の元幹部から、ダフネの電子商取引事業が今年初...

AWS が DeepRacer League (DRL) を発表

[51CTO.com クイック翻訳] Amazon の Amazon Web Services (A...