K8Sシミュレーションプロジェクト
Kubectl は、 k8s クラスターを管理するためのコマンドラインツールであり、作成、表示、管理操作のために生成された json 形式で apiserver に渡されます。
//ヘルプ情報
[root@localhost bin]# kubectl --help
kubectl は、Kubernetes クラスター マネージャーを制御します。詳細については、https://kubernetes.io/docs/reference/kubectl/overview/ をご覧ください。
基本コマンド (初心者):
create ファイルまたは標準入力からリソースを作成する 公開する
レプリケーション コントローラー、サービス、デプロイメント、またはポッドを使用し
、新しい Kubernetes Service として公開する
実行する クラスター内で指定されたイメージ セットを実行する
オブジェクトのセットを設定する指定された機能基本コマンド (中級):
Explain リソースのドキュメントを表示する
get 1 つ以上のリソースを表示
する edit サーバー上のリソースを編集する
delete ファイル名、標準入力、リソースと名前、またはリソースと
ラベル セレクターによってリソースを削除するデプロイ コマンド:
rollout リソース
スケールのロールアウトを管理する Deployment、ReplicaSet、Replication Controller、または Job autoscale の
新しいコピー数を設定する
Deployment、ReplicaSet、または ReplicationController
のコピー数を自動的に調整するクラスタ管理コマンド:
証明書 証明書リソースの変更 クラスタ
情報の表示 クラスタ情報の表示
トップ リソース (CPU/メモリ/ストレージ) の使用状況の表示
コルドン ノードをスケジュール不可として
マーク アンコルドン ノードをスケジュール可能としてマーク
ドレイン メンテナンスの準備中のノードをドレイン
テイント 1 つ以上のテイントを更新ノード上トラブルシューティングおよびデバッグ コマンド:
description 指定したリソースまたはグループ ログの詳細なリソースを表示する
ポッドでコンテナー ログを
出力する Attach 実行中のコンテナーに接続
する exec コンテナーでコマンドを実行する
port-forward 1 つ以上のローカル ポートをポッドに
転送する プロキシがプロキシを実行するKubernetes API サーバーへの
cp は、コンテナーとの間でファイルとディレクトリをコピーし ます
。
1. プロジェクトのライフサイクル
作成 –> 公開 –> 更新 –> ロールバック –> 削除
2. kubectl runコマンドを作成する
- 1 つ以上のコンテナ イメージを作成して実行する
- コンテナーを管理するためのデプロイメントまたはジョブを作成する
- kubectl run --help 使用方法のヘルプを表示する
nginx インスタンスを開始し、コンテナーのポート 80 を公開し、コピー数を 3 に設定します。
kubectl nginx-deployment を実行 --image=nginx:1.14 --port=80 --replicas=3
run を使用してエラーを報告する
k8sv1.18.0 以降のバージョンでは、このコマンドは --replicas 以降は非推奨となり、デプロイメントを使用してポッドを作成することをお勧めします。
- 複数のインスタンスを作成する場合は、kubectl createdeployment pg102 --image=pg:12
--port=5432 --replicas=3 を使用して作成できます。 - ポッドの表示: kubectl get pod、コマンドを使用して作成されたすべてのインスタンスを表示するために使用されます。
- デプロイの表示: kubectl getdeploy、作成されたインスタンスの数を表示するために使用されます。
- 1.17 以降のバージョンでは、createdeployment を直接使用してポッド マネージャーを作成し、ポッドを作成することをお勧めします。
kubectl デプロイメント nginx を作成 --image=nginx:1.14 --port=80 --replicas=3
3. kubectl Expose コマンドを発行します。
リソースを新しいサービスとして公開する
デプロイメントの nginx 用のサービスを作成し、サービスのポート 80 を介してコンテナーのポート 80 に転送します。サービスの名前は nginx-service、タイプは NodePort です。
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type
1. サービスの役割
① Kubernetes は、Pod の IP が固定されていないため (Pod は再構築される可能性がある)、他方では、Pod インスタンスのグループ間で常に負荷分散を行う必要があるため、Service を必要とします。
アクセスする1 対1 のグループ ポッド
③ コンテナ アプリケーションの場合、Kubernetes はサービスにアクセスするための VIP (仮想 IP) ベースのブリッジを提供し、サービスは対応するポッドにリダイレクトします。
2. サービスの種類
① ClusterIP: Pod アクセス用にクラスター内に仮想 IP を提供します (サービスのデフォルト タイプ)
② NodePort: 外部アクセス用に各ノードでポートを開きます。Kubernetes は各ノードと各ノードでポートを開きます。ポートは NodeIP を介して同じです。 :NodePort
③ LoadBalancer: 外部ロード バランサーを介したアクセス。通常、クラウド プラットフォームに LoadBalancer を展開するには追加料金が必要です。
3. ポッドネットワークステータスの詳細とサービス公開ポートを確認します。
kubectl ポッドを取得する、svc -o Wide
4. バックエンドに関連付けられたノードを表示します。
kubectl get endpoints バックエンドに関連付けられたノードを表示する
5. サービスの詳細説明情報を表示する
kubectl 説明 svc nginx 詳細を表示
6. 内部 IP にアクセスして表示します
カール 10.99.231.111
kubectl は svc nginx を記述します。grep NodePort
カール 192.168.80.70:31405
3.7 アクセスログの表示
kubectl logs []
4. kubectl セットを更新する
- 既存のアプリケーションリソースの一部の情報を変更します。
kubectl set --help 使用方法のヘルプを表示する
4.1 変更されたテンプレートを取得する
kubectl set image --help获取
4.2 nginx の現在のバージョン番号を表示する
curl -I 192.168.109.11:31979
4.3 nginx バージョンを 1.14.2 にアップデートする
kubectl set image deployment/nginx nginx=nginx:1.14.2
4.4 ポッドのステータスを監視する
動的監視ポッド状態では、ローリング更新方式が使用されるため、最初に新しいポッドが生成され、その後古いポッドが削除されます。
kubectl get pods -w
注:更新ルールは、「kubetl descriptiondeployment nginx」の「RollingUpdateStrategy」を通じて表示できます。デフォルト設定は「最大 25% 使用不可、25% 最大サージ」です。つまり、ローリング アップデートは、次の比率に従って実行されます。 25%。
4.5 ポッドの IP 変更を確認する
kubectl get pod -o wide
5. kubectl ロールアウトをロールバックする
- リソースのロールバック管理
kubectl rollout --help 使用方法のヘルプを表示する
5.1 過去のバージョンを表示する
kubectl rollout history deployment/nginx
5.2 以前のバージョンへのロールバックを実行する
kubectl rollout undo deployment/nginx
kubectl get pods -o wide
nginx の現在のバージョンを表示する
5.3 指定したバージョンへのロールバックを実行する
過去のバージョンを表示する
Revison2 (バージョン 1.15) に戻ります。
kubectl ロールアウト デプロイメントを元に戻す/nginx --to-revision=2
ポッド IP の変更を表示する
現在の nginx バージョンを表示する
6. kubectlの削除を削除する
6.1 レプリカコントローラーの削除
kubectl delete deployment/nginx
6.2 サービスの削除
kubectl delete svc/nginx-service