你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure Red Hat OpenShift (ARO) 群集配置自定义域名系统解析程序

本文提供了配置 Azure Red Hat OpenShift 群集 (ARO) 以使用自定义 DNS 服务器的必要详细信息。 其中包含用于基本 ARO 部署的群集要求。

开始之前

本文假设你要创建一个新的群集,或者已有一个应用了最新更新的群集。 如果需要 ARO 群集,请参阅适用于公用群集的 ARO 快速入门,或适用于专用群集的专用群集教程。 配置群集以使用自定义 DNS 服务器的步骤对于专用和公用群集都是相同的。

确认群集与自定义 DNS 的兼容性

通过验证 99-master-aro-dns99-worker-aro-dns machineconfigs 是否存在,确认群集是否能够支持此功能。

oc get machineconfig

如果上述命令的结果包含以下 machineconfigs,则群集能够支持自定义 DNS。

NAME                 GENERATEDBYCONTROLLER                      IGNITIONVERSION   AGE
...
99-master-aro-dns                                               2.2.0             54d
99-worker-aro-dns                                               2.2.0             54d
...

DNS 体系结构概述

当 Azure Red Hat OpenShift 群集中的每个节点都开机并加入网络时,DHCP 会使用 IP 地址和要使用的 DNS 服务器等信息来配置虚拟机。

下面是有关如何获取配置的过程流概述:

DNS

请了解这一重要的取舍选择:如果使用自己的 DNS 服务器而不是虚拟网络中的默认 DNS 服务器,你将失去 DNS 服务器提供的配置。 虚拟机名称将不再通过网络上的 DNS 进行解析。

升级过程概述

为群集配置自定义 DNS 服务器分为两个步骤。

  1. 修改虚拟网络 DNS 服务器配置的设置。
  2. 重启群集中的节点以进行更改。

配置自定义 DNS 服务器

你还可以通过命令行执行以下步骤,但本文档将逐步介绍如何使用门户 web 接口。

更新虚拟网络中的 DNS 配置

登录到 Azure 门户并导航到需要更新的虚拟网络。 从虚拟网络设置列表中选择“DNS 服务器”

选择 DNS

进入 DNS 配置屏幕后,请从单选按钮配置中选择“自定义”。 输入 DNS 服务器的 IP 地址。

重要

如果选择指定自定义 DNS 服务器,你将无法再通过 DNS 解析虚拟网络中的节点名称。 仅可通过 IP 地址访问节点。

指定自定义 DNS 服务器

选择“保存”。

注意

如门户接口中所示,必须重启所有虚拟机才能使更改生效。

你应该会收到更新已成功的通知。

确认 DNS 更改

正常重启群集

这些步骤需要拥有群集的有效 kubeconfig,请参阅此教程了解有关如何获取 kubeconfig 的详细信息。

以下代码片段为主节点和工作器节点创建 noop machineconfig。 这可以为工作器节点或主节点启动滚动重启。 有关 Machine Config Operator (MCO) 的详细信息,请参阅源代码MCO 的 OpenShift 文档

MachineConfig 定义

工作器重启:

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  labels:
    machineconfiguration.openshift.io/role: worker
  name: 25-machineconfig-worker-reboot
spec:
  config:
    ignition:
      version: 2.2.0
    storage:
      files:
      - contents:
          source: data:text/plain;charset=utf-8;base64,cmVzdGFydAo=
        filesystem: root
        mode: 0644
        path: /etc/mco-noop-worker-restart.txt

主服务器重启:

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  labels:
    machineconfiguration.openshift.io/role: master
  name: 25-machineconfig-master-reboot
spec:
  config:
    ignition:
      version: 2.2.0
    storage:
      files:
      - contents:
          source: data:text/plain;charset=utf-8;base64,cmVzdGFydAo=
        filesystem: root
        mode: 0644
        path: /etc/mco-master-noop-restart.txt

重启工作器节点

创建工作器重启文件,此示例调用文件 worker-restarts.yml 并应用该文件。

[user@bastion ~]$ vim worker-restarts.yml
[user@bastion ~]$ oc apply -f worker-restarts.yml
machineconfig.machineconfiguration.openshift.io/25-machineconfig-worker-reboot created

MCO 将移动工作负载,然后逐一重启每个节点。 工作器重新联机后,我们将按照相同步骤重启主节点。 你可以通过查询节点并验证它们是否处于 Ready 状态来检验工作器的状态。

注意

根据群集的工作负载大小,每个节点可能需要几分钟才能重启。

示例工作器节点未完全就绪:

NAME                                  STATUS                     ROLES    AGE     VERSION
dns-docs-tm45t-master-0               Ready                      master   5h40m   v1.19.0+a5a0987
dns-docs-tm45t-master-1               Ready                      master   5h40m   v1.19.0+a5a0987
dns-docs-tm45t-master-2               Ready                      master   5h40m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus1-8t6q8   Ready                      worker   5h35m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus2-ln2kq   Ready,SchedulingDisabled   worker   5h34m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus3-gg75h   Ready                      worker   5h35m   v1.19.0+a5a0987

节点重启时,你将看到它更改为“NotReady”状态:

dns-docs-tm45t-worker-eastus2-ln2kq   NotReady,SchedulingDisabled   worker   5h38m   v1.19.0+a5a0987

完全就绪:

[user@bastion ~]$ oc get nodes
NAME                                  STATUS   ROLES    AGE     VERSION
dns-docs-tm45t-master-0               Ready    master   5h45m   v1.19.0+a5a0987
dns-docs-tm45t-master-1               Ready    master   5h46m   v1.19.0+a5a0987
dns-docs-tm45t-master-2               Ready    master   5h46m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus1-8t6q8   Ready    worker   5h41m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus2-ln2kq   Ready    worker   5h40m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus3-gg75h   Ready    worker   5h41m   v1.19.0+a5a0987

重启主节点

现在,请为主节点重复相同的过程:

[user@bastion ~]$ vim master-restarts.yml
[user@bastion ~]$ oc apply -f master-restarts.yml
machineconfig.machineconfiguration.openshift.io/25-machineconfig-master-reboot created

确认所有节点已返回到 Ready 状态:

[user@bastion ~]$ oc get nodes
NAME                                  STATUS   ROLES    AGE    VERSION
dns-docs-tm45t-master-0               Ready    master   6h8m   v1.19.0+a5a0987
dns-docs-tm45t-master-1               Ready    master   6h8m   v1.19.0+a5a0987
dns-docs-tm45t-master-2               Ready    master   6h8m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus1-8t6q8   Ready    worker   6h3m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus2-ln2kq   Ready    worker   6h2m   v1.19.0+a5a0987
dns-docs-tm45t-worker-eastus3-gg75h   Ready    worker   6h3m   v1.19.0+a5a0987

确认节点上的更改(可选)

若要验证节点上的新 DNS 服务器,我们将使用 oc debug pod。

[user@bastion ~]$ oc debug node/dns-docs-tm45t-worker-eastus2-ln2kq
Starting pod/dns-docs-tm45t-worker-eastus2-ln2kq-debug ...
To use host binaries, run `chroot /host`
chroot Pod IP: 10.0.2.6
If you don't see a command prompt, try pressing enter.
sh-4.4# chroot /host
sh-4.4# uptime
 18:40:16 up 1 min,  0 users,  load average: 0.82, 0.32, 0.12
sh-4.4# cat /etc/resolv.conf.dnsmasq
# Generated by NetworkManager
search reddog.microsoft.com
nameserver 192.168.0.1

修改自定义 DNS 服务器

在已有自定义 DNS 的群集上修改自定义 DNS 的步骤按照相同的过程进行。

修改 DNS

请按照此处概述的步骤更新虚拟网络上的 DNS 配置。

重启节点

我们不会创建 machineconfig,而是要删除第一次创建的 machineconfig。 我们将从工作器节点开始。

oc delete machineconfig 25-machineconfig-worker-reboot

输出:

machineconfig.machineconfiguration.openshift.io "25-machineconfig-worker-reboot" deleted

等待所有工作器节点重启。 这类似于上述的重启工作器节点

现在我们将重启主节点。

oc delete machineconfig 25-machineconfig-master-reboot

输出:

machineconfig.machineconfiguration.openshift.io "25-machineconfig-master-reboot" deleted

等待所有主节点重启并返回到“就绪”状态。