序文
上記の[entryからabandonment-Kubernetesまで] Kubernetes entry-application deploymentで、コマンドラインを使用してアプリケーションをデプロイする方法を学びました。この記事では、yaml設定ファイルを使用してアプリケーションをデプロイし、アプリケーションを拡張および縮小する方法を学びました。
Kubernetesオブジェクト
この段落は、kubernetesの公式マニュアルの学習ノートを参照しています。事前に理解しておくことをお勧めします。関連する概念をすでに理解している場合は、この段落をスキップして、次の操作を直接確認できます。
Kubernetesオブジェクトは永続エンティティです。Kubernetesはこれらのエンティティを使用して、クラスター全体の状態を表します。
次の情報について説明します。
- 実行されているコンテナ化されたアプリケーション(およびノード)
- アプリケーションで使用できるリソース
- 再起動戦略、アップグレード戦略、フォールトトレランス戦略など、アプリケーションのランタイムパフォーマンスに関する戦略
オブジェクトが作成されると、k8sクラスターは引き続き機能して、オブジェクトが目的の状態を満たしていることを確認します。
オブジェクトの仕様(Spec)とステータス(Status)
各Kubernetesオブジェクトには2つのネストされたオブジェクトフィールドがあり、オブジェクトの構成の管理を担当します。オブジェクトの仕様とオブジェクトのステータスです。仕様は必須であり、オブジェクトの望ましい状態(Desired State)-望ましいオブジェクトの特性を記述します。statusは、オブジェクトの実際の状態(実際の状態)を示します。これは、Kubernetesシステムによって提供および更新されます。Kubernetesコントロールプレーンはいつでも、オブジェクトの実際の状態を管理して、目的の状態に一致させるように努めています。
Kubernetesオブジェクトについて説明する
一般的に、yamlはk8sオブジェクトを記述するために使用され、Yamlは構成を記述するために特に使用される言語です。
基本的な文法規則は次のとおりです。
- 大文字と小文字を区別
- インデントを使用して階層関係を表す
- タブはインデントには使用できず、スペースのみが許可されます
- 同じレベルの要素が左揃えである限り、インデントされたスペースの数は重要ではありません
- 「#」はコメントを意味します
yamlを使用してk8sオブジェクトを説明するには、次の必須フィールドが必要です。
- apiVersion-オブジェクトの作成に使用されるKubernetes APIのバージョン
- 種類-作成するオブジェクトのタイプ
- 名前文字列、UID、オプションの名前空間など、オブジェクトの一意性を識別するのに役立つメタデータ
- spec-オブジェクトの望ましい状態(Desired State)を記述します。k8sクラスターは、オブジェクトが記述された状態を満たすことを保証し続けます。
Kubernetesオブジェクトを管理する
k8sオブジェクトを管理する方法は3つあります
命令型コマンド
これは、上記で使用した方法であり、コマンドラインで直接操作します。
など:
kubectl create deployment nginx --image nginx
オブジェクト構成と比較した利点:
- コマンドはシンプルで、覚えやすく、覚えやすいです。
- コマンドは、クラスターに変更を加えるために1つのステップのみを実行します。
オブジェクト構成と比較した短所:
- 注文は変更レビュープロセスと統合されていません。
- このコマンドは、変更に関連する監査証跡を提供しません。
- リアルタイムコンテンツを除いて、コマンドはレコードソースを提供しません。
- このコマンドは、新しいオブジェクトを作成するためのテンプレートを提供しません。
命令型オブジェクト構成
連携するには、操作手順書と設定ファイルが必要です。
など:
kubectl create -f nginx.yaml
命令型コマンドと比較した利点:
- オブジェクト構成は、Gitなどのソース管理システムに保存できます。
- オブジェクトの構成は、プッシュや監査の前に更新を確認するなどのプロセスと統合できます。
- オブジェクト構成は、新しいオブジェクトを作成するためのテンプレートを提供します。
命令型コマンドと比較した短所:
- オブジェクト構成には、オブジェクトアーキテクチャの基本的な理解が必要です。
- オブジェクトの構成では、YAMLファイルを書き込むための追加の手順が必要です。
宣言型オブジェクト構成と比較した利点:
- 命令型オブジェクト構成の動作は、よりシンプルで理解しやすくなっています。
- Kubernetesバージョン1.5以降、命令型オブジェクト構成はより成熟しています。
宣言型オブジェクト構成と比較した短所:
- 命令型オブジェクト構成は、ディレクトリよりもファイルに適しています。
- アクティブなオブジェクトへの更新は構成ファイルに反映する必要があります。そうしないと、次の置換で失われます。
宣言的なオブジェクト構成
宣言型オブジェクト構成では、コマンドに示されている操作を指定する必要がないため、構成ファイルをディレクトリに配置し、ディレクトリ内のファイルに対してさまざまな操作を実行できます。
たとえば、次のとおりです。
kubectl apply -f configs/
命令型オブジェクト構成と比較した利点:
- アクティブなオブジェクトに加えられた変更は、構成ファイルにマージされなくても保持されます。
- 宣言的なオブジェクト構成は、ディレクトリの操作をより適切にサポートし、各ファイルの操作タイプ(作成、パッチ、削除)を自動的に検出します。
命令型オブジェクト構成と比較した短所:
- 宣言的なオブジェクト構成はデバッグが難しく、例外が発生したときに結果を理解するのが困難です。
- diffを使用して生成された部分的な更新は、複雑なマージおよびパッチ操作を作成します。
ハンズオン
配置を作成
node-deployment.yamlファイルを作成する
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-deployment
labels:
app: node
spec:
replicas: 3
selector:
matchLabels:
app: node
template:
metadata:
labels:
app: node
spec:
containers:
- name: node
image: registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
ports:
- containerPort: 80
作成する
kubectl apply -f node-deployment.yaml
展開を表示する
kubectl get deployments
ポッドを表示
kubectl get pods --show-labels
規模の展開
10部に拡張
kubectl scale deployment.v1.apps/node-deployment --replicas=10
展開とポッドを表示するための拡張が完了しました
kubectl get deployments
kubectl get pods --show-labels
3つのコピーに縮小
kubectl scale deployment.v1.apps/node-deployment --replicas=3
この時点で、7つのポッドが終了状態にあることがわかります。しばらくしてから、もう一度確認します。実行中のポッドは3つだけです。
自動回復
最初にポッドのリストを確認します
kubectl get pods --show-labels
ポッドの1つを選択して削除
kubectl delete pod node-deployment-57df45c5bf-d8xst
削除が成功したら、ポッドリストをもう一度確認します
kubectl get pods --show-labels
削除されたポッドが存在しないことがわかりますが、デプロイメントにより新しいポッドが作成されています。
これは、k8sが常にクラスターの実行状態と構成記述の状態の整合性を確保しようとする特性です。
デプロイメントの説明情報を取得する
kubectl describe deployment node-deployment
デプロイの現在の説明とポッドの変更履歴を確認できます。
NewReplicaSet:
- Deploymentが最初に作成されたときに、ReplicaSet(node-deployment-57df45c5bf)を作成し、3つのコピーを作成しました。
イベント:
- 最初に10ポッドに拡張
- 3ポッドに削減
- 1ポッドに削減
- 3ポッドに拡張
展開ステータスを表示する
kubectl get deployment node-deployment -o yaml
デプロイメント構成と現在のステータスをyaml形式で表示する
まとめ
この記事では、k8sオブジェクトとは何か、yaml構成を使用してデプロイを作成する方法を紹介しました。
スケールを使用してデプロイメントをスケーリングし、ポッドを手動で削除する機能を実証した後、k8sは、説明に従って実行状態を説明と一致させます。
手術が終わった後、コンセプトを振り返ると、びっくりするような気分になります。
この記事の構成ファイルはAloofJrにあります。
その他の記事
私のブログを参照してください:https : //nc2era.com
AloofJrによって書かれた、ソースを示してください