共用方式為


為 Azure Red Hat OpenShift (ARO) 叢集設定自訂 DNS 解析器

本文提供必要的詳細資料,可供設定 Azure Red Hat OpenShift 叢集 (ARO) 以使用自訂 DNS 伺服器。 基本 ARO 部署的叢集需求也包含在內。

開始之前

本文假設您正在建立新的叢集,或已套用最新更新的現有叢集。 如果需要 ARO 叢集,請參閱公用叢集的 ARO 快速入門,或私人叢集的私人叢集教學課程。 將叢集設定為使用自訂 DNS 伺服器的步驟,在私人和公用叢集皆相同。

使用自訂 DNS 來確認叢集相容性

藉由驗證 和 99-worker-aro-dns machineconfigs的存在99-master-aro-dns,確認您的叢集符合支援此功能的資格。

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。 如此便能對背景工作角色或主要節點開始逐步進行重新啟動作業。 如需電腦組態運算子 (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

請等候所有主要節點重新啟動,然後返回就緒狀態。