搜索

8.12. 使用集群 FQDN 访问虚拟机

download PDF

您可以使用集群的完全限定域名 (FQDN) 从集群外部访问附加到二级网络接口的虚拟机 (VM)。

重要

使用集群 FQDN 访问虚拟机只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

8.12.1. 为二级网络配置 DNS 服务器

当您在 HyperConverged 自定义资源 (CR) 中启用 deployKubeSecondaryDNS 功能门时,Cluster Network Addons Operator (CNAO) 会部署域名服务器 (DNS) 服务器和监控组件。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已为集群配置负载均衡器。
  • 使用 cluster-admin 权限登录到集群。

流程

  1. 根据以下示例运行 oc expose 命令,创建一个负载均衡器服务来公开集群外的 DNS 服务器:

    $ oc expose -n openshift-cnv deployment/secondary-dns --name=dns-lb \
      --type=LoadBalancer --port=53 --target-port=5353 --protocol='UDP'
  2. 运行以下命令来检索外部 IP 地址:

    $ oc get service -n openshift-cnv

    输出示例

    NAME       TYPE             CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
    dns-lb     LoadBalancer     172.30.27.5    10.46.41.94      53:31829/TCP     5s

  3. 运行以下命令,在默认编辑器中编辑 HyperConverged CR:

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  4. 根据以下示例启用 DNS 服务器和监控组件:

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      featureGates:
        deployKubeSecondaryDNS: true
      kubeSecondaryDNSNameServerIP: "10.46.41.94" 1
    # ...
    1
    指定负载均衡器服务公开的外部 IP 地址。
  5. 保存文件并退出编辑器。
  6. 运行以下命令来检索集群 FQDN:

     $ oc get dnses.config.openshift.io cluster -o jsonpath='{.spec.baseDomain}'

    输出示例

    openshift.example.com

  7. 使用以下方法之一指向 DNS 服务器:

    • kubeSecondaryDNSNameServerIP 值添加到本地机器的 resolv.conf 文件中。

      注意

      编辑 resolv.conf 文件会覆盖现有的 DNS 设置。

    • kubeSecondaryDNSNameServerIP 值和集群 FQDN 添加到企业 DNS 服务器记录中。例如:

      vm.<FQDN>. IN NS ns.vm.<FQDN>.
      ns.vm.<FQDN>. IN A 10.46.41.94

8.12.2. 使用集群 FQDN 连接到二级网络上的虚拟机

您可以使用集群的完全限定域名(FQDN)访问附加到二级网络接口的正在运行的虚拟机(VM)。

先决条件

  • 您在虚拟机上安装了 QEMU 客户机代理。
  • 虚拟机的 IP 地址是公共的。
  • 为二级网络配置了 DNS 服务器。
  • 您获取了集群的完全限定域名(FQDN)。

流程

  1. 运行以下命令,从虚拟机配置检索网络接口名称:

    $ oc get vm -n <namespace> <vm_name> -o yaml

    输出示例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      running: true
      template:
        spec:
          domain:
            devices:
              interfaces:
                - bridge: {}
                  name: example-nic
    # ...
          networks:
          - multus:
              networkName: bridge-conf
            name: example-nic 1

    1
    请注意网络接口的名称。
  2. 使用 ssh 命令连接到虚拟机:

    $ ssh <user_name>@<interface_name>.<vm_name>.<namespace>.vm.<cluster_fqdn>

8.12.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.