第19章 GCE の設定
19.1. 概要
OpenShift Container Platform は、Google Compute Engine (GCE) ボリュームをアプリケーションデータの永続ストレージとして使用するなど、GCE インフラストラクチャーにアクセスするように設定することが可能です。これを実行するには、GCE を適切に設定した後に OpenShift Container Platform ホストで追加の設定を行う必要があります。
19.2. パーミッション
OpenShift Container Platform に GCE を設定するには、以下のロールが必要です。
roles/owner |
サービスアカウント、クラウドストレージ、インスタンス、イメージ、テンプレート、Cloud DNS エントリーを作成し、ロードバランサーとヘルスチェックをデプロイします。さらに |
19.3. マスターの設定
GCE は、OpenShift Container Platform のマスターホストに 2 通りの方法で設定できます。
19.3.1. Ansible を使用した GCE についての OpenShift Container Platform マスターの設定
GCE は、通常インストール (Advanced installation) の実行中に openshift_cloudprovider_kind
パラメーターを使って設定することができます。このパラメーターはインベントリーファイルで設定できます。
-
GCE を使用する際は、
openshift_gcp_project
とopenshift_gcp_prefix
の各パラメーターを定義する必要があります。 -
Google Compute Platform を使用してロードバランサーサービスを実行する場合は、ノード (Compute Engine VM インスタンス) に
<openshift_gcp_prefix>ocp
タグを付ける必要があります (ocp
サフィックスを追加する)。たとえば、openshift_gcp_prefix
パラメーターの値がmycluster
に設定される場合、ノードにはmyclusterocp
のタグが付けられる必要があります。ネットワークタグを Compute Engine VM インスタンスに追加する方法についての詳細は、「Adding and Removing Network Tags」を参照してください。
Ansible を使用した GCE の設定例
# Cloud Provider Configuration # openshift_cloudprovider_kind=gce # openshift_gcp_project=<projectid> 1 # openshift_gcp_prefix=<uid> 2 # openshift_gcp_multizone=False 3
Ansible が GCE を設定する際に、以下のファイルがユーザー用に作成されます。
- /etc/origin/cloudprovider/gce.conf
- /etc/origin/master/master-config.yaml
- /etc/origin/node/node-config.yaml
通常インストール (Advanced installation) は、デフォルトでシングルゾーンのサポートを設定します。マルチゾーンのサポートが必要な場合は、「GCE デプロイメントにおけるマルチゾーンサポートの設定」で説明されているように /etc/origin/cloudprovider/gce.conf を編集します。
19.3.2. 手動による GCE についての OpenShift Container Platform マスターの設定
GCE について OpenShift Container Platform マスターを設定するには、以下を実行します。
すべてのマスターでマスター設定ファイル (デフォルトは /etc/origin/master/master-config.yaml) を編集するか、または作成し、
apiServerArguments
とcontrollerArguments
の各セクションの内容を更新します。kubernetesMasterConfig: ... apiServerArguments: cloud-provider: - "gce" cloud-config: - "/etc/origin/cloudprovider/gce.conf" controllerArguments: cloud-provider: - "gce" cloud-config: - "/etc/origin/cloudprovider/gce.conf"
重要コンテナー化インストールをトリガーすると、/etc/origin と /var/lib/origin のディレクトリーのみがマスターとノードのコンテナーにマウントされます。したがって、master-config.yaml は/etc/ ではなく /etc/origin/master になければなりません。
OpenShift Container Platform サービスを起動または再起動します。
# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers
19.4. ノードの設定
GCE について OpenShift Container Platform ノードを設定するには、以下を実行します。
すべてのノードでノード設定ファイル (デフォルトは /etc/origin/node/node-config.yaml) を編集するか、または作成し、
kubeletArguments
セクションの内容を更新します。kubeletArguments: cloud-provider: - "gce" cloud-config: - "/etc/origin/cloudprovider/gce.conf"
現時点では、クラウドプロバイダーの統合を正常に機能させるため、nodeName
は GCE のインスタンス名と一致している必要があります。また、この名前は RFC1123 に準拠している必要もあります。
コンテナー化インストールをトリガーすると、/etc/origin と /var/lib/origin のディレクトリーのみがマスターとノードのコンテナーにマウントされます。したがって、node-config.yaml は/etc/ ではなく /etc/origin/node になければなりません。
すべてのノードで OpenShift Container Platform サービスを起動または再起動します。
# systemctl restart atomic-openshift-node
19.5. GCE デプロイメントにおけるマルチゾーンサポートの設定
GCE を手動で設定した場合、マルチゾーンのサポートはデフォルトでは設定されません。
通常インストール (Advanced installation) ではシングルゾーンのサポートがデフォルトで設定されます。
マルチゾーンのサポートを使用するには、以下を実行します。
- OpenShift Container Platform のマスターとノード両方のすべてのホストで、/etc/origin/cloudprovider/gce.confファイルを編集するか、または作成します。
以下の内容を追加します。
[Global] project-id = <project-id> network-name = <network-name> node-tags = <node-tags> node-instance-prefix = <instance-prefix> multizone = true
シングルゾーンのサポートに戻すには、multizone
値を false
に設定します。
19.6. 設定変更の適用
マスターおよびノードのすべてのホストで OpenShift Container Platform サービスを起動または再起動し、設定の変更を適用します。「OpenShift Container Platform サービスの再起動」を参照してください。
# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers # systemctl restart atomic-openshift-node
クラウドプロバイダーを不使用から使用に切り替えるとエラーメッセージが表示されます。クラウドプロバイダーを追加すると、ノードが hostname を externalID
として使用する (クラウドプロバイダーが使用されていなかった場合のケース) 代わりに、クラウドプロバイダーの instance-id
(クラウドプロバイダーによって指定される) の使用に切り替えるため、ノードの削除が試みられます。この問題を解決するには、以下を実行します。
- CLI にクラスター管理者としてログインします。
既存のノードラベルをチェックし、これらをバックアップします。
$ oc describe node <node_name> | grep -Poz '(?s)Labels.*\n.*(?=Taints)'
ノードを削除します。
$ oc delete node <node_name>
各ノードホストで OpenShift Container Platform サービスを再起動します。
# systemctl restart atomic-openshift-node
- 以前に使用していた各ノードのラベルを再度追加します。