Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Kubernetes クラスタの作成

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

この例の手順は情報提供を目的として提供します。クラスターの作成方法には、kubeadm、kOps、kubespray などがあります。

この例では、kubespray と Ansible を使用してクラスターを作成します。Kubespray では Ansible プレイブックを使用しているため、クラスタの作成がかなり簡単になります。手順を簡単に進めるために、別のインストーラマシンを使用してインストールを実行し、kubectlやその他のツールを実行します。

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

メモ:

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

  1. インストーラマシンに新しいOSをインストールし、以下の目的でOSを最小限に設定します。
    • 静的 IP アドレスとマスク(単一クラスターの場合は 172.16.0.10/24 など)とゲートウェイ
    • 1つ以上のDNSサーバーへのアクセス
    • root SSHアクセスを含むSSH接続
    • Ntp
    この例で使用するインストーラマシンは、クラスタネットワークに接続されたUbuntuホストです。
  2. ローカルコンピューターからsshをsudoユーザーとしてインストーラマシンに入ります。
  3. ansible をインストールします。
  4. kubectl をインストールします。この例では、インストーラマシンでkubectlを実行しています。他のマシン(ローカルコンピューターなど)でkubectlを実行する場合は、そのマシンに代わりにkubectlをダウンロードしてインストールしてください。
    • Kubernetes リポジトリを設定して更新します。
    • kubectl をインストールします。
  5. Contrail Analytics をインストールする場合は、Helm 3.0 以降をインストールします。
    • Helm リポジトリを設定して更新します。

    • Helm をインストールします。

  6. インストーラマシンからコントロールプレーンとワーカーノードへのSSHパスワードレスルートアクセスを設定します。これにより、後でプレイブックを実行するときに、これらのノードにansibleがログインできるようになります。
    1. SSHキーを作成します。

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

    2. キーをコントロール プレーンとワーカー ノードのルート ユーザーにコピーします。例えば:
  7. kubespray ディレクトリを複製します。
    例えば:

    これにより、現在の場所に kubespray ディレクトリのクローンが作成されます(この例では ~/contrail )。

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

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

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

  9. ノードローカルDNSを無効にします。
    kubespray/roles/kubespray-defaults/defaults/main.yaml ファイルで、 を設定 enable_nodelocaldns: falseします。
  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設定されます。

    メモ:

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

    メモ:

    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の警告やエラーを安全に無視することができます。致命的なエラーが発生した場合、Ansibleはプレイブックを停止します。

  14. クラスターのセキュア トークンをデフォルトの ~/.kube/config の場所にコピーします。Kubeconfig は、Contrail ツールが動作するためのデフォルトの場所になければなりません。
    inventory.yaml ファイルから安全なトークンの場所を見つけることができます。この例でインベントリファイルを使用する場合、トークンは /tmp/myclusterにあります。
    メモ:

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

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