5 内部Load Balancerを使用したクイックHAインストール
Kubernetesクラスタを含む、ベア・メタル・ホストまたは仮想マシンに高可用性Oracle Cloud Native Environmentをインストールします。 この例では、プラットフォームCLIによってデプロイされた内部コンテナ化されたNGINXおよびKeepalivedロード・バランサを使用します。
これは、ベア・メタル・ホストまたは仮想マシンにOracle Cloud Native Environmentの基本的な高可用性デプロイメントを設定するための最速のメソッドです。 このメソッドは、ノードを設定し、Oracle Cloud Native Environmentプラットフォームをインストールして、Kubernetesクラスタをインストールします。 ロード・バランサは、Platform CLIによってコントロール・プレーン・ノードにデプロイされ、Kubernetesクラスタで構成されます。 ロード・バランサは、NGINXおよびKeepalivedのコンテナ・ベースのデプロイメントです。
セキュリティに関する考慮事項: このインストール例を使用する場合は、次のセキュリティ設定を考慮してください:
-
プライベートCA証明書は、Kubernetesノード間のネットワーク通信を保護するために使用されます。
-
各ノードのホスト・オペレーティング・システムでSELinuxが
permissive
モードに設定されます。 -
Kubernetes
externalIPs
サービスはデプロイされません。
より複雑なデプロイメントを実行し、これらのセキュリティ設定を変更する場合は、「構成ファイルを使用したクイック・インストール」に示すように構成ファイルを使用します。
必要なノード: 高可用性に必要な数のノード。 (「Kubernetes高可用性要件」を参照)。 これらを次に示します。
-
オペレータ・ノード: オペレータ・ノードとして使用する1つのノード。これは、Platform CLI (
olcnectl
)を使用してインストールを実行したり、Platform API Serverをホストしたりするために使用されます。 -
Kubernetesコントロール・プレーン: Kubernetesコントロール・プレーン・ノードとして使用する3つ以上のノード。
-
Kubernetesワーカー: Kubernetesワーカー・ノードとして使用する2つ以上のノード。
始める前に: 前提条件の設定を完了します。 「事前設定」を参照してください。
内部ロード・バランサを使用したクイック・インストールを実行するには:
-
Kubernetesモジュールの作成時に
--virtual-ip
オプションを使用して、プライマリ・コントロール・プレーン・ノードに使用できる仮想IPアドレスを指定します。 このIPアドレスはどのノードでも使用しないでください。また、ロード・バランサによってプライマリ・コントローラとして割り当てられたコントロール・プレーン・ノードに動的に割り当てられます。 プライマリ・ノードに障害が発生した場合、ロード・バランサは仮想IPアドレスを別のコントロール・プレーン・ノードに再割当てし、さらにプライマリ・ノードになります。 -
オペレータ・ノードで、
olcnectl provision
コマンドを使用してインストールを開始します。 必須構文は次のとおりです:olcnectl provision --api-server host --control-plane-nodes hosts --master-nodes hosts (Deprecated) --worker-nodes hosts --environment-name name --name name --virtual-ip IP_address
--api-server
オプションを使用して、プラットフォームAPIサーバーを設定するノードのFQDNを設定します。--control-plane-nodes
オプションを使用して、プラットフォーム・エージェントで設定し、Kubernetesコントロール・プレーン・ノードのロールを割り当てるノードのFQDNを設定します。 これはカンマ区切りリストです。--worker-nodes
オプションを使用して、プラットフォーム・エージェントで設定し、Kubernetesワーカー・ノードのロールを割り当てるノードのFQDNを設定します。 これはカンマ区切りリストです。--environment-name
オプションを使用して、環境を識別するための名前を設定します。--name
オプションを使用して、Kubernetesモジュールを識別するための名前を設定します。仮想IPアドレスを設定するには、
--virtual-ip
オプションを使用します。SSHログイン資格証明、プロキシ・サーバー情報、
--yes
オプションを使用してプロンプトを自動的に受け入れるオプションなど、必要なコマンド・オプションが他にもいくつかあります。olcnectl provision
コマンドの構文オプションの詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。たとえば:
olcnectl provision \ --api-server operator.example.com \ --control-plane-nodes control1.example.com,control2.example.com,control3.example.com \ --worker-nodes worker1.example.com,worker2.example.com,worker3.example.com \ --environment-name myenvironment \ --name mycluster \ --virtual-ip 192.0.2.100
-
各ノードで実行するステップのリストが表示され、続行するためのプロンプトが表示されます。 たとえば、コントロール・プレーン・ノードでは、変更は次のようになります:
? Apply control-plane configuration on control1.example.com: * Install oracle-olcne-release ... * Install and enable olcne-agent Proceed? yes/no(default) yes
yes
と入力して続行します。 ノードが設定されます。各ノードの変更に関する情報が表示されます。 各ノードの設定ステップを確認する必要があります。
ヒント:
各ノードでの変更を受け入れないようにするには、
olcnectl provision
コマンドで--yes
コマンド・オプションを使用します。 -
ノードはOracle Cloud Native Environmentプラットフォームで設定され、KubernetesモジュールがインストールされてKubernetesクラスタが設定されます。 次の構文を使用して環境に関する情報を表示できます:
olcnectl module instances --api-server host_name:8091 --environment-name name
ヒント:
将来の
olcnectl
コマンドで--api-server
オプションを入力する必要がないようにするには、--update-config
オプションを追加します。たとえば:
olcnectl module instances \ --api-server operator.example.com:8091 \ --environment-name myenvironment \ --update-config
出力は次のようになります:
INFO[...] Global flag configuration for myenvironment has been written to the local Platform config and you don't need to specify them for any future calls INSTANCE MODULE STATE control1.example.com:8090 node installed ... mycluster kubernetes installed
デプロイメントの詳細を表示するには、
olcnectl module report
コマンドを使用します。 たとえば:olcnectl module report \ --environment-name myenvironment \ --name mycluster \ --children
-
コントロール・プレーン・ノードでKubernetes CLI (
kubectl
)を設定します。kubectl
コマンドは、クラスタ内の各コントロール・プレーン・ノードにインストールされます。 これを使用してクラスタにアクセスするには、Kubernetes構成ファイルを使用して構成する必要があります。コントロール・プレーン・ノードにログインし、ホーム・ディレクトリ内のターミナルに次のコマンドをコピーして貼り付けます:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
次のような任意の
kubectl
コマンドを使用して、kubectl
コマンドを使用できることを確認します:kubectl get pods --all-namespaces
出力は次のようになります:
NAMESPACE NAME READY STATUS RESTARTS AGE externalip-validat... externalip-validation-... 1/1 Running 0 1h kube-system coredns-... 1/1 Running 0 1h kube-system coredns-... 1/1 Running 0 1h kube-system etcd-... 1/1 Running 2 1h kube-system etcd-... 1/1 Running 2 1h kube-system kube-apiserver-... 1/1 Running 2 1h kube-system kube-apiserver-... 1/1 Running 2 1h kube-system kube-controller-manager-... 1/1 Running 5 (1h ago) 1h kube-system kube-controller-manager-... 1/1 Running 2 1h kube-system kube-flannel-... 1/1 Running 0 1h kube-system kube-flannel-... 1/1 Running 0 1h kube-system kube-flannel-... 1/1 Running 0 1h kube-system kube-proxy-... 1/1 Running 0 1h kube-system kube-proxy-... 1/1 Running 0 1h kube-system kube-proxy-... 1/1 Running 0 1h kube-system kube-scheduler-... 1/1 Running 5 (1h ago) 1h kube-system kube-scheduler-... 1/1 Running 2 1h kubernetes-dashboard kubernetes-dashboard-... 1/1 Running 0 1h
ノート:
デプロイメント後、オペレータ・ノードのローカル・ディレクトリにKubernetes構成ファイルが作成されます。 このファイルには
kubeconfig.environment_name.cluster_name
という名前が付けられ、Kubernetesクラスタに関する情報が含まれます。 このファイルは便宜上作成され、コントロール・プレーン・ノードにkubectl
を設定する必要はありません。複数のクラスタがある場合、このファイルを使用して、より大きいKubernetes構成ファイルに追加できます。 複数のクラスタへのアクセスの構成の詳細は、アップストリーム「Kubernetesドキュメント」を参照してください。
ヒント:
Kubernetesクラスタをスケーリングするノードの追加および削除
Kubernetesクラスタのノードを変更する場合は、更新されたコントロール・プレーンおよびワーカー・ノード・リストを使用してolcnectl provision
コマンドを再度実行: 新しいノード・リストから外したノードはクラスタから削除されますが、指定した新しいノードはクラスタに追加されます。
ノードを追加する場合、新しい証明書が自動的に生成され、新しいノードにインストールされます。Oracle Cloud Native Environmentソフトウェアがインストールされ、ノードがKubernetesクラスタに追加されます。 ただし、必要な「事前設定」を使用してすべての新しいノードが設定されていること、および外部ロード・バランサを使用している場合、新しいコントロール・プレーン・ノードがロード・バランサに追加されていることを確認する必要があります。