機械翻訳について

このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。

第2章 Kubernetesクラスタの作成

この章では、Platform CLI (olcnectl)を使用してKubernetesクラスタを作成する方法について説明します。 この章では、Oracle Cloud Native Environmentソフトウェア・パッケージをノードにインストールし、それらがクラスタで使用されるように構成し、Kubernetesモジュールをインストールする環境を作成することを前提としています(スタート・ガイドを参照)。

Kubernetesクラスタを作成する高レベルのステップは次のとおりです。

  • クラスタに関する情報を指定するKubernetesモジュールを作成します。

  • Kubernetesモジュールを検証して、Kubernetesをノードにインストールできることを確認します。

  • Kubernetesモジュールをインストールして、Kubernetesパッケージをノードにインストールし、クラスタを作成します。

olcnectlコマンドは、これらのステップを実行するために使用します。 olcnectlコマンドの構文の詳細は、プラットフォーム・コマンドライン・インタフェースを参照してください。

ヒント

構成ファイルを使用してモジュールを作成することもできます。 構成ファイルは、デプロイする環境およびモジュールに関する情報を含むYAMLファイルです。 構成ファイルを使用して、olcnectlコマンドに指定する必要がある情報が削減されます。 構成ファイルの作成および使用の詳細は、プラットフォーム・コマンドライン・インタフェースを参照してください。

2.1 Kubernetesモジュールの作成

Kubernetesモジュールは、次のクラスタを作成するように設定できます。

  • 外部ロード・バランサを備えた高可用性(HA)クラスタ

  • 内部ロード・バランサを備えたHAクラスタ

  • 単一のコントロール・プレーン・ノードを備えたクラスタ(非高可用性クラスタ)

HAクラスタを作成するには、少なくとも3つのコントロール・プレーン・ノードと2つのワーカー・ノードが必要です。

外部ロード・バランサの設定、またはPlatform CLIによってインストールされた内部ロード・バランサを使用するためのコントロール・プレーン・ノードの準備の詳細は、スタート・ガイドを参照してください。

HAクラスタ内のコントロール・プレーンのノードでは、多数の追加ポートを開く必要があります。 HAクラスタに必要なポートを開く方法は、スタート・ガイドを参照してください。

olcne module createコマンドを使用して、Kubernetesモジュールを作成します。 このコマンドの使用時に必要なすべてのオプションが含まれていない場合は、そのオプションを指定するように求められます。 Kubernetesモジュールで使用可能なオプションの完全なリストは、プラットフォーム・コマンドライン・インタフェースを参照してください。

2.1.1 外部ロード・バランサを使用した高可用性クラスタの作成

この項では、外部ロード・バランサを使用してHAクラスタを作成するために、Kubernetesモジュールを作成する方法について説明します。

次の例では、独自のロード・バランサを使用してHAクラスタを作成します。このロード・バランサは、ホストlb.example.comで使用可能になっていて、ポート6443で実行しているものです。

olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
--container-registry container-registry.oracle.com/olcne \
--load-balancer lb.example.com:6443 \
--master-nodes control1.example.com:8090,control2.example.com:8090,control3.example.com:8090 \
--worker-nodes worker1.example.com:8090,worker2.example.com:8090,worker3.example.com:8090,worker4.example.com:8090 \
--selinux enforcing \
--restrict-service-externalip-ca-cert /etc/olcne/certificates/restrict_external_ip/ca.cert \
--restrict-service-externalip-tls-cert /etc/olcne/certificates/restrict_external_ip/node.cert \
--restrict-service-externalip-tls-key /etc/olcne/certificates/restrict_external_ip/node.key

--environment-nameは、Kubernetesモジュールを作成する環境の名前を設定します。 この例では、myenvironmentに設定します。

--moduleオプションは、作成するモジュールのタイプを設定します。 Kubernetesモジュールを作成するには、これをkubernetesに設定する必要があります。

--nameオプションは、Kubernetesモジュールの識別に使用する名前を設定します。 この例では、myclusterに設定します。

--container-registryオプションでは、Kubernetesイメージを取得するコンテナ・レジストリを指定します。 この例では、Oracle Container Registryを使用しますが、Oracle Container Registryミラー、またはOracle Container RegistryからKubernetesイメージをミラー化してあるローカル・レジストリを使用することもできます。 Oracle Container Registryミラーの使用またはローカル・レジストリの作成の詳細は、スタート・ガイドを参照してください。

ただし、Kubernetesモジュールの更新またはアップグレード中に、新しいデフォルトのコンテナ・レジストリ値を設定できます。

--load-balancerオプションは、外部ロード・バランサのホスト名とポートを設定します。 この例では、lb.example.com:6443に設定します。

--master-nodesオプションには、クラスタに含めるコントロール・プレーン・ノードのホスト名またはIPアドレスのカンマ区切りリストと、Platform Agentを使用できるポート番号が含まれます。 デフォルトのポート番号は8090です。

ノート

単一のコントロール・プレーン・ノードを備えた外部ロード・バランサを使用するクラスタを作成できます。 ただし、HAおよびフェイルオーバー機能は、クラスタ内の少なくとも3つのコントロール・プレーン・ノードに到達するまで使用できません。 コントロール・プレーン・ノードの数を増やすには、クラスタをスケール・アップします。 クラスタのスケール・アップの詳細は、6.1「Kubernetesクラスタのスケール・アップ」を参照してください。

--worker-nodesオプションには、クラスタに含めるワーカー・ノードのホスト名またはIPアドレスのカンマ区切りリストと、Platform Agentを使用できるポート番号が含まれます。 ワーカー・ノードがNATゲートウェイの背後にある場合は、ノードのパブリックIPアドレスを使用します。 NATゲートウェイの背後にあるワーカー・ノードのインタフェースには、Kubernetesクラスタが到達可能な/32サブネット・マスクを使用するパブリックIPアドレスが必要です。 /32サブネットは、KubernetesクラスタからのすべてのトラフィックがこのパブリックIPアドレスを通過するように、サブネットを1つのIPアドレスに制限します(NATの構成の詳細は、スタート・ガイド参照)。 デフォルトのポート番号は8090です。

コントロール・プレーン・ノードおよびワーカー・ノードでSELinuxがenforcingモード(オペレーティング・システムのデフォルトおよび推奨モード)に設定されている場合、Kubernetesモジュールの作成時にも--selinux enforcingオプションを使用する必要があります。

externalip-validation-webhook-service Kubernetesサービスの証明書のロケーションも含める必要があります。 これらの証明書はオペレータ・ノードに配置する必要があります。 --restrict-service-externalip-ca-certオプションは、CA証明書のロケーションを設定します。 --restrict-service-externalip-tls-certにより、ノード証明書のロケーションが設定されます。 --restrict-service-externalip-tls-keyオプションは、ノード・キーのロケーションを設定します。 これらの証明書の設定の詳細は、スタート・ガイドを参照してください。

オプションで、--restrict-service-externalip-cidrsオプションを使用して、Kubernetesサービスがアクセスできる外部IPアドレスを設定できます。 たとえば:

--restrict-service-externalip-cidrs 192.0.2.0/24,198.51.100.0/24

この例では、許可されるIP範囲は192.0.2.0/24および198.51.100.0/24 CIDRブロック内です。

必要に応じて、Kubernetesデータ・プレーン(Kubernetesで実行されているポッドで使用されるインタフェース)に使用するネットワーク・インタフェースを設定できます。 デフォルトでは、Platform Agentで使用されるインタフェース(--master-nodesおよび--worker-nodesオプションで設定)は、Kubernetesコントロール・プレーン・ノードとデータ・プレーンの両方に使用されます。 データ・プレーンに使用する別のネットワーク・インタフェースを指定する場合は、--pod-network-ifaceオプションを指定します。 たとえば、--pod-network-iface ens1です。 これにより、Platform Agentで使用されるネットワーク・インタフェースを使用するコントロール・プレーン・ノードと、別のネットワーク・インタフェース(この例ではens1)を使用するデータ・プレーンが作成されます。

ノート

regex式を--pod-network-ifaceオプションとともに使用することもできます。 たとえば:

--pod-network-iface "ens[1-5]|eth5"

regexを使用してインタフェース名を設定する場合、カーネルによって返される最初に一致するインタフェースが使用されます。

ノードがOracle Cloud Infrastructureにあり、Oracle Cloud Infrastructureを使用して動的にプロビジョニングされたストレージをKubernetesアプリケーションに提供する場合は、次の2つの追加オプションを使用してモジュールを作成する必要があります:

  • --node-labels: これにより、Kubernetesノードにラベルが追加され、ポッドの可用性ドメインが設定されます。 ラベルの形式は次のとおりです:

    failure-domain.beta.kubernetes.io/zone=region-identifier-AD-availability-domain-number

    たとえば:

    --node-labels failure-domain.beta.kubernetes.io/zone=US-ASHBURN-AD-1

  • --node-ocids: Oracle Cloud Identifier (OCID)を使用したKubernetesノード(コントロール・プレーンとワーカー・ノードの両方)のカンマ区切りリスト。 リストの形式は次のとおりです:

    FQDN=OCID,...

    たとえば:

    --node-ocids control1.example.com=ocid1.instance...,worker1.example.com=ocid1.instance...,worker2.example.com=ocid1.instance...

2.1.2 内部ロード・バランサを使用した高可用性クラスタの作成

この項では、Kubernetesモジュールを作成し、コントロール・プレーン・ノードでPlatform CLIによってインストールされた内部ロード・バランサを使用してHAクラスタを作成する方法を示します。

この例では、Platform CLIによってインストールされた内部ロード・バランサを使用してHAクラスタを作成します。

olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
--container-registry container-registry.oracle.com/olcne \
--virtual-ip 192.0.2.100 \
--master-nodes control1.example.com:8090,control2.example.com:8090,control3.example.com:8090 \
--worker-nodes worker1.example.com:8090,worker2.example.com:8090,worker3.example.com:8090,worker4.example.com:8090 \
--selinux enforcing \
--restrict-service-externalip-ca-cert /etc/olcne/certificates/restrict_external_ip/ca.cert \
--restrict-service-externalip-tls-cert /etc/olcne/certificates/restrict_external_ip/node.cert \
--restrict-service-externalip-tls-key /etc/olcne/certificates/restrict_external_ip/node.key

--virtual-ipオプションは、プライマリ・コントロール・プレーン・ノードに使用される仮想IPアドレスを設定します(たとえば、192.0.2.100)。 このIPアドレスは、ネットワーク上で使用可能であり、ネットワーク上のどのホストにも割り当てられていない必要があります。 このIPアドレスは、ロード・バランサによってプライマリ・コントローラとして割り当てられたコントロール・プレーン・ノードに動的に割り当てられます。

コンテナ・レジストリ・ミラーを使用している場合は、--nginx-imageオプションを使用してNGINXイメージの場所も設定する必要があります。 このオプションは、次の形式でレジストリ・ミラーの場所に設定する必要があります。

registry:port/olcne/nginx:version

たとえば:

--nginx-image myregistry.example.com:5000/olcne/nginx:1.17.7

この例で使用されている他のすべてのオプションは、2.1.1「外部ロード・バランサを使用したHAクラスタの作成」に記載されています。

2.1.3 単一のコントロール・プレーン・ノードを使用したクラスタの作成

この項では、単一のコントロール・プレーン・ノードを備えたクラスタを作成するためのKubernetesモジュールを作成する方法を示します。 このタイプのクラスタではロード・バランサは使用されず、必要ありません。

この例では、単一のコントロール・プレーン・ノード備えたクラスタを作成します。

olcnectl module create \
--environment-name myenvironment \
--module kubernetes --name mycluster \
--container-registry container-registry.oracle.com/olcne \
--master-nodes control1.example.com:8090 \
--worker-nodes worker1.example.com:8090,worker2.example.com:8090 \
--selinux enforcing \
--restrict-service-externalip-ca-cert /etc/olcne/certificates/restrict_external_ip/ca.cert \
--restrict-service-externalip-tls-cert /etc/olcne/certificates/restrict_external_ip/node.cert \
--restrict-service-externalip-tls-key /etc/olcne/certificates/restrict_external_ip/node.key

--master-nodesオプションには、1つのノードのみを含める必要があります。

この例で使用されている他のすべてのオプションは、2.1.1「外部ロード・バランサを使用したHAクラスタの作成」に記載されています。

2.2 Kubernetesモジュールの検証

環境にKubernetesモジュールを作成した後は、モジュールをインストールするためにノードが正しく構成されていることを検証する必要があります。

olcnectl module validateコマンドを使用して、ノードが適切に構成されていることを検証します。 たとえば、myenvironment環境内のmyclusterというKubernetesモジュールを検証するには、次のようにします。

olcnectl module validate \
--environment-name myenvironment \
--name mycluster

検証エラーが発生した場合は、出力にノードを修正するために必要なコマンドが示されます。 そのコマンドをスクリプトとして保存する場合は、--generate-scriptsオプションを使用します。 たとえば:

olcnectl module validate \
--environment-name myenvironment \
--name mycluster \
--generate-scripts

スクリプトはモジュール内のノードごとに作成され、ローカル・ディレクトリにhostname:8090.shという名前で保存されます。 このスクリプトを該当するノードにコピーして実行することで、検証エラーを修正できます。

2.3 Kubernetesモジュールのインストール

Kubernetesモジュールを作成して検証した後は、これを使用してKubernetesをノードにインストールし、クラスタを作成します。

olcnectl module installコマンドを使用して、Kubernetesをノードにインストールしてクラスタを作成します。

Kubernetesモジュールのインストールの一環として次のことが実行されます。

  • Kubernetesパッケージがノードにインストールされます。 kubeadmパッケージにより、CRI-OとKata Containersの実行に必要なパッケージがインストールされます。 CRI-Oは、コンテナをランタイム・エンジン(runcまたはkata-runtimeのどちらか)に委託するために必要です。 コンテナ・ランタイムの詳細は、コンテナ・ランタイムを参照してください。

  • crioサービスとkubeletサービスが有効化および起動されます。

  • 内部ロード・バランサをインストールしている場合は、コントロール・プレーン・ノードでolcne-nginxおよびkeepalivedサービスが有効化され、起動されます。

たとえば、myenvironment環境でmyclusterというKubernetesモジュールを使用してクラスタを作成するには、次のコマンドを使用します。

olcnectl module install \
--environment-name myenvironment \
--name mycluster

Kubernetesモジュールを使用してKubernetesがノードにインストールされ、クラスタが起動して健全性が検証されます。

重要

Kubernetesのインストールは、完了までに数分かかることがあります。

2.4 Kubernetesモジュールに関する情報のレポート

Kubernetesモジュールをインストールしたら、Kubernetesモジュールとそのプロパティに関する情報を確認できます。

olcnectl module reportコマンドを使用して、モジュールに関する情報を確認します。

たとえば、次のコマンドを使用して、myenvironmentmyclusterという名前のKubernetesモジュールを確認します:

olcnectl module report \
--environment-name myenvironment \
--name mycluster \
--children

olcnectl module reportコマンドの構文の詳細は、プラットフォーム・コマンドライン・インタフェースを参照してください。