Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Kubernetes クラスタの作成

アップストリームの Kubernetes クラスタを作成するには、この例の手順を使用します。

この例の手順は情報提供を目的として提供します。クラスターを作成する方法は複数あります。この例では kubespray を使用します。

手順を簡単に進めるために、別のインストーラマシンを使用してインストールを実行し、kubectlやその他のツールを実行します。

クラスターの作成の詳細については、公式の Kubernetes ドキュメント(https://kubernetes.io/docs/home/)を参照してください。

メモ:

以下のコマンドラインの例では、ディレクトリパスは表示しません。ディレクトリ構造内にこれらのコマンドを適用するのはお客様に任せておきます。

開始する前に、クラスター ノードに使用する予定のサーバーまたは VM が起動していることを確認してください。

  1. インストーラマシンに新しいOSをインストールし、以下の目的でOSを最小限に設定します。
    • 静的 IP アドレスとマスク(単一クラスターの場合は 172.16.0.10/24 など)とゲートウェイ
    • 1つ以上のDNSサーバーへのアクセス
    • root SSHアクセスを含むSSH接続
    • Ntp
    この例で使用するインストーラマシンは、クラスタネットワークに接続されたUbuntuホストです。
  2. ローカルコンピューターから、SSHをrootユーザーとしてインストーラマシンに入ります。
  3. kubectl をインストールします。この例では、インストーラマシンでkubectlを実行しています。他のマシン(ローカルコンピュータなど)でkubectlを実行する場合は、そのマシンに代わりにkubectlをダウンロードしてインストールしてください。
    1. これにより、kubectl バージョン 1.24.3 がダウンロードされます。
    2. ファイル実行可能ファイルを作成し、パス内のディレクトリ(/usr/local/bin など)に移動します。
  4. 実行中の Python バージョンの Python 仮想環境をインストールします。この例では Python 3.8を実行しています
  5. Contrail Analytics をインストールする場合は、Helm 3.0 以降をインストールします。
    Helmのインストール方法については、 https://helm.sh/docs/intro/install/ を参照してください。
  6. インストーラマシンからコントロールプレーンとワーカーノードへのSSHパスワードレスルートアクセスを設定します。これにより、後でプレイブックを実行するときに、これらのノードにansibleがログインできるようになります。
    1. SSHキーを作成します。

      この例では、SSHキーをデフォルトの場所 ~/.ssh/id_rsa.pubに保存します。

    2. キーをコントロール プレーンとワーカー ノードのルート ユーザーにコピーします。例えば:
  7. kubespray ディレクトリを複製します。この例では リリース2.20のクローン作成をしています
    例えば:
  8. このバージョンの kubespray を実行するために必要なパッケージをインストールします。必要なパッケージは kubespray/requirements.txt に記載されています。Python 仮想環境にこれらのパッケージをインストールします。
    1. 仮想環境を設定します。
      仮想環境は 嫉妬によってプロンプトで示されます。
    2. 仮想環境内に必要なパッケージをインストールします。
    メモ:

    クラスタがセットアップされるまで、この仮想環境で以降の手順を実行します。この仮想環境では、このバージョンの kubespray に対して正しいバージョンの ansible が実行されていることを確認します。

  9. 必要に応じて、ポッドとサービスサブネットを設定します。
    kubespray が使用するデフォルトのサブネットは、 kubespray/roles/kubespray-defaults/defaults/main.yaml ファイルで定義されています。そのファイルで次のパラメータを探し、それに応じて変更します。
    メモ:

    マルチクラスターCN2セットアップを作成する場合、各クラスターに異なるポッドとサービスサブネットを設定する必要があります。これらのサブネットは、マルチクラスター内で一意にする必要があります。

    このドキュメントのマルチクラスターの例に従う場合は、中央クラスタのサブネットをデフォルトのままにし、ワークロードクラスター上のサブネットを以下のように設定します。

  10. クラスターでDPDKを実行している場合は、マルチを設定します。
    DPDK を実行する場合は、Multus が必要です。
    1. マルチマルチを有効にします。
      kubespray/roles/kubespray-defaults/defaults/main.yaml で、multus を有効にします。
    2. DPDK の実行に必要なバージョンである multus バージョンを 0.3.1 に設定します。バージョンは 2 つのファイルで設定します。
      kubespray/roles/network_plugin/multus/defaults/main.ymlで、multusバージョンを設定します。
      kubespray/extra_playbooks/roles/network_plugin/multus/defaults/main.ymlで、multusバージョンを設定します。
  11. 使用するansible用のインベントリファイルを作成します。例えば:

    ファイルで指定したホスト名(k8s-cp0k8s-worker0k8s-worker1)は、 パラメーターが に設定されている場合 override_system_hostname 、ノードで自動的に true設定されます。

    メモ:

    マルチクラスターCN2セットアップを作成する場合、マルチクラスター内の各ノードに異なるノード名を設定する必要があります。ノード名は、マルチクラスター全体で一意である必要があります。

    メモ:

    DPDK を実行している場合は、 を設定します kube_network_plugin_multus: true

    別のコンテナー ランタイムで実行する場合は、上記の値を変更します container_manager

    が に設定されていることを確認 enable_nodelocaldns します false

    コントロール プレーンとワーカー ノードの数が異なる場合は、それに応じてインベントリを調整します。

  12. inventory.yaml ファイルの内容に基づいて、ansible がコントロール プレーンとワーカー ノードに SSH で接続できることを確認します。この例では、inventory.yaml ファイルは ~/contrail ディレクトリにあります。
  13. クラスターを作成するには、kubespray ディレクトリからプレイブックを実行します。ディレクトリ構造内の inventory.yaml を参照するには、以下のコマンドを調整します。
    このステップの完了には、クラスターのサイズに応じて 1 時間以上かかります。
    メモ:

    CNIをまだ設定していないため、ネットワークとCNIの警告やエラーを安全に無視することができます。

  14. 必要に応じて、Python 仮想環境を無効化します。Ansibleの運用は終了しましたので、仮想環境はもう必要ありません。
  15. クラスターのセキュア トークンをデフォルトの ~/.kube/config の場所にコピーします。CN2ツールが動作するためには、kubeconfigがデフォルトの場所にある必要があります。
    inventory.yaml ファイルから安全なトークンの場所を見つけることができます。この例でインベントリファイルを使用する場合、トークンは /tmp/myclusterにあります。
    メモ:

    既存のクラスタのトークンを既に保持しているkuberconfigがある場合は、 ~/.kube/config ファイルを上書きするのではなく、マージする必要があります。

  16. 標準の kubectl コマンドを使用して、クラスタの健全性を確認します。
    1. ノードのステータスを表示します。
      CNIプラグインがないため、ノードの準備が整っていないことがわかります。これは、CN2をまだインストールしていないため、期待されています。
    2. ポッドのステータスを表示します。
      DNSポッドを除き、すべてのポッドのステータスは実行中である必要があります。ネットワークがないため、DNSポッドは表示されません。これがジュニパーの期待通りです。
新しいクラスタが正常にインストールされました。これで、このクラスタにCN2のインストールを進めることができます。