9 Oracle Cloud Infrastructureの構成ファイルを使用したHAのクイック・インストール
Kubernetesクラスタを含むOracle Cloud Native Environmentの基本的なデプロイメントをOracle Cloud Infrastructureにインストールします。 インストールする追加のモジュールを構成ファイルに追加できます。 このトピックの例では、Oracle Cloud Infrastructureで使用可能なすべてのモジュールをインストールします。
重要:
このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。
このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。
これにより、KubernetesクラスタおよびOracle Cloud Infrastructure Cloud Controller Managerモジュールを含むOracle Cloud InfrastructureへのOracle Cloud Native Environmentのデプロイメントが設定されます。
必要なノード: 高可用性に必要な数のノード。 (「Kubernetes高可用性要件」を参照)。 これらを次に示します。
-
オペレータ・ノード: オペレータ・ノードとして使用する1つのノード。これは、Platform CLI (
olcnectl
)を使用してインストールを実行したり、Platform API Serverをホストしたりするために使用されます。 -
Kubernetesコントロール・プレーン: Kubernetesコントロール・プレーン・ノードとして使用する3つ以上のノード。
-
Kubernetesワーカー: Kubernetesワーカー・ノードとして使用する2つ以上のノード。
始める前に: 前提条件の設定を完了します。 「事前設定」を参照してください。
構成ファイルを使用してOracle Cloud InfrastructureにHAをすばやくインストールするには:
- Oracle Cloud Infrastructureロード・バランサを設定します。
- Oracle Cloud Infrastructureユーザー・インタフェースにログインします。
-
ロード・バランサを作成します。
-
重み付けラウンド・ロビンを使用して、バックエンド・セットをロード・バランサに追加します。 ヘルス・チェックをTCPポート6443に設定します。
-
コントロール・プレーン・ノードをバックエンド・セットに追加します。 コントロール・プレーン・ノードのポートをポート6443に設定します。
-
TCPポート6443を使用して、バックエンド・セットのリスナーを作成します。
-
オペレータ・ノードで、デプロイメントのOracle Cloud Native Environment構成ファイルを作成します。 Oracle Cloud Native Environment構成ファイルの作成の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。 この例では、構成ファイルに対してファイル名
myenvironment.yaml
を使用します。KubernetesモジュールおよびOracle Cloud Infrastructure Cloud Controller Managerモジュールをインストールする基本的な構成ファイルの例は、次のとおりです:
environments: - environment-name: myenvironment globals: api-server: operator.example.com:8091 selinux: enforcing modules: - module: kubernetes name: mycluster args: 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 - module: helm name: myhelm args: helm-kubernetes-module: mycluster - module: oci-ccm name: myoci args: oci-ccm-helm-module: myhelm oci-region: us-ashburn-1 oci-tenancy: ocid1.tenancy.oc1..unique_ID oci-compartment: ocid1.compartment.oc1..unique_ID oci-user: ocid1.user.oc1..unique_ID oci-fingerprint: b5:52:... oci-private-key: /home/opc/.oci/oci_api_key.pem oci-vcn: ocid1.vcn.oc1..unique_ID oci-lb-subnet1: ocid1.subnet.oc1..unique_ID
この構成ファイルの例では、デフォルト設定を使用して、3つのコントロール・プレーン・ノード(3つのワーカー・ノード)を持つKubernetesクラスタを作成し、Oracle Cloud Infrastructureですでに設定されている外部ロード・バランサを使用します。 リストされているノードは、自分のホストのノードに変更してください。 また、URLを独自のOracle Cloud Infrastructureロード・バランサのURLに変更する必要があります。 Oracle Cloud Infrastructure Cloud Controller Managerモジュールの設定には多数の値が必要であり、このモジュールに何を提供するかの詳細は、「ストレージ」および「アプリケーション・ロード・バランサ」を参照してください。
ヒント:
プライベートCA証明書は、KubernetesノードとKubernetes
externalIPs
サービス間の通信用に自動的に生成されます。 独自のCA証明書を使用する場合、または構成ファイルにモジュールを追加する場合は、「構成ファイルを使用したクイック・インストール」でこれらのオプションに関する情報を参照してください。 -
オペレータ・ノードで、
--config-file
オプションを指定してolcnectl provision
コマンドを使用してインストールを開始します。 たとえば:olcnectl provision --config-file myenvironment.yaml
SSHログイン資格証明、プロキシ・サーバー情報、
--yes
オプションを使用してプロンプトを自動的に受け入れるオプションなど、必要なコマンド・オプションが他にもいくつかあります。olcnectl provision
コマンドの構文オプションの詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。 -
各ノードで実行するステップのリストが表示され、続行するためのプロンプトが表示されます。 たとえば、コントロール・プレーン・ノードでは、変更は次のようになります:
? 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プラットフォームで設定され、モジュールがインストールされます。 次の構文を使用して環境に関する情報を表示できます:
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ドキュメント」を参照してください。