Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Kubernetes の YAML ファイル

 

Kubernetes の設定に関するその他多くの方法と同様に、YAML は Kubernetes 構成ファイルで使用される標準フォーマットです。YAML は広く使用されているため、多くの場合、すでに精通していると考えられます。そうでないと’しても、yaml は非常に簡単に学習できる言語であるため、たいした問題ではありません。ポッドの YAML 設定の各行は詳細であり、pod 学習プロセスの副産物として YAML 形式について理解しておく必要があります。

YAML 形式の pod 構成ファイルは次のとおりです。

YAML は、次の3つの基本データタイプを使用します。

  1. スカラー (文字列/数値): atom データ項目、pod-1、ポート番号80のような文字列。

  2. マッピング (ハッシュ/ディクショナリ): キーと値のペアを入れ子にすることもできます。apiVersion: v1 はマッピングです。key apiVersion は v1 の値を持っています。

  3. シーケンス (アレイ/リスト): 順序付けられた値の収集。キーはありません。リストアイテムは、-標識で示されます。キーコンテナーの値は、2つのコンテナを含むリストです。

この例では、ネストした YAML データ構造も見られます。

  • マップのマッピング: spec はマップの鍵であり、pod’の仕様を定義します。この例では、pod で起動するコンテナの動作のみを定義しています。この値は、キーがコンテナに含まれるもう1つのマップです。

  • リストのマッピング。キーコンテナの値は、次の2つの項目のリストです。サーバーとクライアントのコンテナーです。各コンテナは、公開される名前、イメージ、ポートなどの属性を使用して、個々のコンテナを示すマッピングを示しています。

YAML に関して知っておく必要があるその他の特性は以下のとおりです。

  • 大文字と小文字が区別されます。

  • 同じレベルの要素は同じ左インデントを共有しますが、インデント幅は重要ではありません。

  • タブ文字をインデントとして使用することはできません。

  • 空白ラインは重要ではありません

  • # を使用してラインにコメントをする

  • 任意の文字の特殊な意味をエスケープするには、単一引用符を使用します。

YAML ファイルの詳細を確認する前に、次’のように pod の作成を完了させてみましょう。

そこ。最初の Kubernetes オブジェクト–は pod-1 という名前の pod として作成されています。では、コンテナはどこにあるのでしょうか。この出力は、次のような手掛かりを提供します。2つのコンテナ (準備完了/2) を含む pod ポッド-1 (名前) は、Kubernetes worker ノード cent333 で、IP アドレス10.47.255.237 を割り当てて起動されています。ポッド内の両方のコンテナが稼働しています (準備完了 2/)。再起動なしで、27s の実行ステータスになっています。ここ’で yaml 構成が何を実行しているかについて、簡単な説明を示します。

  • ライン 1: このコメント行は、# 進んだテキストを使用して、YAML ファイルに任意のコメントを付けることができます。(本書全体では、この最初の行を使用して YAML ファイルのファイル名を指定しています。このファイル名は、YAML ファイルからオブジェクトを作成するときにコマンドの後で使用されます。

  • 線2、3、4、8: 4 YAML のマッピングは、pod 定義の主なコンポーネントです。

    • ApiVersion: V2 など、さまざまなバージョンがあります。ここでは、特にバージョン1です。

    • 同種Kubernetes オブジェクトには別のタイプがあることに注意してください。この場合、Kubernetes が pod オブジェクトを作成する必要があります。その後、他のオブジェクトの例では、レプリケーションコントローラまたはサービスの種類が表示されます。

    • データ作成されたオブジェクトを識別します。作成するオブジェクトの名前に加えて、別の重要なメタデータはラベルです。これについては、第3章で詳しく説明します。

    • スペシフィケーションこれにより、pod 動作に関する仕様が得られます。

  • ライン 9-15: Pod 仕様では、2つのコンテナについて説明しています。システムは画像をダウンロードし、各コンテナを名前で起動して、指定されたポートを公開します。

’ここでは’、ポッド内で実行されていることを示します。

当然のことながら、pod-1 は、Kubernetes クラスターによって割り当てられた IP アドレスを使用して、YAML ファイル、サーバー、クライアントで宣言された2つのコンテナから成り、Figure 1に示すように、すべてのコンテナ間で共有しています。

Figure 1: ノード、ポッド、コンテナ
ノード、ポッド、コンテナ

コンテナの一時停止

Node cent333 にログインすると、次の’ような Docker コンテナが pod 内で実行されていることがわかります。

K8s.gcr.io/pause の3番目のコンテナは、Kubernetes システムによってポッドごとに作成された特別なコンテナです。Pause コンテナは、pod のネットワークリソースを管理するために作成されます。この pod のすべてのコンテナで共有されます。

Figure 2は、いくつかのユーザーコンテナと一時停止コンテナを含むポッドを示しています。

Figure 2: ポッド、ユーザーコンテナ、特殊な Pause コンテナ
ポッド、ユーザーコンテナ、特殊な Pause コンテナ

内部ポッド通信

Kubernetes マスターでは、次’のようにマスターからのコンテナへのログインを許可します。

Note

Docker でプレイしたことがあれば、これは非常にすばらしいものであることをすぐに実感してください。コンテナはいずれかのノードで起動されたので、Docker を使用する場合は、まず、適切なリモートノードにログインしてから、類似の Docker exec コマンドを使用して各コンテナーにログインする必要があります。Kubernetes は、このような詳細を隠します。これにより、1つのノード–からマスターのすべてを実行できます。

次に、コンテナで実行されているプロセスをチェックします。

サーバーコンテナ

クライアントコンテナ

この ps コマンド出力は、各コンテナーが独自のプロセスを実行していることを示しています。しかし、ss と ip のコマンド出力は、両方のコンテナが同一の正確なネットワーク環境を共有しているため、どちらもポートを相互に公開していることを示しています。そのため、localhost を使用するだけで、pod 内のコンテナ間の通信が発生する可能性があります。ここ’では、curl コマンドを使用して TCP 接続を開始することで、これをテストしてみましょう。

クライアントコンテナから、サーバーコンテナから web ページを取得したいとします。次のように localhost の IP アドレスを使用して curl を開始するだけです。

接続が確立し、web ページが正常にダウンロードされたことを確認できます。

では’、TCP 接続の状態を監視してみましょう。接続が正常に確立されました。

また、サーバーコンテナからも同じように正確に接続できます。

Kubectl ツール

ここまでは’、kubectl コマンドによって作成されたオブジェクトを見てきました。このコマンドは、Docker world の docker コマンドと同様に、Kubernetes world のインターフェイスが Kubernetes API 経由でクラスター、より正確に Kubernetes master と通信します。’Kubernetes に対処するために必要なあらゆる種類のタスクを実行するためのオプションを提供する汎用ツールです。

Kubectl のオートコンプリート機能を有効にした場合、現在の環境でサポートされるすべてのオプションを一覧表示するには、マスターと入力 kubectl にログインし、次に2つの tab キーを使用します。

Note

Kubectl コマンドのオートコンプリートを設定するには、[完了] オプションの指示に従ってください。

kubectl の完了-h

このガイドの残り’の部分では、これらのオプションのいくつかについて説明しています。