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

推薦する

検索マーケティング: オーガニック検索とそのキーワードのパラドックス

検索マーケティング キャンペーンを成功させる鍵は、タイムリーかつ複雑なコンテンツのインデックス作成を...

SEO 業界でウェブサイトをフレーム化する 2 つの恥知らずな方法を明らかにする

どの業界でも、競合他社を陥れるために恥ずべき方法を使う人が必ず存在しますが、SEO 業界でも同じこと...

タイトルに間違ったキーワードを使うことについての簡単な説明

タイトルの魅力を構成するキーワードの秘密について話しましょう。それは何ですか?類似キーワードも多くの...

WeChatが料金を請求するかどうかは、運営者のCCTVとは関係ありません。

最近、ネット上で最も議論されている問題は、WeChatのユーザー数が3億人を超えているため、料金を請...

キーワードの実際の価値と競争力を正しく判断する方法についての簡単な分析

SEO 担当者はキーワードに精通していると思います。キーワードの選択は、SEO をうまく行うための最...

クラウドネイティブテクノロジーマップを1つの記事で理解する

クラウド ネイティブ アプリケーションとテクノロジを追跡および調査している場合は、Cloud Nat...

アリババのクラウドネイティブなビッグデータ運用・保守プラットフォームSREWorksが正式にオープンソース化

著者 |盛白業界が発展し続けるにつれて、ビッグデータと AI は徐々にクラウドネイティブの傾向を示し...

友好的なリンクを交換するための基準と注意事項について簡単に説明します

ウェブサイトの最適化に携わる人なら、ウェブサイトのランキングを決定する 3 つの要素は、フレンドリー...

Shein が成功したのは SEO のおかげですか?

今年最も人気のある独立系ブランドのウェブサイトは、間違いなく shein.com でしょう。今年上半...

ウェブマスターの推奨事項: インドの VPS の推奨事項、インドの VPS クラウド サーバー、信頼性の高い古い VPS ブランドの Web サイト

インドVPSの推奨事項インドは東南アジアの大きな国で、人口も大きいです。インドの VPS は市場が広...

#windows vps# winity-9.6 USD/1g メモリ/40g SSD/1T トラフィック/ロサンゼルス

残り物をいくつか再掲します。今はもうなくなってしまった winity.io VPS ブランドをもう一...

クラウドコンピューティングの発展の10年を詳しく見る

[51CTO.com オリジナル記事] 1. クラウド開発の10年人生にはそれほど多くの十年はありま...

Namecheap: プロフェッショナル WordPress ホスティングが年間 14.88 ドル

Namecheap は、WordPress ブログ サービスのみを提供するプロフェッショナルな Wo...

アリババがメイズに5億9000万ドルを投資

2月9日午前、Meizu TechnologyとAlibaba Groupは、Alibaba Gro...

#BlackFriday# pacificrack: ロサンゼルス VPS、50% オフ、最低 $12.5/年、Windows とスナップショット付き

Pacificrack がついにまともな割引情報をリリースしました。すべての VPS が 50% 割...