この記事では、Kubernetesクラスターで最初のポッドを作成する方法を説明します。 Nginxのポッドを作成する手順を見ていきます。
ポッドは、Kubernetesアプリケーションの基本的な実行ユニットです。これは、同じホストに一緒にデプロイされるコンテナのコレクションです。 Kubernetesクラスタのポッドは、次の2つの方法で使用できます。
- 単一のコンテナを実行するポッド: これは、ポッドを使用する最も一般的な方法です。 Kubernetesは、コンテナを直接管理するのではなく、ポッドを管理します。
- 連携する必要のある複数のコンテナを実行するポッド: このモデルでは、ポッドはリソースを共有するために緊密に結合された複数のコンテナを持つことができます。
ポッドには複数のコンテナを含めることができると前述したように、可能な場合は常に単一のコンテナを使用することをお勧めします。 1つのポッドに複数のコンテナをグループ化することは、比較的高度なユースケースです。このパターンは、コンテナーが緊密に結合されている特定のインスタンスでのみ使用する必要があります。
単一のコンテナをデプロイする場合、通常、「pod」という単語を「container」に置き換えることができます。ポッドは、構成要素間のデータ共有と通信を可能にします。
ポッドは常にノードで実行されます。ノードはKubernetesのワーカーマシンであり、クラスターに応じて仮想マシンまたは物理マシンのいずれかになります。各ノードはマスターによって管理されます。ノードには複数のポッドを含めることができ、Kubernetesマスターはクラスター内のノード間でポッドのスケジュールを自動的に処理します。
ポッドライフサイクルの5つの段階
- 保留中 :ポッドはKubernetesシステムに受け入れられましたが、1つ以上のコンテナイメージが作成されていません。これには、スケジュールされるまでの時間と、ネットワーク経由で画像をダウンロードするために費やされた時間が含まれます。これには時間がかかる場合があります。
- 実行中 :ポッドがノードにバインドされ、すべてのコンテナが作成されました。少なくとも1つのコンテナがまだ実行中であるか、開始または再起動中です。
- 成功 :ポッド内のすべてのコンテナは正常に終了し、再起動されません。
- 失敗 :ポッド内のすべてのコンテナが終了し、少なくとも1つのコンテナが失敗して終了しました。つまり、コンテナはゼロ以外のステータスで終了したか、システムによって終了されました。
- 不明 :何らかの理由で、ポッドの状態を取得できませんでした。通常、ポッドのホストとの通信エラーが原因です。
前提条件
- AWSアカウント(お持ちでない場合は作成)
- Kubernetesクラスター(Kubernetesクラスターの作成方法を学習したい場合は、「KubernetesクラスターをAWSEC2インスタンスUbuntu18.04LTSでkubeadmを使用してセットアップする」を検索してください)。
注:AWS EC2インスタンスを試してみたくない場合は、VMを使用してクラスターを作成することもできます。
何をするか
- NginX用のKubernetesポッドを作成して削除します
Nginx用のKubernetesポッドを作成する
最初のポッドを作成するには、新しいディレクトリを作成してオブジェクト/ポッドファイルを作成しましょう。次のコマンドを使用して、システムに新しいディレクトリを作成します
mkdir my-first-pod
cd my-first-pod /
続行する前に、クラスターのステータスを確認してください。
クラスタで使用可能なノードを確認し、「 kubectl」のバージョンを確認します 「次のコマンドを使用してください。
sudokubectlgetノード
sudo kubectl version
次のコマンドを使用して、デフォルトの名前空間のポッドを一覧表示します。これはクラスター上の最初のポッドになるため、デフォルトの名前空間にはポッドは表示されません。
sudo kubectl get pods
クラスタで利用可能なノードができたら、最初のポッドを作成する準備が整います。
次のコードブロックを使用してファイル「my-first-pod.yml」を作成します
vim my-first-pod.yml
--- apiVersion: v1 kind: Pod metadata: name: myfirstpod labels: app: web spec: containers: - name: myfirstcontainer image: nginx ports: - containerPort: 80
ここ、
- apiVersion :APIVersionは、オブジェクトのこの表現のバージョン管理されたスキーマを定義します。
- 種類 :作成したいオブジェクトの種類。ポッドを作成しているので、ここではポッドです。
- 名前 :名前は名前空間内で一意である必要があります。
- ラベル :オブジェクトの整理と分類に使用できる文字列キーと値のマップ
- spec :ポッドの望ましい動作の仕様。
これで、次のコマンドを使用してポッドを作成する準備が整いました。
sudo kubectl apply -f my-first-pod.yml
次のコマンドを使用して、ポッドの詳細を取得できます。
sudo kubectl get pods
ポッドが実際に実行されているかどうかを確認するには、次のコマンドを実行します。これにより、ポッド内でコマンドが実行されます(注: docker execの実行に似ています 。)
sudo kubectl exec myfirstpod —サービスnginxステータス
ポッドが不要になった場合は、「kubectldeletecommand」を使用してポッドを削除できます。
sudo kubectl delete pods myfirstpod
最後に、ポッドが削除されたかどうかを確認するには、次のコマンドを使用します。
sudo kubectl get pods
結論
この記事では、ポッドとそのライフサイクルステージに関する基本的なことを学びました。 Kubernetesで最初のNginxポッドを作成する手順を見ました。また、ポッドに関する詳細を抽出する方法も確認しました。これに伴い、ポッドを削除するコマンドを検討しました。