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

推薦する

あなただけのブランドロゴを持つ時が来ました!

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

SEO 面接計画: 小さなプレーヤーから監督者になる方法

SEO の敷居は低く、SEO に携わる人も多く、SEO 求職者にとって競争相手が多いということになり...

エッジコンピューティング101: 5つの異なるタイプのエッジソリューションについて学ぶ

IDC の調査によると、AI、5G、ネットワーキング、IoT テクノロジーの急増により、エッジ ソリ...

hostsolutions: ルーマニア VPS、年間 25 ユーロ、KVM/1G メモリ/1 コア/30gNVMe/10T トラフィック/1Gbps 帯域幅

Hostsolutions は、ルーマニアの Oradea データセンターで KVM シリーズ VP...

どのようなウイルス対策ソフトウェアをインストールすればよいでしょうか?

どのウイルス対策ソフトウェアが最適ですか? また、どのようなウイルス対策ソフトウェアをインストールす...

ダブルイレブンに備える: 最高のイベントを企画するのに役立つ 4 つのケーススタディ

月収10万元の起業の夢を実現するミニプログラム起業支援プラン活動は一般的ですが、良い活動はまれです。...

Banwagonhost の香港 VPS 割引コード、香港 VPS、大容量帯域幅、格安香港 VPS

待望のBandwagonhost香港VPSがついにオンラインになりました。香港では1Gbpsの帯域幅...

ウェブサイトをインデックスに登録して SEO を改善する方法

SEO がどれだけ優れていても、すべての前提は、Web サイトが Baidu に含まれる必要があると...

Baidu の経験を活用して旅行ウェブサイトを宣伝する方法

Baidu傘下のすべての製品は、ウェブサイト最適化担当者にとって必須科目となっているため、Baidu...

Google、Microsoft、Appleなどが共同でオープンソースのWeb技術ウェブサイトを推進

ウェブプラットフォームのウェブサイト新浪科技報、北京時間10月9日朝のニュースによると、すべてのオー...

BandwagonHostのすべてのテストIP + VPS評価、BandwagonHostの選択方法を教えます

BandwagonHost のどのコンピュータ ルームが自分に適していて、どのコンピュータ ルームの...

国信友誼デジタルクラウドサービスは、政府や企業が低コストかつ便利にデジタル変革の高速レーンに入ることを支援します。

デジタル変革の波を受けて、企業や組織のデジタル構築の需要が急速に高まっています。ますます多くの企業や...

ネットユーザーがWeChatのパスワード抜け穴を暴露、劉燕と馬化騰のアカウントがハッキングされる

少し前、あるオタクのネットユーザーが、周紅義とのビデオインタビューのダイヤルアップトーンに基づいて周...

検索エンジンアルゴリズムの分析と判断

現在の検索エンジン市場は「征服」の時期にあり、市場シェアを競い合っています。このような環境では、検索...

クラウドからエッジへの移行がスマートホームの未来を決める

クラウドからエッジまでの次世代データ処理は勢いを増しており、2025 年までに 2,740 億ドルの...