2 前提条件
この章では、Oracle Cloud Native Environmentのインストールで使用されるシステムの前提条件について説明します。 この章では、リポジトリがOracle Cloud Native Environmentパッケージをインストールできるようにする方法についても説明します。
ソフトウェア・パッケージへのアクセスの有効化
この項では、Oracle Cloud Native Environmentソフトウェア・パッケージをインストールするOSのロケーションの設定について説明します。
Oracle Linux 9
Oracle Linux 9のOracle Cloud Native Environmentパッケージは、ol9_olcne19
リポジトリのOracle Linux yumサーバー、またはol9_x86_64_olcne19
チャネルのUnbreakable Linux Network (ULN)で使用できます。 ただし、他のリポジトリおよびチャネルには依存関係が存在し、Oracle Cloud Native Environmentがインストールされている各システムでも依存関係を有効にする必要があります。
注意:
ol9_developer
およびol9_developer_EPEL
yumリポジトリまたはULNチャネルが有効になっていないこと、およびこれらのリポジトリまたはチャネルのソフトウェアが、Kubernetesが実行されているシステムにインストールされていないことを確認します。 このドキュメントの手順に従っていても、これらのリポジトリまたはチャネルが有効になっている場合、またはこれらのチャネルまたはリポジトリのソフトウェアがシステムにインストールされている場合、プラットフォームが不安定になることがあります。
Oracle Linux Yum Serverによるリポジトリの有効化
システム更新にOracle Linux yumサーバーを使用している場合は、必要なyumリポジトリを有効にします。
yumリポジトリを有効にするには:
-
oracle-olcne-release-el9
リリース・パッケージをインストールして、Oracle Cloud Native Environment yumリポジトリ構成をインストールします。sudo dnf install oracle-olcne-release-el9
-
インストールするリリースのリポジトリを設定します。
次のyumリポジトリを有効にします。
-
ol9_olcne19
-
ol9_addons
-
ol9_baseos_latest
-
ol9_appstream
-
ol9_UEKR7
(ホストでUEK R7を実行している場合)
dnf config-manager
ツールを使用して、yumリポジトリを有効にします。 UEK R7を実行しているホストの場合:sudo dnf config-manager --enable ol9_olcne19 ol9_addons ol9_baseos_latest ol9_appstream ol9_UEKR7
RHCKを実行しているホストの場合:
sudo dnf config-manager --enable ol9_olcne19 ol9_addons ol9_baseos_latest ol9_appstream
-
-
以前のOracle Cloud Native Environmentリリースのyumリポジトリを無効にします。
sudo dnf config-manager --disable ol9_olcne18 ol9_olcne17
-
開発者yumリポジトリを無効にします。 無効にする必要がある開発者リポジトリをリストするには、
dnf repolist
コマンドを使用します:sudo dnf repolist --enabled | grep developer
dnf config-manager
ツールを使用して返されたリポジトリを無効にします。 たとえば:sudo dnf config-manager --disable ol9_developer
ULNによるチャネルの有効化
ULNを使用するように登録されている場合は、ULN webインタフェースを使用して、システムを適切なチャネルにサブスクライブします。
ULNチャネルにサブスクライブするには:
-
https://linux.oracle.comにサインインします。
-
「Systems」タブで、登録されたマシンのリストからシステムの名前に対応するリンクをクリックします。
-
「System Details」ページで、「Manage Subscriptions」をクリックします。
-
「システム・サマリー」ページで、使用可能なチャネルのリストから必要な各チャネルを選択し、矢印をクリックしてチャネルをサブスクライブ済チャネルのリストに移動します。
次に示すチャネルにシステムをサブスクライブします。
-
ol9_x86_64_olcne19
-
ol9_x86_64_addons
-
ol9_x86_64_baseos_latest
-
ol9_x86_64_appstream
-
ol9_x86_64_UEKR7
(ホストでUEK R7を実行している場合)
システムが次のチャネルにサブスクライブされていないことを確認します:
-
ol9_x86_64_olcne18
-
ol9_x86_64_olcne17
-
ol9_x86_64_developer
-
Oracle Linux 8
Oracle Linux 8のOracle Cloud Native Environmentパッケージは、ol8_olcne19
リポジトリのOracle Linux yumサーバー、またはol8_x86_64_olcne19
チャネルのUnbreakable Linux Network (ULN)で使用できます。 ただし、他のリポジトリおよびチャネルには依存関係が存在し、Oracle Cloud Native Environmentがインストールされている各システムでも依存関係を有効にする必要があります。
注意:
ol8_developer
またはol8_developer_EPEL
yumリポジトリまたはULNチャネルが有効になっていないこと、およびこれらのリポジトリまたはチャネルのソフトウェアが、Kubernetesが実行されているシステムにインストールされていないことを確認します。 このドキュメントの手順に従っていても、これらのリポジトリまたはチャネルが有効になっている場合、またはこれらのチャネルまたはリポジトリのソフトウェアがシステムにインストールされている場合、プラットフォームが不安定になることがあります。
Oracle Linux Yum Serverによるリポジトリの有効化
システム更新にOracle Linux yumサーバーを使用している場合は、必要なyumリポジトリを有効にします。
yumリポジトリを有効にするには:
-
oracle-olcne-release-el8
リリース・パッケージをインストールして、Oracle Cloud Native Environment yumリポジトリ構成をインストールします。sudo dnf install oracle-olcne-release-el8
-
インストールするリリースのリポジトリを設定します。
次のyumリポジトリを有効にします。
-
ol8_olcne19
-
ol8_addons
-
ol8_baseos_latest
-
ol8_appstream
-
ol8_kvm_appstream
-
ol8_UEKR7
(ホストでUEK R7を実行している場合) -
ol8_UEKR6
(ホストでUEK R6を実行している場合)
dnf config-manager
ツールを使用して、yumリポジトリを有効にします。 UEK R7を実行しているホストの場合:sudo dnf config-manager --enable ol8_olcne19 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream ol8_UEKR7
UEK R6を実行しているホストの場合:
sudo dnf config-manager --enable ol8_olcne19 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream ol8_UEKR6
RHCKを実行しているホストの場合:
sudo dnf config-manager --enable ol8_olcne19 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream
-
-
以前のOracle Cloud Native Environmentリリースのyumリポジトリを無効にします。
sudo dnf config-manager --disable ol8_olcne18 ol8_olcne17 ol8_olcne16 ol8_olcne15 ol8_olcne14 ol8_olcne13 ol8_olcne12
-
開発者yumリポジトリを無効にします。 無効にする必要がある開発者リポジトリをリストするには、
dnf repolist
コマンドを使用します:sudo dnf repolist --enabled | grep developer
dnf config-manager
ツールを使用して返されたリポジトリを無効にします。 たとえば:sudo dnf config-manager --disable ol8_developer
ULNによるチャネルの有効化
ULNを使用するように登録されている場合は、ULN webインタフェースを使用して、システムを適切なチャネルにサブスクライブします。
ULNチャネルにサブスクライブするには:
-
https://linux.oracle.comにサインインします。
-
「Systems」タブで、登録されたマシンのリストからシステムの名前に対応するリンクをクリックします。
-
「System Details」ページで、「Manage Subscriptions」をクリックします。
-
「システム・サマリー」ページで、使用可能なチャネルのリストから必要な各チャネルを選択し、矢印をクリックしてチャネルをサブスクライブ済チャネルのリストに移動します。
次に示すチャネルにシステムをサブスクライブします。
-
ol8_x86_64_olcne19
-
ol8_x86_64_addons
-
ol8_x86_64_baseos_latest
-
ol8_x86_64_appstream
-
ol8_x86_64_kvm_appstream
-
ol8_x86_64_UEKR7
(ホストでUEK R7を実行している場合) -
ol8_x86_64_UEKR6
(ホストでUEK R6を実行している場合)
システムが次のチャネルにサブスクライブされていないことを確認します:
-
ol8_x86_64_developer
-
ol8_x86_64_olcne18
-
ol8_x86_64_olcne17
-
ol8_x86_64_olcne16
-
ol8_x86_64_olcne15
-
ol8_x86_64_olcne14
-
ol8_x86_64_olcne13
-
ol8_x86_64_olcne12
-
Oracle Container Registryへのアクセス
Platform CLIでデプロイしたコンテナ・イメージは、次の場所にあるOracle Container Registryでホストされます。 Oracle Container Registryの詳細は、「Oracle® Linux: Oracle Container Runtime for Dockerユーザー・ガイド」を参照してください。
Oracle Container Registryを使用するデプロイメントの場合は、環境内の各ノードがインターネットに直接アクセスできるようにプロビジョニングされている必要があります。
オプションで、Oracle Container Registryミラーを使用するか、ネットワーク内にプライベート・レジストリ・ミラーを作成できます。
Kubernetesモジュールを作成する場合は、コンテナ・イメージを取得するレジストリを指定する必要があります。 これは、olcnectl module create
コマンドの--container-registry
オプションを使用して設定します。 Oracle Container Registryを使用する場合は、コンテナ・レジストリを次のように設定する必要があります。
container-registry.oracle.com/olcne
Oracle Container RegistryのOracle Cloud Native Environmentコンテナ・イメージをミラー化するプライベート・レジストリを使用する場合は、次のように、コンテナ・レジストリをプライベート・レジストリのドメイン名およびポートに設定します:
myregistry.example.com:5000/olcne
コンテナ・レジストリをインストール時に使用するように設定すると、Kubernetesモジュールの更新およびアップグレード時にイメージを取得するデフォルト・レジストリになります。 --container-registry
オプションを使用して、更新またはアップグレード中に新しいデフォルト値を設定できます。
Oracle Container Registryミラーの使用
Oracle Container Registryには、世界中の多数のミラー・サーバーがあります。 グローバル・リージョンでレジストリ・ミラーを使用すると、コンテナ・イメージのダウンロード・パフォーマンスを改善できます。 Oracle Container RegistryミラーはOracle Cloud Infrastructureでホストされますが、Oracle Cloud Infrastructureの外部からもアクセスできます。 地理的なロケーションに最も近いミラーを使用すると、ダウンロード速度が速くなります。
Oracle Container Registryミラーを使用してイメージを取得するには、次の形式を使用します。
container-registry-region-key.oracle.com/olcne
たとえば、IAD
のリージョン・キーを持つ米国東部(アッシュバーン)リージョンでOracle Container Registryミラーを使用するには、レジストリが(--container-registry
オプションを使用して)次のように設定されます:
container-registry-iad.oracle.com/olcne
Oracle Container Registryミラーの詳細と、あるロケーションにあるミラーのリージョン・キーの検索は、「Oracle Cloud Infrastructureのドキュメント」を参照してください。
プライベート・レジストリの使用
場合によっては、環境内のノードにインターネットへの直接アクセスがプロビジョニングされないことがあります。 このような場合、Oracle Container RegistryでOracle Cloud Native Environmentコンテナ・イメージをミラー化するプライベート・レジストリを使用できます。 このシナリオでは、それぞれのノードがミラー・レジストリ・ホストに直接アクセスできる必要があります。
ネットワーク内の既存のコンテナ・レジストリを使用するか、Oracle Linux 8ホストでPodmanを使用してプライベート・レジストリを作成できます。 既存のプライベート・コンテナ・レジストリを使用する場合は、レジストリを作成する次の手順の最初のステップをスキップしてください。
プライベート・レジストリを作成するには:
-
Oracle Container Registryミラー・サービスに使用するOracle Linux 8ホストを選択します。 ミラー・ホストは、インターネットにアクセスでき、Oracle Container Registryから直接イメージをプルできるか、またはローカルに格納されている正しいイメージ・ファイルにアクセスできる必要があります。 理想的には、ホストはOracle Cloud Native Environment内のノードではなく、環境の一部であるすべてのノードからアクセスできます。
ミラー・ホストで、「Oracle® Linux: Podmanユーザーズ・ガイド」の「ローカル・コンテナ・レジストリ」の設定に関する項の手順に従って、Podmanをインストールし、プライベート・レジストリを設定します。
-
ミラー・ホストで、Oracle Cloud Native Environmentソフトウェア・パッケージへのアクセスを有効にします。 パッケージへのアクセスの有効化の詳細は、「ソフトウェア・パッケージへのアクセスの有効化」を参照してください。
-
olcne-utils
パッケージをインストールして、レジストリ・ミラー化ユーティリティにアクセスできるようにします。sudo dnf install olcne-utils
Oracle Linux 7で実行されているネットワークで既存のコンテナ・レジストリを使用している場合は、
dnf
のかわりにyum
を使用してolcne-utils
をインストールします。 -
必要なオプションを指定して
registry-image-helper.sh
スクリプトを使用して、必要なコンテナ・イメージをOracle Container Registryからプライベート・レジストリにコピーします:registry-image-helper.sh --to host.example.com:5000/olcne
ここで、host.example.com:5000は、プライベート・レジストリが使用可能な解決可能なドメイン名およびポートです。
オプションで、
--from
オプションを使用して、イメージをプルする別のレジストリを指定できます。 たとえば、Oracle Container Registryミラーからイメージを取得するには、次のようにします。registry-image-helper.sh \ --from container-registry-iad.oracle.com/olcne \ --to host.example.com:5000/olcne
スクリプトを実行しているホストがインターネットにアクセスできない場合は、
--from
オプションを--local
オプションに置き換えて、コンテナ・イメージをローカル・ディレクトリから直接ロードできます。 イメージを含むローカル・ディレクトリは、次のいずれかです:-
/usr/local/share/kubeadm/
-
/usr/local/share/olcne/
イメージ・ファイルは、TAR形式でアーカイブされている必要があります。
--local
オプションを指定してスクリプトを実行すると、ディレクトリ内のすべてのTARファイルがプライベート・レジストリにロードされます。--version
オプションは、ミラーするKubernetesのバージョンを指定する場合に使用できます。 指定しない場合は、最新のリリースが使用されます。 プルできるバージョンについては、「リリース・ノート」を参照してください。 -
OSの設定
次の項では、Oracle LinuxシステムにOracle Cloud Native Environmentをインストールおよび構成するために満たす必要がある要件について説明します。
ネットワーク・タイム・サービスの設定
クラスタリング環境として、Oracle Cloud Native Environmentでは、クラスタ内の各Kubernetesコントロール・プレーンおよびワーカー・ノード間でシステム時間が同期されている必要があります。 一般に、これを実現するために、各ノードにネットワーク・タイム・プロトコル(NTP)デーモンをインストールして構成します。 この目的のために、chronydデーモンをインストールして設定することをお薦めします。
Oracle Linux システムでは、chronyd
サービスがデフォルトで有効になり、起動されます。
Oracle Cloud Infrastructureで実行されているシステムは、デフォルトでchronyd
タイム・サービスを使用するように構成されているため、Oracle Cloud Infrastructure環境にインストールする場合は、NTPを追加または構成する必要はありません。
スワップの無効化
Kubernetesコントロール・プレーン・ノードおよびワーカー・ノードで、スワップを無効にする必要があります。 スワップを無効にするには、次を入力します。
sudo swapoff -a
この設定が再起動しても永続されるよう、/etc/fstab
ファイルを編集してスワップ・ディスクを削除するかコメント・アウトします。 たとえば、次のステップのようなコマンドの使用を検討できます:
-
変更する前に
/etc/fstab
ファイルの内容を確認します:sudo cat /etc/fstab
-
/etc/fstab
のバックアップを作成します。sudo cp /etc/fstab /etc/fstab_copy
-
/etc/fstab
ファイルからスワップ・ディスクをコメント・アウトします:sudo sed -i '/\bswap\b/s/^/#/' /etc/fstab
-
変更後に
/etc/fstab
の内容を確認します:sudo cat /etc/fstab
ネットワークの設定
この項では、Oracle Cloud Native Environmentノードのネットワーク要件について説明します。
次の表に、環境内のKubernetesのデプロイメントでサービスによって使用されるネットワーク・ポートを示します。
通信元ノード・タイプ | 通信先ノード・タイプ | ポート | プロトコル | 事由 |
---|---|---|---|---|
ワーカー |
オペレータ |
8091 |
TCP(6) |
Platform API Server |
コントロール・プレーン |
オペレータ |
8091 |
TCP(6) |
Platform API Server |
コントロール・プレーン |
コントロール・プレーン |
2379-2380 |
TCP(6) |
Kubernetes etcd (高可用性クラスタ) |
オペレータ |
コントロール・プレーン |
6443 |
TCP(6) |
Kubernetes APIサーバー |
ワーカー |
コントロール・プレーン |
6443 |
TCP(6) |
Kubernetes APIサーバー |
コントロール・プレーン |
コントロール・プレーン |
6443 |
TCP(6) |
Kubernetes APIサーバー |
コントロール・プレーン |
コントロール・プレーン |
6444 |
TCP(6) |
代替Kubernetes APIサーバー(高可用性クラスタ) |
オペレータ |
コントロール・プレーン |
8090 |
TCP(6) |
Platform Agent |
コントロール・プレーン |
コントロール・プレーン |
10250 10251 10252 10255 |
TCP(6) TCP(6) TCP(6) TCP(6) |
Kubernetes
Kubernetes
Kubernetes
認証なしの読取り専用アクセス用Kubernetes |
コントロール・プレーン |
コントロール・プレーン |
8472 |
UDP(11) |
Flannel |
コントロール・プレーン |
ワーカー |
8472 |
UDP(11) |
Flannel |
ワーカー |
コントロール・プレーン |
8472 |
UDP(11) |
Flannel |
ワーカー |
ワーカー |
8472 |
UDP(11) |
Flannel |
コントロール・プレーン |
コントロール・プレーン |
該当なし |
VRRP(112) |
Kubernetes APIサーバー(高可用性クラスタ)のKeepalived |
オペレータ |
ワーカー |
8090 |
TCP(6) |
Platform Agent |
コントロール・プレーン |
ワーカー |
10250 10255 |
TCP(6) TCP(6) |
Kubernetes
認証なしの読取り専用アクセス用Kubernetes |
次の各項では、各ノードでネットワークを設定して、環境内のノード間の通信を有効にする方法について説明します。
重要:
オペレータおよびKubernetesノードでネットワーク・ポートを開くことに加えて、外部ファイアウォール(ハードウェアまたはソフトウェア・ベース)を使用している場合は、インストールを実行する前に、前の表のポートが外部ファイアウォールで開いていることを確認します。
ファイアウォール・ルールの設定
Oracle Linuxは、デフォルトでfirewalld
をインストールおよび有効化します。 Oracle Cloud Native Environmentは、firewalld
を有効にしてインストールすることも、無効にして別のファイアウォール・ソリューションを使用することもできます。 この項では、firewalld
を有効にするようにファイアウォール・ルールを設定する方法について説明します。
重要:
Calicoでは、firewalld
サービスを無効にする必要があります。 ポッドのKubernetes CNIとしてCalicoをインストールする場合、この項に示すようにネットワーク・ポートを構成する必要はありません。 firewalld
の無効化およびCalicoのインストール方法の詳細は、「Calicoモジュール」を参照してください。
firewalld
を有効にしてインストールする場合、Platform CLIによって、Kubernetesモジュールのデプロイメント中に追加する必要があるルールが通知されます。 また、Platform CLIには、要件を満たすためにファイアウォールの構成を変更するために実行するコマンドも用意されています。
必要なすべてのポートが開いていることを確認します。 Kubernetesデプロイメントに必要なポートは次のとおりです。
-
2379/tcp: Kubernetes
etcd
サーバー・クライアントAPI (高可用性クラスタのコントロール・プレーン・ノード上) -
2380/tcp: Kubernetes
etcd
サーバー・クライアントAPI (高可用性クラスタのコントロール・プレーン・ノード上) -
6443/tcp: Kubernetes APIサーバー(コントロール・プレーン・ノード)
-
8090/tcp: Platform Agent (コントロール・プレーン・ノードおよびワーカー・ノード)
-
8091/tcp: Platform API Server (オペレータ・ノード)
-
8472/udp: Flannelオーバーレイ・ネットワーク、VxLANバックエンド(コントロール・プレーン・ノードおよびワーカー・ノード)
-
10250/tcp: Kubernetes
kubelet
APIサーバー(コントロール・プレーン・ノードおよびワーカー・ノード) -
10251/tcp: Kubernetes
kube-scheduler
(高可用性クラスタのコントロール・プレーン・ノード) -
10252/tcp: Kubernetes
kube-controller-manager
(高可用性クラスタのコントロール・プレーン・ノード) -
10255/tcp: Kubernetes
kubelet
APIサーバー: 認証なしの読取り専用アクセス用(コントロール・プレーン・ノードおよびワーカー・ノード)
ポートを開き、ファイアウォール・ルールを設定するコマンドが用意されています。
非高可用性クラスタ・ファイアウォール・ルール
単一のコントロール・プレーン・ノードを備えたクラスタでは、ファイアウォールで次のポートを開く必要があります。
オペレータ・ノード
オペレータ・ノードで次を実行します。
sudo firewall-cmd --add-port=8091/tcp --permanent
該当するルールが有効になるようにファイアウォールを再起動します。
sudo systemctl restart firewalld.service
ワーカー・ノード
Kubernetesワーカー・ノードで次を実行します。
sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent sudo firewall-cmd --add-port=8090/tcp --permanent sudo firewall-cmd --add-port=10250/tcp --permanent sudo firewall-cmd --add-port=10255/tcp --permanent sudo firewall-cmd --add-port=8472/udp --permanent
該当するルールが有効になるようにファイアウォールを再起動します。
sudo systemctl restart firewalld.service
コントロール・プレーン・ノード
Kubernetesコントロール・プレーン・ノードで、次のコマンドを実行します。
sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent sudo firewall-cmd --add-port=8090/tcp --permanent sudo firewall-cmd --add-port=10250/tcp --permanent sudo firewall-cmd --add-port=10255/tcp --permanent sudo firewall-cmd --add-port=8472/udp --permanent sudo firewall-cmd --add-port=6443/tcp --permanent
該当するルールが有効になるようにファイアウォールを再起動します。
sudo systemctl restart firewalld.service
高可用性クラスタ・ファイアウォール・ルール
高可用性クラスタの場合は、「非HAクラスタ・ファイアウォール・ルール」の説明に従ってすべてのファイアウォール・ポートを、コントロール・プレーン・ノード上の次の「特別」ポートとともに開きます。
Kubernetesコントロール・プレーン・ノードで、次のコマンドを実行します。
sudo firewall-cmd --add-port=10251/tcp --permanent sudo firewall-cmd --add-port=10252/tcp --permanent sudo firewall-cmd --add-port=2379/tcp --permanent sudo firewall-cmd --add-port=2380/tcp --permanent
該当するルールが有効になるようにファイアウォールを再起動します。
sudo systemctl restart firewalld.service
その他のネットワーク・オプションの設定
この項では、Oracle Cloud Native Environmentデプロイメントに影響する他のネットワーク関連の構成について説明します。 この項による変更は不要な場合がありますが、ネットワークの構成に関連する問題が発生した場合の理解を助けるために示しています。
インターネット・アクセス
Platform CLIでは、コンテナ・レジストリにアクセスできるかどうかをチェックし、必要なコンテナ・イメージを取り出します。 コンテナ・イメージのローカル・レジストリ・ミラーを設定する予定がないかぎり、Oracle Cloud Native Environmentをインストールする予定のシステムは、インターネットに直接アクセスするか、プロキシを使用するように構成する必要があります。
Oracle Linux 9のnftablesルール
Oracle Linux 9ホストを使用しており、firewalldが有効になっている場合は、Kubernetesノードにnftablesルールを追加する必要があります。
リブート時にルールを永続化する必要がない場合は、次を使用して各Kubernetesノードでルールを設定します:
sudo nft add rule inet firewalld filter_FORWARD_POLICIES_post accept
ホストのリブートでルールを永続化する必要がある場合(推奨)、ルール・ファイルを設定し、有効になっているsystemdサービスを作成します。 各Kubernetesノードで、次を実行します。
-
次のように入力して、ルールを含む
/etc/nftables/forward-policies.nft
という名前のファイルを作成します:sudo sh -c "cat > /etc/nftables/forward-policies.nft << EOF flush chain inet firewalld filter_FORWARD_POLICIES_post table inet firewalld { chain filter_FORWARD_POLICIES_post { accept } } EOF"
-
次のように入力して、systemdサービスを含む
/etc/systemd/system/forward-policies.service
という名前のファイルを作成します:sudo sh -c "cat > /etc/systemd/system/forward-policies.service << EOF [Unit] Description=Idempotent nftables rules for forward-policies PartOf=firewalld.service [Service] ExecStart=/sbin/nft -f /etc/nftables/forward-policies.nft ExecReload=/sbin/nft -f /etc/nftables/forward-policies.nft Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target EOF"
-
ルール・サービスを有効にして再起動します:
sudo systemctl enable forward-policies.service sudo systemctl restart forward-policies.service
Flannelネットワーク
Platform CLIは、FlannelネットワークをKubernetesポッド間の通信に使用されるネットワーク・ファブリックとして構成します。 このオーバーレイ・ネットワークは、ネットワーク接続にVxLANsを使用します。 Flannelの詳細は、「アップストリームのドキュメント」を参照してください。
デフォルトでは、Platform CLIによって、このネットワークをホストするために、10.244.0.0/16
の範囲にネットワークを作成します。 Platform CLIには、インストール中に必要に応じてネットワーク範囲を別の範囲に設定するオプションがあります。 Oracle Cloud Native Environmentデプロイメント内のシステムには、この予約済IP範囲用に構成されたネットワーク・デバイスがない必要があります。
br_netfilterモジュール
Platform CLIは、br_netfilter
モジュールがロードされているかどうかを確認し、使用できない場合は終了します。 このモジュールは、クラスタ全体のKubernetesポッド間の通信に対して、透過的なマスカレードおよび仮想拡張可能LAN (VxLAN)トラフィックを有効にするために必要です。 このモジュールがロードされているかどうかは、次のコマンドを実行して確認します:
sudo lsmod|grep br_netfilter
次のような出力が表示される場合は、br_netfilter
モジュールがロードされます。
br_netfilter 24576 0
bridge 155648 2 br_netfilter,ebtable_broute
カーネル・モジュールは必要に応じてロードされるため、このモジュールを手動でロードする必要はほとんどありません。 モジュールは、次を実行して手動でロードし、永続モジュールとして追加できます:
sudo modprobe br_netfilter
sudo sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'
ブリッジの調整可能なパラメータ
Kubernetesでは、ネットワーク・ブリッジを通過するパケットが、フィルタリングおよびポート転送のために処理されている必要があります。 そうするために、kubeadm
パッケージのインストール時にカーネル・ブリッジ・モジュールの調整可能なパラメータが自動的に設定され、次の行が含まれているsysctlファイルが/etc/sysctl.d/k8s.conf
に作成されます。
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
このファイルを変更するか、自分と同じようなものを作成する場合は、次のコマンドを実行してブリッジのチューニング可能パラメータをロードします:
sudo /sbin/sysctl -p /etc/sysctl.d/k8s.conf
ネットワーク・アドレス変換
クラスタ内の1つ以上のKubernetesワーカー・ノードがNATゲートウェイの背後にある場合、ネットワーク・アドレス変換(NAT)が必要になることがあります。 たとえば、セキュアな会社ネットワークにコントロール・プレーン・ノードを配置し、公的にアクセス可能な非武装地帯(安全性が低い)に他のワーカー・ノードを配置できます。 コントロール・プレーン・ノードは、ワーカー・ノードのNATゲートウェイを介してワーカー・ノードにアクセスします。 または、主に新しいネットワーク上のクラスタで使用するレガシー・ネットワークにワーカー・ノードがある場合があります。 これらの場合、NATゲートウェイは、Kubernetesクラスタにアクセス可能なIPアドレスのリクエストをNATゲートウェイの背後にあるサブネット上のIPアドレスに変換します。
ノート:
NATの背後に配置できるのはワーカー・ノードのみです。 コントロール・プレーン・ノードをNATの背後に置くことはできません。
NATゲートウェイの設定に使用するスイッチまたはネットワーク機器に関係なく、NATゲートウェイの背後にあるノードに対して次のことを構成する必要があります:
-
NATゲートウェイの背後にあるノードのインタフェースには、Kubernetesクラスタからアクセス可能な
/32
サブネット・マスクを使用するパブリックIPアドレスが必要です。/32
サブネットは、KubernetesクラスタからのすべてのトラフィックがこのパブリックIPアドレスを通過するように、サブネットを1つのIPアドレスに制限します。 -
また、ノードのインタフェースには、NATゲートウェイの背後にプライベートIPアドレスを含める必要があります。NATゲートウェイでは、スイッチはNAT表を使用してパブリックIPアドレスを照合します。
たとえば、次のコマンドを使用して、ens5
インタフェースに到達可能なIPアドレスを追加できます。
sudo ip addr add 192.168.64.6/32 dev ens5
その後、次のコマンドを使用して、プライベートIPアドレスを同じインタフェースに追加できます。
sudo ip addr add 192.168.192.2/18 dev ens5
FIPSモードの設定
オプションで、「Oracle Linux 9: FIPSモードのインストールと構成」または「Oracle Linux 8: システム・セキュリティの強化」の説明に従って、Oracle Cloud Native Environmentオペレータ、コントロール・プレーンおよびワーカー・ホストを連邦情報処理標準(FIPS)モードで実行するように構成できます。
Oracle Cloud Native Environmentは、ホストがFIPSモードで実行されている場合、Oracle LinuxのOpenSSLの暗号化バイナリを使用します。
SSHキー・ベース認証の設定
Platform CLI (olcnectl
)インストール・コマンドを実行して、オペレータ・ノードから各KubernetesノードおよびPlatform API Server・ノードへのログインを有効にするユーザーのSSHキー・ベース認証を設定します。
次のステップは、SSHキー・ベースの認証を設定するメソッドの1つを示しています。
-
秘密キーと公開キーのペアを生成します。 オペレータ・ノードで、
olcnectl
コマンドの実行に使用するユーザーとしてssh-keygen
を実行します。 キーのパスフレーズを作成しないでください(パスフレーズの入力を求められたら、<Enter>
を押します)。 たとえば:ssh-keygen
次のような出力が表示されます:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):<Enter> Enter passphrase (empty for no passphrase): <Enter> Enter same passphrase again: <Enter> Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. ...
-
秘密キーと公開キー・ペアのロケーションを確認します。
ssh-keygen
コマンド出力で報告されたロケーションに秘密キーと公開キーのペアが作成されていることを確認します:ls -l /home/user/.ssh/
次のような出力が表示されます:
... -rw-------. 1 user user 2643 Jan 10 14:55 id_rsa -rw-r--r--. 1 user user 600 Jan 10 14:55 id_rsa.pub ...
公開キーは、「
.pub
」拡張子の付いたファイルによって示されます。 -
ターゲット・ノードで公開キーを設定します。 公開キーの内容を、キー・ベースのSSHが設定されているユーザーの各ターゲット・ノードの
$HOME/.ssh/authorized_keys
ファイルに追加します。オペレータ・ノードで、
ssh-copy-id
コマンドを実行します。 構文は次のとおりです。ssh-copy-id user@host
プロンプトが表示されたら、ホストのユーザーのパスワードを入力します。 コマンドが正常に完了すると、公開キーの内容がリモート・ホスト上のユーザーの
$HOME/.ssh/authorized_keys
ファイルのコピーに追加されます。次の例は、コマンド
ssh-copy-id
を使用して、ホスト192.0.2.255
上のユーザーのauthorized_keys
ファイルに公開キーを追加する方法を示しています :ssh-copy-id user@192.0.2.255
-
ユーザーがオペレータ・ノードからSSHキー・ベースのアクセス権を持っていることを確認します。 オペレータ・ノードで、
ssh
を使用して他の各ノードに接続し、パスワードの入力を求められることなくログインが成功することを確認します。たとえば、次のようにオペレータ・ノードで
ssh
コマンドを実行して、キー・ベースのSSHアクセスを確認します:ssh user@192.0.2.255
SSHキー・ベース認証の設定の詳細は、「Oracle Linux: OpenSSHを使用したリモート・システムへの接続」を参照してください。