第16章 Kuryr SDN の設定
16.1. Kuryr SDN および OpenShift Container Platform
Kuryr SDN の設定機能はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。
Red Hat のテクノロジープレビュー機能のサポートについての詳細は、https://access.redhat.com/support/offerings/techpreview/ を参照してください。
Kuryr (具体的には Kuryr-Kubernetes) は、CNI と OpenStack Neutron を使用して構築した SDN ソリューションです。Kuryr の利点として、幅広い Neutron SDN バックエンドを使用でき、Kubernetes Pod と OpenStack 仮想マシン (VM) の相互接続性が確保できる点が挙げられます。
Kuryr-Kubernetes と OpenShift Container Platform の統合は主に、OpenStack の仮想マシンで実行される OpenShift Container Platform クラスター用に設計されました。Kuryr-Kubernetes コンポーネントは OpenShift Container Platform の openshift-infra
namespace に Pod としてインストールされます。
-
kuryr-controller: 任意のノードにインストールされる単一のサービスインスタンスです。
Deployment
として OpenShift Container Platoform でモデリングされます。 -
kuryr-cni: 各 OpenShift Container Platform ノードで Kuryr を CNI ドライバーとしてインストールし、設定するコンテナーです。
DaemonSet
として OpenShift Container Platoform でモデリングされます。
16.2. インストール
openshift-ansible を実行するシステムは OSP および OCP リポジトリーにサブスクライブしている必要があります。OpenStack 統合ではいくつかの追加パッケージが必要になります。依存関係をインストールするには、以下を実行します。
$ sudo yum install -y ansible openshift-ansible python2-shade python-dns \ python2-heatclient python2-octaviaclient python-openstackclient bind-utils
Kuryr-Kubernetes をネットワークプラグインとしてセットアップするために、Ansible ノードファイルで以下のパラメーターを指定します。
# Enable Kuryr. openshift_use_openshift_sdn=False openshift_use_kuryr=True os_sdn_network_plugin_name=cni # Set userspace so that there are no iptables remains. openshift_node_proxy_mode='userspace' # Keystone URL. kuryr_openstack_auth_url=http://127.0.0.1/identity # OpenStack domain name of user owning Kuryr resources. kuryr_openstack_user_domain_name=default # OpenStack project name of user owning Kuryr resources. kuryr_openstack_user_project_name=admin # OpenStack project id for Kuryr resources. kuryr_openstack_project_id=ec0b31802fd043c08bc15b74d2f9a3d3 # OpenStack username that will own kuryr resources. kuryr_openstack_username=admin # Password for that user. kuryr_openstack_password=password # Default Neutron security groups' IDs for Kubernetes pods kuryr_openstack_pod_sg_id=f74c83a8-a520-421a-930e-21b6cd098c6a,01f85594-9950-4ded-a92c-5ad546a41188 # Default Neutron subnet ID for Kubernetes pods. kuryr_openstack_pod_subnet_id=c85cdee6-0ed1-4d8f-ae61-7afa4674b311 # Default OpenStack project ID for Kubernetes resources. kuryr_openstack_pod_project_id=ec0b31802fd043c08bc15b74d2f9a3d3 # Neutron subnet ID for Kubernetes worker node VMs. kuryr_openstack_worker_nodes_subnet_id=477cfa49-e641-4d31-a7b5-5bc834743f61 # Default Neutron subnet ID for Kubernetes services. kuryr_openstack_service_subnet_id=3b31a106-4084-4db9-bc0c-00b97afe186e
OpenStack 設定についてのドキュメントで説明されているように、OpenStack クラウドプロバイダーを指定する必要もあります。
インストール前に、OpenShift Container Platform ノードが内部名の解決に使用する DNS サーバーを指定する必要もあります。OpenStack はノード名の解決を追加設定なしで提供しません。以下の例では、10.20.30.40
は DNS サーバーの IP アドレスになります。
openshift_openstack_dns_nameservers=[10.20.30.40]
DNS サーバーが nsupdate
(RFC 2136) でリモート更新をサポートする場合、以下の設定を追加すると、Playbook はこれを自動的に設定できます。
openshift_openstack_external_nsupdate_keys={private: {"key_secret": "<nsupdate key>", "key_algorithm": "<nsupdate key algorithm>", "key_name": "<nsupdate key name>", "server": 10.20.30.40}}
最後に、provision_install.yml Playbook を実行して OpenShift Container Platform をインストールします。動的インベントリーファイル (inventory.py) を指定し、作成した Ansible ノードのファイルのパスを指定する必要があります。
$ ansible-playbook --user openshift -i /usr/share/ansible/openshift-ansible/playbooks/openstack/inventory.py -i ansible-nodes.txt /usr/share/ansible/openshift-ansible/playbooks/openstack/openshift-cluster/provision_install.yml
作成したノードでカスタム設定してから OpenShift Container Platform をインストールする場合には、provision.yml および install.yml Playbook を別に実行してください。provision.yml は OpenStack リソース (ノードやネットワークなど) を作成し、install.yml は OpenShift Container Platform をインストールします。
16.3. 検証
OpenShift Container Platform のインストールが完了したら、Kuryr Pod が正常にデプロイされているかどうかを確認できます。
$ oc -n openshift-infra get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE bootstrap-autoapprover-0 1/1 Running 0 3d 10.11.0.7 master-0.openshift.example.com kuryr-cni-ds-66kt2 2/2 Running 0 3d 192.168.99.14 infra-node-0.openshift.example.com kuryr-cni-ds-ggcpz 2/2 Running 0 3d 192.168.99.16 master-0.openshift.example.com kuryr-cni-ds-mhzjt 2/2 Running 0 3d 192.168.99.6 app-node-1.openshift.example.com kuryr-cni-ds-njctb 2/2 Running 0 3d 192.168.99.12 app-node-0.openshift.example.com kuryr-cni-ds-v8hp8 2/2 Running 0 3d 192.168.99.5 infra-node-1.openshift.example.com kuryr-controller-59fc7f478b-qwk4k 1/1 Running 0 3d 192.168.99.5 infra-node-1.openshift.example.com
kuryr-cni Pod は、すべての OpenShift Container Platform ノードで実行する必要があります。単一の kuryr-controller インスタンスはこれらのノードのいずれかで実行する必要があります。