為 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 伺服器組態設定。
- 重新啟動叢集中的節點以進行變更。
設定自訂 DNS 伺服器
也可以透過命令列執行下列步驟,但這份文件會逐步解說如何使用入口網站 Web 介面。
更新虛擬網路中的 DNS 設定
登入 Azure 入口網站並瀏覽至您想要更新的的虛擬網路。 請從虛擬網路設定清單中選取 [DNS 伺服器]。
進入 DNS 設定畫面後,請選取選項按鈕設定中的 [自訂]。 請輸入 DNS 伺服器的 IP 位址。
重要
如果選擇指定自訂 DNS 伺服器,將無法再透過 DNS 解析虛擬網路中的節點名稱。 節點只能透過 IP 位址進行連線。
選取 [儲存]。
注意
如入口網站介面所示,務必將所有虛擬機器重新開機,才能就地進行變更。
您應該會收到更新成功的通知。
正常重新啟動叢集
這些步驟需要具備對叢集有效的 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
請等候所有主要節點重新啟動,然後返回就緒狀態。