Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

KubernetesへのcRPDのインストール

Kubernetesは、コンテナ化されたワークロードとサービスを管理するためのオープンソースプラットフォームです。コンテナは、アプリケーションをバンドルして実行する優れた方法です。実稼働環境では、アプリケーションを実行するコンテナを管理し、ダウンタイムが発生しないようにする必要があります。たとえば、コンテナがダウンした場合、別のコンテナを起動する必要があります。Kubernetes は、分散型システムを耐障害性に優れた方法で実行するフレームワークを提供します。Kubernetesは、ホストコンテナのクラスター全体で、アプリケーションコンテナの導入の自動化、拡張、運用のためのプラットフォームを提供します。

前提 条件

LinuxシステムにKubernetesをインストールし、2ノードLinuxクラスタにKubernetesを導入する場合は、 Kubernetesのインストールを参照してください。

Kubernetesを展開すると、クラスターが得られます。Kubernetesクラスタは、コンテナ化されたアプリケーションを実行するノードと呼ばれるワーカーマシンのセットで構成されています。各クラスターには、少なくとも 1 つのワーカー ノードがあります。ワーカーノードは、アプリケーションのコンポーネントであるポッドをホストします。

このセクションでは、Kubernetes 上で cRPD Docker イメージを作成する手順について説明します。

Kubernetes のインストール

Kubernetesをインストールするには::

  1. rootユーザーとしてログインします。
  2. ソフトウェアをダウンロードしてインストールします。
  3. 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 クラスタを作成するには、

  1. 次のコマンドを実行して、Minikubeバージョンを確認します。
  2. 以下のコマンドを実行してクラスターを起動します。
  3. 以下のコマンドを実行して、kubectl がインストールされていることを確認します。
  4. 以下のコマンドを実行して、クラスタの詳細を表示します。
  5. 以下のコマンドを実行して、クラスター内のノードを表示します。

cRPD Dockerの画像をダウンロード

前提 条件
  • cRPD ソフトウェアをインポートする前に、Docker が Linux ホストにインストールされていること、および Docker エンジンが実行されていることを確認してください。

  • cRPDソフトウェアをダウンロードする前に 、ジュニパーサポート に登録してください。

docker イメージをダウンロードするには、次の手順にしたがっています。

  1. cRPD 注文時に販売履行プロセスの一環として受け取ったログイン名とパスワードを使用して、Juniper Internal Docker レジストリにログインします。
    1. ファイル -passwd.txt を作成し、ジュニパーカスタマーケアチームが提供する見積もりを除くアクセストークンをコピーします。
    2. 以下のコマンドを使用して、Enterprise Hubにログインします。
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin enterprise-hub.juniper.net:443

      例えば root@ubuntu-vm18$ cat passwd.txt | docker login -u user@domain.com --password-stdin enterprise-hub.juniper.net:443

  2. 次のコマンドを使用して、ダウンロードサイトからdockerイメージをプルします

    root@dc-rpd-01# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:<release tag>

    例えば

    root@ubuntu-vm18:~# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:22.3R1

  3. dockerイメージリポジトリでイメージを検証します。

    root@dc-rpd-01# docker images

導入を使用したcRPDポッドの作成

Kubernetesポッドは、管理とネットワークの目的で結び付けられた1つ以上のコンテナのグループです。Kubernetes Deploymentは、ポッドの正常性をチェックし、ポッドのコンテナが終了すると再起動します。デプロイは、ポッドの作成と拡張を管理するために推奨される方法です。

導入で望ましい状態を記述し、導入コントローラが実際の状態を望ましい状態に変更する場合。デプロイを定義して新しい ReplicaSets を作成するか、既存のデプロイを削除し、新しいデプロイですべてのリソースを採用することができます。

  1. Kubernetes-master で crpd.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  2. crpd.yaml ファイルを保存して cRPD ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe pod crpd

YAML を使用した cRPD ポッドの作成

ポッドは、Kubernetesアプリケーションの基本実行ユニットです。これは、作成またはデプロイするKubernetesオブジェクトモデルの中で最も小さく、最もシンプルなユニットです。ポッドは導入の単位を表します。Kubernetes内のアプリケーションの単一インスタンスで、1つのコンテナまたは緊密に結合され、リソースを共有する少数のコンテナで構成される場合があります。Docker は、Kubernetes ポッドで使用される最も一般的なコンテナ ランタイムです。

直接ポッドを作成することも、Kubernetesのコントローラを使用して間接的に作成することもできます。コントローラーは、複数のポッドを作成および管理できます。コントローラは、指定したポッドテンプレートを使用してポッドを作成します。ポッドテンプレートは、レプリケーションコントローラ、ジョブ、デーモンセットなどの他のオブジェクトに含まれるポッド仕様です。

YAMLファイルを使用してcRPDポッドを作成するには

  1. Kubernetes-master で crpd.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  2. crpd.yaml ファイルを保存して crpd ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe pod crpd

  5. 実行中のコンテナ内でインタラクティブCLIを提供するには、次のコマンドを実行します。

    root@kubernetes-master:~# kubectl exec -it crpd cliここでは crpd という名前のポッドを実行し、コマンドライン モードに接続しています。

  6. ルートを表示するには、次のコマンドを実行します。

    root@crpd:/> show route

各ポッドは、特定のアプリケーションの単一インスタンスを実行するためのものです。アプリケーションを水平方向に拡張する(複数のインスタンスを実行するなど)場合は、インスタンスごとに1つずつ、複数のポッドを使用する必要があります。Kubernetes では、これは通常、レプリケーションと呼ばれます。

ジョブリソースを使用したcRPDポッドの作成

ジョブは、1つ以上のポッドを作成し、指定した数のポッドが正常に終了するまで、ポッドの実行を再試行します。指定した完了回数に達すると、タスクは完了します。ジョブを使用して、複数のポッドを並行して実行することもできます。ジョブを削除すると、作成したポッドがクリーンアップされます。ジョブを停止すると、ジョブが再開されるまで、ジョブのアクティブなポッドが削除されます。crpd_job.yamlファイルを使用してcRPDポッドを作成するには、

  1. 作業ノードで crpd_job.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  2. crpd_job.yaml ファイルを保存して crpd ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd_job.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe job/crpdjob

DaemonSetを使用したcRPDポッドの作成

DaemonSetにより、すべての(または一部の)ノードがポッドのコピーを実行します。ノードがクラスタに追加されるにつれて、ポッドはクラスターに追加されます。ノードがクラスターから削除されると、それらのポッドはガベージ コレクションされます。DaemonSetを削除すると、作成したポッドがクリーンアップされます。

crpd_daemonset.yamlファイルを使用してcRPDポッドを作成する

  1. 作業ノードで crpd_daemonset.yaml ファイルを作成し、次のテキスト コンテンツを追加します
  2. da1.yaml ファイルを保存して crpd ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd_daemonset.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe pod crpd

    root@kubernetes-master:~# kubectl describe pod crpd-5fc4fd79df-xr8f5

各ポッドは、特定のアプリケーションの単一インスタンスを実行するためのものです。アプリケーションを水平方向に拡張する(複数のインスタンスを実行するなど)場合は、インスタンスごとに1つずつ、複数のポッドを使用する必要があります。Kubernetes では、これは通常、レプリケーションと呼ばれます。

cRPDのスケーリング

コマンドの パラメータを使用して、需要に基づいてcRPDの –replicas 複数のインスタンスを kubectl run 作成できます。配置は、ReplicaSetsを所有および管理できるオブジェクトです。

スケーリングする前に、1つのポッドを既存にする必要があります。

スケールアップするには、次の手順にいます。

  1. ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd_replicatset.yaml

  2. Kubernetes-master で crpd_replicaSet.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  3. ポッドを表示するには、次のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 以下のコマンドを実行して、導入を4つのレプリカに拡張します。

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=4

  5. 導入を一覧表示するには、次のコマンドを実行します。

    root@kubernetes-master:~# kubectl get deployments

  6. 次のコマンドを実行して、変更されたポッド数を確認します。

    root@kubernetes-master:~# kubectl get pods -o wide

  7. 次のコマンドを実行して、ポッドの詳細を確認します。

    root@kubernetes-master:~# kubectl describe pods

スケール ダウンするには、次の手順にいます。

  1. 次のコマンドを実行して、サービスを2つのレプリカにスケールダウンします。

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2

  2. 導入を一覧表示するには、次のコマンドを実行します。

    root@kubernetes-master:~# kubectl get deployments

  3. 次のコマンドを実行して、ポッド数を示します。2つのポッドが終了したことを確認できます。

    root@kubernetes-master:~# kubectl get pods -o wide

cRPD導入のローリングアップデート

ポッドインスタンスを新しいバージョンで更新できます。ローリングアップデートでは、ポッドインスタンスを新しいインスタンスで段階的に更新することで、ダウンタイムを発生さけずに導入の更新を行うことができます。新しいポッドは、利用可能なリソースを持つノードでスケジュールされます。ロールバックのアップデートは、ダウンタイムのない継続的な統合と継続的なアプリケーション配信により、ある環境から別の環境へのアプリケーションを促進します。Kubernetesでは、アップデートはバージョン管理され、導入の更新はすべて以前の安定したバージョンに戻すことができます。

cRPD導入を新しいイメージで更新し、更新後に設定を保持するには:

  1. cRPDポッドを作成します。

    root@crpd-01:~# kubectl kubectl create -f crpd_deploy.yaml

  2. Kubernetes-master で crpd_deploy.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  3. 導入を一覧表示するには、次のコマンドを実行します。

    root@kubernetes-master:~# kubectl get deployments

  4. 次のコマンドを実行して、実行中のポッドを示します。

    root@kubernetes-master:~# kubectl get pods

    root@kubernetes-master:~# kubectl get pods -o wide

  5. 次のコマンドを実行して、cRPDの現在のイメージバージョンを表示します。

    root@kubernetes-master:~# kubectl exec -it crpd-deploy4-674b4fcfb5-8xc5d -- cli

  6. 現在のイメージ バージョンを表示するには、次のコマンドを実行します。

    root@crpd-deploy4-674b4fcfb5-8xc5d> show version

  7. アプリケーションのイメージを新しいバージョンに更新するには、次のコマンドを実行します。

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl edit deployment/crpd-deploy4

  8. 次のコマンドを実行して、イメージが更新されたかどうかを確認します。

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl rollout status deployment/crpd-deploy4

  9. ポッドを表示するには、次のコマンドを実行します。

    root@crpd-deploy4-674b4fcfb5-8xc5d> kubectl get pods

  10. 次のコマンドを実行して、cRPDのイメージバージョンを表示します。

    root@kubernetes-master:~$ sudo kubectl exec -it crpd-deploy4-6ff476994d-8z2kr -- bash

  11. 現在のイメージ バージョンを表示するには、次のコマンドを実行します。

    root@crpd-deploy4-6ff476994d-8z2kr> show version

割り当てられたリソースを使用したcRPDポッドの導入

ポッドは、コンテナのネットワーキングとストレージという2種類の共有リソースを提供します。ポッド内のコンテナがポッド外のエンティティと通信する場合、共有ネットワークリソース(ポートなど)の使用方法を調整する必要があります。ポッド内では、コンテナはIPアドレスとポートを使用して localhost通信します。

ポッド内のコンテナは、システムホスト名をPodに設定された name のと同じとして表示します。

ポッド内の任意のコンテナは、コンテナ仕様のフラグを privileged 使用して、特権モードを有効にすることができます。これは、ネットワーク スタックの操作やハードウェア デバイスへのアクセスなど、オペレーティング システム管理機能を使用するコンテナに便利です。特権コンテナー内のプロセスは、コンテナーの外部のプロセスで使用可能なほとんど同じ権限を取得します。

リソースを含むポッド導入を表示するには、以下の手順にしたがっています。

  1. Kubernetes-master で crpd_res.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  2. crpd_res.yaml ファイルを保存して crpd ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd_res.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe pod crpres

マウントボリュームを使用したcRPDポッドの導入

emptyDir 、K8sでサポートされている複数のタイプのボリュームの中の1つであり、ポッドがノードに割り当てられたときに最初に作成され、そのノードでPodが実行されている限り存在します。名前の通り emptyDir 、ボリュームは最初は空です。ポッド内のすべてのコンテナは、同じファイルをボリューム内で emptyDir 読み書きできますが、そのボリュームは各コンテナ内の同じパスまたは異なるパスにマウントできます。ポッドが何らかの理由でノードから削除されると、 内 emptyDir のデータは完全に削除されます。

Kubernetes上のストレージパスをマウントしてcRPDポッドの導入を表示するには、

  1. Kubernetes-master で crpd_volume.yaml ファイルを作成し、次のテキスト コンテンツを追加します。
  2. crpd_volume.yaml ファイルを保存して crpd ポッドを作成します。

    root@kubernetes-master:~# kubectl create -f crpd_volume.yaml

  3. 既存のポッドのリストを表示するには、以下のコマンドを実行します。

    root@kubernetes-master:~# kubectl get pods

  4. 次のコマンドを実行して、そのポッド内にあるコンテナとコンテナの構築に使用されるイメージを表示します。

    root@kubernetes-master:~# kubectl describe pod crpd-volume

  5. 次のコマンドを実行して、cRPDインスタンスを実行します。

    root@kubernetes-master:~# kubectl exec -it crpd-volume bash

  6. パス内のファイルを表示するには、次のコマンドを実行します。

    root@crpd-volume:/# ls

  7. 以下のコマンドを実行して、ストレージ パスに移動します。

    root@crpd-volume:/# cd var/log/crpd-storage/

    root@crpd-volume:/var/log/crpd-storage/#