Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

Container-native Virtualization インストール

OpenShift Container Platform 3.11

Container-native Virtualization インストール

概要

CNV のインストール方法

第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 からノードに転送し、仮想マシンに対してコンソールアクセスを開くために使用されます。

手順

  1. 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 インベントリーファイル
注記

ご使用の設定に一致するように変更可能なインベントリーファイルのサンプルについては、本書の「リファレンス」セクションを参照してください。

手順

  1. kubevirt-ansible RPM およびその依存関係をインストールします。

    $ yum install kubevirt-ansible
  2. 管理者ユーザーとして OpenShift Container Platform クラスターにログインします。

    $ oc login -u system:admin
  3. ディレクトリーを /usr/share/ansible/kubevirt-ansible に切り替えます。

    $ cd /usr/share/ansible/kubevirt-ansible
  4. 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
  5. 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

手順

  1. 管理者ユーザーとして OpenShift Container Platform クラスターにログインします。

    $ oc login -u system:admin
  2. ディレクトリーを /usr/share/ansible/kubevirt-ansible に切り替えます。

    $ cd /usr/share/ansible/kubevirt-ansible
  3. Container-native Virtualization をアンインストールします。

    $ ansible-playbook -i <inventory_file> -e @vars/cnv.yml playbooks/kubevirt.yml \
    -e apb_action=deprovision
  4. Container-native Virtualization パッケージを削除します。

    $ yum remove kubevirt-ansible kubevirt-virtctl
  5. Container-native Virtualization リポジトリーを無効にします。

    $ subscription-manager repos --disable=rhel-7-server-cnv-1.4-tech-preview-rpms
  6. アンインストールを確認するには、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'