Container-native Virtualization インストール
Container-native Virtualization インストール
概要
第1章 Container-native Virtualization のインストール
1.1. 製品概要
1.1.1. Container-native Virtualization の導入
Container-native Virtualization は OpenShift Container Platform のアドオンであり、仮想マシンのワークロードを実行し、このワークロードをコンテナーのワークロードと共に管理することを可能にします。仮想マシンは、Containerized Data Importer (CDI) コントローラーを使用してインポートされるディスクイメージから作成することも、OpenShift Container Platform 内でゼロから作成することもできます。
Container-native Virtualization は 2 つの新たなオブジェクトを OpenShift Container Platform に導入します。
- Virtual Machine (仮想マシン): OpenShift Container Platform の仮想マシンです。
- Virtual Machine Instance (仮想マシンインスタンス): 実行される仮想マシンのインスタンスです。
Container-native Virtualization アドオンを使用すると、仮想マシンは Pod で実行され、仮想マシンに標準的な Pod と同じネットワークおよびストレージ機能を持たせることができます。
既存の仮想マシンディスクは永続ボリューム (PV) にインポートされます。この永続ボリューム (PV) は、Persistent Volume Claim (永続ボリューム要求、PVC) を使用して Container-native Virtualization 仮想マシンからアクセスできるようになります。 OpenShift Container Platform では、仮想マシンオブジェクトは、PV に保存される永続データに影響を与えることなく、変更したり、置き換えたりすることができます。
現時点で Container-native Virtualization はテクノロジープレビュー機能です。Container-native Virtualization についての Red Hat サポートの詳細は、Container-native Virtualization - Technology Preview Support Policy を参照してください。
テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、開発プロセスの中でお客様に機能性のテストとフィードバックをしていただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポートについての詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
1.2. 前提条件
Container-native Virtualization には、以下の設定についての考慮点が反映されている既存の OpenShift Container Platform クラスターが必要です。
1.2.1. ノード設定
各種のクラスター設定に関する計画時の考慮点については、OpenShift Container Platform クラスターのインストールガイド を参照してください。
バイナリービルドおよび MiniShift は Container-native Virtualization ではサポートされません。
1.2.2. 受付制御 Webhook
Container-native Virtualization は受付コントローラーを Webhook として実装し、Container-native Virtualization 固有の作成要求が検証用に Webhook に転送されるようにします。Webhook の登録は OpenShift Container Platform クラスターのインストール時に有効にされている必要があります。
受付コントローラー Webhook を登録するには、OpenShift Container Platform のデプロイ時に Ansible インベントリーファイルの [OSEv3:vars]
セクションの下に以下を追加します。
openshift_master_admission_plugin_config={"ValidatingAdmissionWebhook":{"configuration":{"kind": "DefaultAdmissionConfig","apiVersion": "v1","disable": false}},"MutatingAdmissionWebhook":{"configuration":{"kind": "DefaultAdmissionConfig","apiVersion": "v1","disable": false}}}
1.2.3. CRI-O ランタイム
CRI-O は、Container-native Virtualization で使用する必要のあるコンテナーランタイムです。
CRI-O の使用についての詳細は、OpenShift Container Platform 3.11 CRI-O ランタイムのドキュメント を参照してください。
1.2.4. ストレージ
Container-native Virtualization は、ローカルボリューム、ブロックボリューム、および Red Hat OpenShift Container Storage をストレージバックエンドとしてサポートします。
1.2.4.1. ローカルボリューム
ローカルボリュームは、ローカルにマウントされたファイルシステムを表す PV です。詳細は、OpenShift Container Platform クラスターの設定ガイド を参照してください。
1.2.4.2. ブロックボリューム
Container-native Virtualization は、ブロックボリューム PVC の使用をサポートします。ブロックボリュームを使用するには、OpenShift Container Platform クラスターを BlockVolume 機能ゲートを有効にした状態で設定する必要があります。詳細は、OpenShift Container Platform アーキテクチャーガイド を参照してください。
ローカルボリュームとブロックボリュームはどちらも現時点でテクノロジープレビューであるため、OpenShift Container Platform 3.11 でのサポートは制限されています。このサポートの制限については、今後のリリースで変更される可能性があります。
テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、開発プロセスの中でお客様に機能性のテストとフィードバックをしていただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポートについての詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
1.2.4.3. Red Hat OpenShift Container Storage
Red Hat OpenShift Container Storage は、Red Hat Gluster Storage を使用して永続ストレージおよび動的プロビジョニングを提供します。これは OpenShift Container Platform 内でコンテナー化して使用する (コンバージドモード) ことも、独自のノードでコンテナー化せずに使用する (インデペンデントモード) こともできます。
詳細は、OpenShift Container Storage の製品ドキュメント、または OpenShift Container Platform クラスターのインストールガイド を参照してください。
Red Hat OpenShift Container Storage バージョン 3.11.1 以降が必要になります。それよりも前のバージョンの Red Hat OpenShift Container Storage では、Container-native Virtualization に必要なコンテナーランタイムである CRI-O をサポートしません。
1.2.5. メトリクス
メトリクスは必須ではありませんが、Container-native Virtualization リソースについての追加情報を提供するため、メトリクススを OpenShift Container Platform クラスターに追加することが推奨されます。
メトリクスのクラスターへのデプロイについての総合的な情報については、OpenShift Container Platform クラスターのインストールガイド を参照してください。
1.3. Container-native Virtualization のインストール
1.3.1. Container-native Virtualization リポジトリーの有効化
Container-native Virtualization パッケージをインストールするために、マスターの rhel-7-server-cnv-1.4-tech-preview-rpms リポジトリーを有効にする必要があります。
前提条件
- ホストを登録 し、OpenShift Container Platform サブスクリプションをアタッチします。
手順
- リポジトリーを有効にします。
$ subscription-manager repos --enable=rhel-7-server-cnv-1.4-tech-preview-rpms
1.3.2. virtctl クライアントユーティリティーのインストール
virtctl クライアントユーティリティーは、仮想マシンの状態を管理し、ポートを仮想マシン Pod からノードに転送し、仮想マシンに対してコンソールアクセスを開くために使用されます。
手順
kubevirt-virtctl パッケージをインストールします。
$ yum install kubevirt-virtctl
virtctl ユーティリティーは Red Hat Network からのダウンロードにも使用できます。
1.3.3. Container-native Virtualization の OpenShift Container Platform へのインストール
kubevirt-ansible
RPM には、Container-native Virtualization をデプロイするための最新の自動化が含まれます。この手順では、すべての Container-native Virtualization コンポーネントを OpenShift Container Platform クラスターにインストールします。
この手順では、以下のコンポーネントをインストールします。
- Container-native Virtualization コアコンポーネント (KubeVirt)
- Containerized Data Importer (CDI) コントローラー
- Multus、Open vSwitch (OVS)、および SR-IOV コンテナーネットワークインターフェースプラグイン
- 更新された Container-native Virtualization Web コンソール
前提条件
- 実行中の OpenShift Container Platform 3.11 クラスター
- cluster-admin 権限を持つユーザー
-
rhel-7-server-cnv-1.4-tech-preview-rpms
が有効にされていること - Ansible インベントリーファイル
ご使用の設定に一致するように変更可能なインベントリーファイルのサンプルについては、本書の「リファレンス」セクションを参照してください。
手順
kubevirt-ansible
RPM およびその依存関係をインストールします。$ yum install kubevirt-ansible
管理者ユーザーとして OpenShift Container Platform クラスターにログインします。
$ oc login -u system:admin
ディレクトリーを
/usr/share/ansible/kubevirt-ansible
に切り替えます。$ cd /usr/share/ansible/kubevirt-ansible
Container-native Virtualization を起動します。
注記カスタムリポジトリーから Container-native Virtualization をデプロイするには、
-e registry_url=registry.example.com
を以下のansible-playbook
コマンドに追加します。ローカルリポジトリーのタグを設定するには、-e cnv_repo_tag=local-repo-tag-for-cnv
をコマンドに追加します。$ ansible-playbook -i <inventory_file> -e @vars/cnv.yml playbooks/kubevirt.yml \ -e apb_action=provision
-
kubevirt-web-ui.your.app.subdomain.host.com
にある Web コンソールに移動してインストールを確認します。OpenShift Container Platform の認証情報を使用してログインします。
1.4. Container-native Virtualization のアンインストール
1.4.1. Container-native Virtualization のアンインストール
apb_action
パラメーター値を deprovision
に変更する場合、デプロイに使用したのと同じ ansible-playbook
コマンドを使用して Container-native Virtualization をアンインストールできます。
この手順では、以下のコンポーネントをアンインストールします。
- Container-native Virtualization コアコンポーネント (KubeVirt)
- Containerized Data Importer (CDI) コントローラー
- Multus、Open vSwitch (OVS)、および SR-IOV コンテナーネットワークインターフェースプラグイン
- Container-native Virtualization Web コンソール
前提条件
- Container-native Virtualization 1.4
手順
管理者ユーザーとして OpenShift Container Platform クラスターにログインします。
$ oc login -u system:admin
ディレクトリーを
/usr/share/ansible/kubevirt-ansible
に切り替えます。$ cd /usr/share/ansible/kubevirt-ansible
Container-native Virtualization をアンインストールします。
$ ansible-playbook -i <inventory_file> -e @vars/cnv.yml playbooks/kubevirt.yml \ -e apb_action=deprovision
Container-native Virtualization パッケージを削除します。
$ yum remove kubevirt-ansible kubevirt-virtctl
Container-native Virtualization リポジトリーを無効にします。
$ subscription-manager repos --disable=rhel-7-server-cnv-1.4-tech-preview-rpms
アンインストールを確認するには、KubeVirt Pod が残っていないことを確認します。
$ oc get pods --all-namespaces
1.5. 参照資料
1.5.1. OpenShift Container Platform インベントリーファイルのサンプル
このサンプルを使用して、クラスター設定に一致するように独自の Ansible インベントリーファイルを変更する方法を確認します。
このサンプルでは、クラスターにインフラストラクチャーノードでもある単一マスターと、2 つの別個のコンピュートノードがあります。
[OSEv3:children] masters nodes etcd [OSEv3:vars] openshift_deployment_type=openshift-enterprise ansible_ssh_user=root ansible_service_broker_registry_whitelist=['.*-apb$'] ansible_service_broker_local_registry_whitelist=['.*-apb$'] # Enable admission controller webhooks openshift_master_admission_plugin_config={"ValidatingAdmissionWebhook":{"configuration":{"kind": "DefaultAdmissionConfig","apiVersion": "v1","disable": false}},"MutatingAdmissionWebhook":{"configuration":{"kind": "DefaultAdmissionConfig","apiVersion": "v1","disable": false}}} # CRI-O openshift_use_crio=true # Provide your credentials to consume the redhat.io registry oreg_auth_user=$rhnuser oreg_auth_password='$rhnpassword' # Host groups [masters] master.example.com [etcd] master.example.com [nodes] master.example.com openshift_node_group_name='node-config-master-infra-crio' node1.example.com openshift_node_group_name='node-config-compute-crio' node2.example.com openshift_node_group_name='node-config-compute-crio'