KubernetesへのcRPDのインストール
Kubernetesは、コンテナ化されたワークロードとサービスを管理するためのオープンソースプラットフォームです。コンテナは、アプリケーションをバンドルして実行する優れた方法です。実稼働環境では、アプリケーションを実行するコンテナを管理し、ダウンタイムが発生しないようにする必要があります。たとえば、コンテナがダウンした場合、別のコンテナを起動する必要があります。Kubernetes は、分散型システムを耐障害性に優れた方法で実行するフレームワークを提供します。Kubernetesは、ホストコンテナのクラスター全体で、アプリケーションコンテナの導入の自動化、拡張、運用のためのプラットフォームを提供します。
前提 条件
LinuxシステムにKubernetesをインストールし、2ノードLinuxクラスタにKubernetesを導入する場合は、 Kubernetesのインストールを参照してください。
Kubernetesを展開すると、クラスターが得られます。Kubernetesクラスタは、コンテナ化されたアプリケーションを実行するノードと呼ばれるワーカーマシンのセットで構成されています。各クラスターには、少なくとも 1 つのワーカー ノードがあります。ワーカーノードは、アプリケーションのコンポーネントであるポッドをホストします。
このセクションでは、Kubernetes 上で cRPD Docker イメージを作成する手順について説明します。
Kubernetes のインストール
Kubernetesをインストールするには::
Kubernetes クラスタ
Kubernetes は、1 つのユニットとして動作するように接続されたコンピューターのクラスターを調整します。Kubernetesは、効率的な方法でクラスター間でのcRPDの導入とスケジューリングを自動化します。
Kubernetes クラスタは、2 種類のリソースで構成されています。
プライマリは、クラスタを調整します。
ノードとは、アプリケーションを実行するワーカーです。
プライマリは、クラスタの管理を担当します。プライマリーは、アプリケーションのスケジューリング、アプリケーションの望ましい状態の維持、アプリケーションの拡張、新しいアップデートの展開など、クラスター内のすべてのアクティビティを調整します。
ノードとは、Kubernetes クラスター内のワーカー マシンとして機能する VM または物理コンピューターです。各ノードには、ノードを管理し、Kubernetesマスターと通信するためのエージェントであるKuberletがあります。ノードには、Docker や rkt などのコンテナ操作を処理するためのツールも必要です。本番トラフィックを処理するKubernetesクラスターには、最低3つのノードが必要です。
KubernetesにcRPDを展開すると、プライマリがアプリケーションコンテナを開始します。プライマリーは、クラスターのノード上で実行するコンテナをスケジュールします。ノードは、プライマリが公開するKubernetes APIを使用してプライマリと通信します。エンドユーザーは、Kubernetes APIを直接使用してクラスターと対話することもできます。
ポッドは常にノード上で動作します。ノードは Kubernetes のワーカー マシンであり、クラスタによっては仮想マシンまたは物理マシンのいずれかです。各ノードはプライマリによって管理されます。ノードには複数のポッドを使用でき、Kubernetesマスターがクラスター内のノード全体でポッドのスケジューリングを自動的に処理します。
すべてのKubernetesノードは、少なくとも以下を実行します。
Kubelet:Kubernetesマスターとノード間の通信を担当するプロセス。ポッドとマシン上で実行されているコンテナを管理します。
コンテナー イメージをレジストリから取得し、コンテナーを開梱し、アプリケーションを実行するコンテナー ランタイム(Docker、rkt など)。
Minikube クラスタを作成するには、
cRPD Dockerの画像をダウンロード
-
cRPD ソフトウェアをインポートする前に、Docker が Linux ホストにインストールされていること、および Docker エンジンが実行されていることを確認してください。
-
cRPDソフトウェアをダウンロードする前に 、ジュニパーサポート に登録してください。
docker イメージをダウンロードするには、次の手順にしたがっています。
導入を使用したcRPDポッドの作成
Kubernetesポッドは、管理とネットワークの目的で結び付けられた1つ以上のコンテナのグループです。Kubernetes Deploymentは、ポッドの正常性をチェックし、ポッドのコンテナが終了すると再起動します。デプロイは、ポッドの作成と拡張を管理するために推奨される方法です。
導入で望ましい状態を記述し、導入コントローラが実際の状態を望ましい状態に変更する場合。デプロイを定義して新しい ReplicaSets を作成するか、既存のデプロイを削除し、新しいデプロイですべてのリソースを採用することができます。
YAML を使用した cRPD ポッドの作成
ポッドは、Kubernetesアプリケーションの基本実行ユニットです。これは、作成またはデプロイするKubernetesオブジェクトモデルの中で最も小さく、最もシンプルなユニットです。ポッドは導入の単位を表します。Kubernetes内のアプリケーションの単一インスタンスで、1つのコンテナまたは緊密に結合され、リソースを共有する少数のコンテナで構成される場合があります。Docker は、Kubernetes ポッドで使用される最も一般的なコンテナ ランタイムです。
直接ポッドを作成することも、Kubernetesのコントローラを使用して間接的に作成することもできます。コントローラーは、複数のポッドを作成および管理できます。コントローラは、指定したポッドテンプレートを使用してポッドを作成します。ポッドテンプレートは、レプリケーションコントローラ、ジョブ、デーモンセットなどの他のオブジェクトに含まれるポッド仕様です。
YAMLファイルを使用してcRPDポッドを作成するには
各ポッドは、特定のアプリケーションの単一インスタンスを実行するためのものです。アプリケーションを水平方向に拡張する(複数のインスタンスを実行するなど)場合は、インスタンスごとに1つずつ、複数のポッドを使用する必要があります。Kubernetes では、これは通常、レプリケーションと呼ばれます。
「」も参照
ジョブリソースを使用したcRPDポッドの作成
ジョブは、1つ以上のポッドを作成し、指定した数のポッドが正常に終了するまで、ポッドの実行を再試行します。指定した完了回数に達すると、タスクは完了します。ジョブを使用して、複数のポッドを並行して実行することもできます。ジョブを削除すると、作成したポッドがクリーンアップされます。ジョブを停止すると、ジョブが再開されるまで、ジョブのアクティブなポッドが削除されます。crpd_job.yamlファイルを使用してcRPDポッドを作成するには、
DaemonSetを使用したcRPDポッドの作成
DaemonSetにより、すべての(または一部の)ノードがポッドのコピーを実行します。ノードがクラスタに追加されるにつれて、ポッドはクラスターに追加されます。ノードがクラスターから削除されると、それらのポッドはガベージ コレクションされます。DaemonSetを削除すると、作成したポッドがクリーンアップされます。
crpd_daemonset.yamlファイルを使用してcRPDポッドを作成する
各ポッドは、特定のアプリケーションの単一インスタンスを実行するためのものです。アプリケーションを水平方向に拡張する(複数のインスタンスを実行するなど)場合は、インスタンスごとに1つずつ、複数のポッドを使用する必要があります。Kubernetes では、これは通常、レプリケーションと呼ばれます。
「」も参照
cRPDのスケーリング
コマンドの パラメータを使用して、需要に基づいてcRPDの –replicas
複数のインスタンスを kubectl run
作成できます。配置は、ReplicaSetsを所有および管理できるオブジェクトです。
スケーリングする前に、1つのポッドを既存にする必要があります。
スケールアップするには、次の手順にいます。
スケール ダウンするには、次の手順にいます。
-
次のコマンドを実行して、サービスを2つのレプリカにスケールダウンします。
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2
deployment.apps/crpdref scaled
-
導入を一覧表示するには、次のコマンドを実行します。
root@kubernetes-master:~# kubectl get deployments
-
次のコマンドを実行して、ポッド数を示します。2つのポッドが終了したことを確認できます。
root@kubernetes-master:~# kubectl get pods -o wide
cRPD導入のローリングアップデート
ポッドインスタンスを新しいバージョンで更新できます。ローリングアップデートでは、ポッドインスタンスを新しいインスタンスで段階的に更新することで、ダウンタイムを発生さけずに導入の更新を行うことができます。新しいポッドは、利用可能なリソースを持つノードでスケジュールされます。ロールバックのアップデートは、ダウンタイムのない継続的な統合と継続的なアプリケーション配信により、ある環境から別の環境へのアプリケーションを促進します。Kubernetesでは、アップデートはバージョン管理され、導入の更新はすべて以前の安定したバージョンに戻すことができます。
cRPD導入を新しいイメージで更新し、更新後に設定を保持するには:
割り当てられたリソースを使用したcRPDポッドの導入
ポッドは、コンテナのネットワーキングとストレージという2種類の共有リソースを提供します。ポッド内のコンテナがポッド外のエンティティと通信する場合、共有ネットワークリソース(ポートなど)の使用方法を調整する必要があります。ポッド内では、コンテナはIPアドレスとポートを使用して localhost
通信します。
ポッド内のコンテナは、システムホスト名をPodに設定された name
のと同じとして表示します。
ポッド内の任意のコンテナは、コンテナ仕様のフラグを privileged
使用して、特権モードを有効にすることができます。これは、ネットワーク スタックの操作やハードウェア デバイスへのアクセスなど、オペレーティング システム管理機能を使用するコンテナに便利です。特権コンテナー内のプロセスは、コンテナーの外部のプロセスで使用可能なほとんど同じ権限を取得します。
リソースを含むポッド導入を表示するには、以下の手順にしたがっています。
マウントボリュームを使用したcRPDポッドの導入
は emptyDir
、K8sでサポートされている複数のタイプのボリュームの中の1つであり、ポッドがノードに割り当てられたときに最初に作成され、そのノードでPodが実行されている限り存在します。名前の通り emptyDir
、ボリュームは最初は空です。ポッド内のすべてのコンテナは、同じファイルをボリューム内で emptyDir
読み書きできますが、そのボリュームは各コンテナ内の同じパスまたは異なるパスにマウントできます。ポッドが何らかの理由でノードから削除されると、 内 emptyDir
のデータは完全に削除されます。
Kubernetes上のストレージパスをマウントしてcRPDポッドの導入を表示するには、