[クラウドネイティブ] 一般的に使用される kubectl コマンドの包括的なリスト

目次

1. リソースの管理方法

 kubectlコマンドリスト

2. 一般的に使用される kubectl コマンドの包括的なリスト

2.2 プロジェクトのライフサイクル: 作成-->公開-->更新-->ロールバック-->削除

1. kubectl createコマンドを作成する

2. kubectl Expose コマンドを発行します。

3. kubectl セットを更新する

4. kubectl ロールアウトをロールバックする 

5.kubectlの削除を削除する

3. 宣言的な管理方法


1. リソースの管理方法

①宣言型リソース管理方法(コマンドライン経由

Kubernetes クラスター管理クラスター リソースへの唯一の入り口は、対応するメソッド 2 を介して apiserver インターフェイスを呼び出すことです。kubectl は公式の CLI コマンド ライン ツールで、API サーバーとの通信、コマンド ラインでユーザーが入力したコマンドの整理と変換に使用されます。さまざまな k8s リソースを管理する効果的な方法を実現するための特定された情報

 ②宣言型リソース管理方法(yamlファイル経由

1. リソースの変更に適しています
2. 宣言的なリソース管理方法は、リソース構成マニフェスト ファイルに依存してリソースを管理します リソース構成マニフェスト ファイルには
2 つの形式があります: yaml (人間に優しく、読みやすい)、json (解析しやすい) API インターフェース) )
3. リソース管理は、統合リソース構成リストで事前に定義され、宣言コマンドを通じて k8s クラスターに適用されます
4. 構文形式: kubectl create/apply/delete -f xxxx.yaml

 kubectlコマンドリスト

k8s 中国語ドキュメント: http://docs.kubernetes.org.cn/683.html

2. 一般的に使用される kubectl コマンドの包括的なリスト

リソースの追加、削除、確認は便利ですが、変更するのは簡単ではありません。

バージョン情報を表示する

kubectl のバージョン

リソースオブジェクトの省略形を表示

kubectl API リソース

クラスター情報の表示

kubectl クラスター情報

kubectl のオートコンプリートを構成する

source <(kubectl completion bash)    #(临时)

vim  /etc/bashrc/

#底行添加

source <(kubectl completion bash)

bash

ノードノードビューログ

ジャーナルctl -u kubelet -f

基本情報を見る

kubectl get <リソース> [-o Wide|json|yaml] [-n 名前空間]

リソース関連の情報を取得します。-n はコマンド スペースを指定し、-o は出力形式を指定します。
リソースには、pod nginx-xxx などの特定のリソース名を指定できます。また、pod などのリソース タイプを指定することもできます。または、すべて (いくつかのコア リソースのみが表示され、不完全)
--all-namespaces または -A: すべてのコマンド スペースを表示することを意味します。
--show-labels: すべてのラベルを表示します
。 -l app: ラベル
app -l app=を持つリソースのみを表示します。 nginx: アプリのラベルのみを表示します。値が nginx であるリソース

マスターノードのステータスを確認する
kubectl getComponentstatuses
kubectl get cs

コマンドの表示 space
kubectl get namespace
kubectl get ns

コマンド スペースの役割: 異なるコマンド スペース内の同じタイプのリソースが同じ名前を持つことを許可するために使用されます。

デフォルトの名前空間内のすべてのリソースを表示します。
kubectl get all [-n default]

名前空間の作成 app
kubectl create ns app
kubectl get ns

名前空間アプリの削除
kubectl 名前空間アプリの削除
kubectl get ns            

名前空間 kube-public にレプリカ コントローラー (デプロイメント) を作成して、ポッド (nginx-wl) を開始します。
kubectl createdeployment nginx-wl --image=nginx -n kube-public

リソースの詳細を説明します
kubectl descriptiondeployment nginx-wl -n kube-public
kubectl description pod nginx-wl-d47f99cb6-hv6gz -n kube-public

名前空間のポッド情報を表示する kube-public
kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-wl-d47f99cb6-hv6gz 1/1 Running 0 24m


kubectl exec はホスト間でコンテナにログインできますが、 docker exec はコンテナが配置されているホスト上のコンテナにのみログインできます。

ポッド リソースを削除 (再起動) します。deployment/rc などのレプリカ コントローラーが存在するため、ポッドを削除すると再起動も行われます。 kubectl delete
pod nginx-wl-d47f99cb6-hv6gz -n kube-public

ポッドが削除できず、常に終了状態にある場合は、ポッドを強制的に削除する必要があります。
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period は移行を示します生存期間、デフォルトは 30s で、POD はポッドを削除する前にコンテナ プロセスをゆっくりと終了し、正常に終了します。0 はポッドをただちに終了することを意味します。

kubectl スケール デプロイメントの展開と縮小
nginx-wl --replicas=2 -n kube-public #
kubectl スケール デプロイメントの展開 nginx-wl --replicas=1 -n kube-public # 縮小

レプリカ コントローラーを削除します
kubectl deletedeployment nginx-wl -n kube-public
kubectl deletedeployment/nginx-wl -n kube-public

2.2 プロジェクトのライフサイクル: 作成-->公開-->更新-->ロールバック-->削除

1. kubectl createコマンドを作成する

1 つ以上のコンテナー イメージを作成して実行します。
コンテナーを管理するためのデプロイメントまたはジョブを作成します。
kubectl create --help

// nginx インスタンスを起動し、コンテナ ポート 80 を公開し、レプリカの数を 3 に設定します。
kubectl createdeployment nginx --image=nginx:1.14 --port=80 --replicas=3

kubectl ポッドを取得
kubectl すべてを取得


2. kubectl Expose コマンドを発行します。

リソースを新しいサービスとして公開します。
kubectl 公開 --ヘルプ

デプロイメントの nginx 用のサービスを作成し、サービスのポート 80 を介してコンテナーのポート 80 に転送します。サービスの名前は nginx-service 、タイプは NodePort です
。 - name=nginx-service --type=NodePort 

Kubernetes が Service を必要とする理由は、一方では Pod の IP が固定されておらず (Pod は再構築される可能性がある)、他方では、Pod インスタンスのグループ間の負荷分散が常に必要であるためです。 。
サービスは、Label Selector を介して Pod のグループへのアクセスを実装します。
コンテナ アプリケーションの場合、Kubernetes はサービスにアクセスするための VIP (仮想 IP) ベースのブリッジ メソッドを提供し、サービスは対応するポッドにリダイレクトされます。

サービスの種類:
●ClusterIP: ポッドアクセス用にクラスター内の仮想 IP を提供します (デフォルトのサービスの種類)。

●NodePort: 外部アクセス用に各ノードでポートを開きます。Kubernetes は各ノードでポートを開き、各ノードのポートは同じです。Kubernetes クラスター外のプログラムは NodeIp:NodePort. アクセス サービスを使用できます。
各ポートには 1 つのサービスのみを指定でき、ポート範囲は 30000 ~ 32767 のみです。

●LoadBalancer:クラウドサービスプロバイダーが提供するLoadBalancerアドレスを設定することで、LoadBalancerをマッピングします。この使用法は、サービスがパブリック クラウド サービス プロバイダーのクラウド プラットフォーム上にセットアップされるシナリオでのみ使用されます。外部ロード バランサーを介してアクセスされます。通常、クラウド プラットフォームに LoadBalancer を展開するには追加コストが必要です。
サービスが送信されると、Kubernetes は CloudProvider を呼び出してパブリック クラウド上に負荷分散サービスを作成し、バックエンドとして負荷分散サービスにプロキシされたポッドの IP アドレスを設定します。

●externalName: サービス名を DNS ドメイン名にマッピングします。これは、DNS サービスの CNAME レコードに相当します。ポッドがクラスター外のリソースにアクセスできるようにするために使用されます。リソース自体はバインドされません。

ヘッドレスclusterIPヘッドレスモード  

ポッド ネットワーク ステータスの詳細と、サービスによって公開されているポートを表示します
。 kubectl get pods,svc -o Wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
pod/nginx-cdb6b5b95-fjm2x 1/1 Running 0 44s 172.17.26.3 192.168.80.11 <なし>
pod/nginx-cdb6b5b95-g28wz 1/1 実行中 0 44 秒 172.17.36.3 192.168.80.12 <なし>
pod/nginx-cdb6b5b95-x4m24 1/1 実行中 0 44 秒 172.17.36.2 192.168.80.12 <なし>

名前タイプ クラスター IP 外部 IP ポート 年齢セレクター
service/kubernetes ClusterIP 10.0.0.1 <なし> 443/TCP 14d <なし>
service/nginx-service NodePort 10.0.0.189 <なし> 80:44847/TCP 18s run =nginx


バックエンドkubectl get endpointsに関連付けられたノードを表示する

サービス
kubectl description svc nginxの説明情報を表示します。

node01 ノードで操作し、ロード バランシング ポートを確認します。
yum install ipvsadm -y
ipvsadm -Ln
//外部アクセス用の IP とポート
TCP 192.168.80.11:44847 rr
  -> 172.17.26.3:80 Masq 1 0 0         
  -> 172.17.36.2 : 80 Masq 1 0 0         
  -> 172.17.36.3:80 Masq 1 0 0      //ポッド クラスター グループ10.0.0.189:80 rr   -> 172.17.26.3:80 Masq 1 0 0            -> 172.17
内でアクセスされる IP およびポート TCP 。 36.2:80 マスク 1 0 0            -> 172.17.36.3:80 マスク 1 0 0         



node02 ノードで操作し、同じ方法でロード バランシング ポートを確認します。
yum install ipvsadm -y
ipvsadm -Ln
TCP 192.168.80.12:44847 rr
  -> 172.17.26.3:80 Masq 1 0 0         
  -> 172.17.36.2:80 Masq 1 0 0         
  - > 172.17.36.3:80 マスク 1 0 0         

TCP 10.0.0.189:80 rr
  -> 172.17.26.3:80 マスク 1 0 0         
  -> 172.17.36.2:80 マスク 1 0 0         
  -> 172.17.36.3:80 マスク 1 0 0         

Curl 10.0.0.189
Curl 192.168.80.11:44847
// Master01操作
Kubectl logs nginx-
cdb6b6b5b95-fjm2x kubectl logs nginx-cdb6b5b5b95-g28wz
kubectl logs nginx-cdb6b6b6b6b6b6b66b66b6b5b9555555555555555-x4m24


3. kubectl セットを更新する

既存のアプリケーション リソースに関するいくつかの情報を変更します。
kubectl セット --ヘルプ

変更されたテンプレート
kubectl set image を取得します --help
例:

デプロイメントの nginx コンテナー イメージを「nginx:1.9.1」に設定し、busybox コンテナー イメージを「busybox」に設定します。

  kubectl イメージのデプロイメント/nginx を設定します。busybox=busybox nginx=nginx:1.9.1

現在の nginx のバージョン番号を確認します
curl -I http://192.168.80.11:44847curl
-I http://192.168.80.12:44847

nginx のバージョンをバージョン 1.15 に更新します。
kubectl set imagedeployment/nginx nginx=nginx:1.15

動的リッスン ポッド状態では、ローリング アップデート方式が使用されるため、最初に新しいポッドが生成され、その後古いポッドが削除されます。 kubectl get pods
-w


更新されたPodの IP アドレスをもう一度確認します。

nginx のバージョン番号を確認します
。curl -I http://192.168.80.11:44847curl
-I http://192.168.80.12:44847


4. kubectl ロールアウトをロールバックする 

リソースのロールバック管理
kubectl rollout --help

履歴バージョンの表示
kubectl ロールアウト履歴 デプロイメント/nginx 

以前のバージョンへのロールバックを実行します。
kubectl rollout undodeployment/nginx

指定したバージョンへのロールバックを実行
kubectl rollout undodeployment/nginx --to-revision=1

ロールバックステータスを確認する
kubectl ロールアウトステータス デプロイ/nginx


5.kubectlの削除を削除する

//レプリカ コントローラーを削除
kubectl deletedeployment/nginx

//サービスを削除
kubectl delete svc/nginx-service

kubectl すべてを取得します

カナリアリリース

デプロイメント コントローラーは、更新操作の「一時停止」または「再開」など、更新プロセス中のスクロール リズムのカスタム制御をサポートします。たとえば、新しい Pod リソースの最初のバッチが作成された直後に更新プロセスが一時停止されますが、この時点ではアプリケーションの新バージョンの一部のみが存在し、主要な部分は依然として古いバージョンのままです。次に、ユーザー リクエストのごく一部をフィルタリングして新しいバージョンの Pod アプリケーションにルーティングし、それが安定して望ましい方法で実行できるかどうかを観察し続けます。問題がないことを確認したら、Pod リソースの残りのローリング更新を続行します。それ以外の場合は、更新操作をすぐにロールバックします。これはカナリアリリースと呼ばれます。
(1) デプロイメントのバージョンを更新し、
デプロイメントの一時停止を構成します。 kubectl set imagedeployment/nginx nginx=nginx:1.14 && kubectl rollout stopdeployment/nginx

kubectl rollout statusdeployment/nginx #更新ステータスを観察する

(2) 更新プロセスを監視すると、一時停止コマンド kubectl get pods -w が使用されているため、新しいリソースが追加されていますが、古いリソースが期待どおりに削除されていないことがわかります
。 

カール [-I] 10.0.0.189
カール [-I] 192.168.80.11:44847

(3) 更新したPodに問題がないことを確認し、
kubectl rolloutresumedeployment/nginxの更新を続行します。

(4) 最終更新状況を確認する
kubectl get pods -w 

カール [-I] 10.0.0.189
カール [-I] 192.168.80.11:44847

3. 宣言的な管理方法

リソース構成リストを表示する
kubectl getdeployment nginx -o yaml

リソース構成マニフェストの説明
kubectl 説明deployment.metadata

kubectl get service nginx -o yaml
kubectl Explain service.metadata

リソース構成リストを変更して適用します
。オフライン変更:
yaml ファイルを変更し、kubectl apply -f xxxx.yaml ファイルを使用して有効にします。
注: 適用が有効にならない場合は、まず delete を使用してリソースをクリアし、次にリソースを作成するために適用します。

kubectl get service nginx -o yaml > nginx-svc.yaml
vim nginx-svc.yaml #修正ポート: 8080
kubectl delete -f nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
kubectl get svc

オンライン変更:
kubectl edit サービス nginx を直接使用してリソース構成リストをオンラインで編集し、保存して終了するとすぐに有効になります (ポート: 888 など) PS
: この変更方法では、yaml ファイルの内容は変更されません。


//リソース構成リストを削除
宣言的削除:
kubectl delete service nginx

宣言的な削除:
kubectl delete -f nginx-svc.yaml

おすすめ

転載: blog.csdn.net/m0_71888825/article/details/132799511