$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
您可以使用其完全限定域名 (FQDN) 访问连接到辅助网络接口的虚拟机 (VM)。
使用FQDN从集群外部访问虚拟机仅是技术预览功能。技术预览功能不受Red Hat生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关Red Hat技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围。 |
当您在HyperConverged
自定义资源 (CR) 中启用deployKubeSecondaryDNS
功能开关时,集群网络附加组件操作器 (CNAO) 将部署域名服务器 (DNS) 服务器和监控组件。
您已安装OpenShift CLI (oc
)。
您已为集群配置了负载均衡器。
您已使用cluster-admin
权限登录到集群。
通过运行以下命令在默认编辑器中编辑HyperConverged
CR
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
根据以下示例启用DNS服务器和监控组件
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: openshift-cnv
spec:
featureGates:
deployKubeSecondaryDNS: true (1)
# ...
1 | 启用DNS服务器 |
保存文件并退出编辑器。
通过运行以下示例中的oc expose
命令创建负载均衡器服务以在集群外部公开DNS服务器
$ oc expose -n openshift-cnv deployment/secondary-dns --name=dns-lb \
--type=LoadBalancer --port=53 --target-port=5353 --protocol='UDP'
通过运行以下命令检索外部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
再次编辑HyperConverged
CR
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
将您之前检索到的外部IP地址添加到企业DNS服务器记录中的kubeSecondaryDNSNameServerIP
字段中。例如
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地址。 |
保存文件并退出编辑器。
运行以下命令检索集群FQDN
$ oc get dnses.config.openshift.io cluster -o jsonpath='{.spec.baseDomain}'
openshift.example.com
指向DNS服务器。为此,请将kubeSecondaryDNSNameServerIP
值和集群FQDN添加到企业DNS服务器记录中。例如
vm.<FQDN>. IN NS ns.vm.<FQDN>.
ns.vm.<FQDN>. IN A <kubeSecondaryDNSNameServerIP>
您可以使用集群的完全限定域名 (FQDN) 访问连接到辅助网络接口的正在运行的虚拟机 (VM)。
您已在虚拟机上安装了QEMU访客代理。
虚拟机的IP地址是公网IP。
您已配置了辅助网络的DNS服务器。
您已检索到集群的完全限定域名 (FQDN)。
要获取FQDN,请使用以下oc get
命令
$ oc get dnses.config.openshift.io cluster -o json | jq .spec.baseDomain
运行以下命令从虚拟机配置中检索网络接口名称
$ 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 | 记下网络接口的名称。 |
使用ssh
命令连接到虚拟机
$ ssh <user_name>@<interface_name>.<vm_name>.<namespace>.vm.<cluster_fqdn>