8.4. 内部 FQDN を使用した仮想マシンへのアクセス


ヘッドレスサービスを使用すると、安定した完全修飾ドメイン名 (FQDN) 上のデフォルトの内部 Pod ネットワークに接続されている仮想マシン (VM) にアクセスできます。

Kubernetes ヘッドレスサービス は、Pod のセットの表現にクラスター IP アドレスを割り当てないサービス形式です。ヘッドレスサービスは、サービスに単一の仮想 IP アドレスを提供する代わりに、サービスに関連付けられた Pod ごとに DNS レコードを作成します。特定の TCP ポートまたは UDP ポートを公開しなくても、FQDN を通じて仮想マシンを公開できます。

重要

OpenShift Container Platform Web コンソールを使用して VM を作成した場合、VirtualMachine details ページの Overview タブの Network タイルにその内部 FQDN が表示されます。VM への接続の詳細は、内部 FQDN を使用した仮想マシンへの接続 を参照してください。

8.4.1. CLI を使用したプロジェクトでのヘッドレスサービスの作成

namespace にヘッドレスサービスを作成するには、サービス YAML 定義に clusterIP: None パラメーターを追加します。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次の例のように、仮想マシンを公開するための Service マニフェストを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: mysubdomain 1
    spec:
      selector:
        expose: me 2
      clusterIP: None 3
      ports: 4
      - protocol: TCP
        port: 1234
        targetPort: 1234
    1
    サービスの名前。これは、VirtualMachine マニフェストファイルの spec.subdomain 属性と同じである必要があります。
    2
    このサービスセレクターは、VirtualMachine マニフェストファイルの expose:me ラベルと一致する必要があります。
    3
    ヘッドレスサービスを指定します。
    4
    サービスによって公開されるポートのリスト。少なくとも 1 つのポートを定義する必要があります。これはヘッドレスサービスに影響を与えないため、任意の値にすることができます。
  2. サービス マニフェストファイルを保存します。
  3. 以下のコマンドを実行してサービスを作成します。

    $ oc create -f headless_service.yaml

8.4.2. CLI を使用した仮想マシンのヘッドレスサービスへのマッピング

内部の完全修飾ドメイン名 (FQDN) を使用してクラスター内から仮想マシン (VM) に接続するには、まず仮想マシンをヘッドレスサービスにマップする必要があります。仮想マシン設定ファイルに spec.hostname および spec.subdomain パラメーターを設定します。

サブドメインと名前が一致するヘッドレスサービスが存在する場合、<vm.spec.hostname>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local の形式で仮想マシンに対して一意の DNS A レコードが作成されます。

手順

  1. 次のコマンドを実行して、VirtualMachine マニフェストを編集し、サービスセレクターラベルとサブドメインを追加します。

    $ oc edit vm <vm_name>

    VirtualMachine マニフェストファイルの例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-fedora
    spec:
      template:
        metadata:
          labels:
            expose: me 1
        spec:
          hostname: "myvm" 2
          subdomain: "mysubdomain" 3
    # ...

    1
    expose:me ラベルは、以前に作成した Service マニフェストの spec.selector 属性と一致する必要があります。
    2
    この属性が指定されていない場合、結果の DNS A レコードは <vm.metadata.name>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local の形式になります。
    3
    spec.subdomain 属性は Service オブジェクトの metadata.name 値と一致する必要があります。
  2. 変更を保存し、エディターを終了します。
  3. 仮想マシンを再起動して変更を適用します。

8.4.3. 内部 FQDN を使用した仮想マシンへの接続

内部の完全修飾ドメイン名 (FQDN) を使用して仮想マシン (VM) に接続できます。

前提条件

  • virtctl ツールがインストールされている。
  • Web コンソールから仮想マシンの内部 FQDN を特定するか、仮想マシンをヘッドレスサービスにマッピングしている。内部 FQDN の形式は <vm.spec.hostname>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local です。

手順

  1. 次のコマンドを入力して仮想マシンコンソールに接続します。

    $ virtctl console vm-fedora
  2. 要求された FQDN を使用して仮想マシンに接続するには、次のコマンドを実行します。

    $ ping myvm.mysubdomain.<namespace>.svc.cluster.local

    出力例

    PING myvm.mysubdomain.default.svc.cluster.local (10.244.0.57) 56(84) bytes of data.
    64 bytes from myvm.mysubdomain.default.svc.cluster.local (10.244.0.57): icmp_seq=1 ttl=64 time=0.029 ms

    上記の例では、myvm.mysubdomain.default.svc.cluster.local の DNS エントリーは 10.244.0.57 を指しています。これは、現在仮想マシンに割り当てられているクラスター IP アドレスです。

8.4.4. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.