DELL APEX Cloud Platform for Red Hat OpenShift: 클러스터 DNS 설정 변경
요약: OpenShift 클러스터에서 DNS 설정을 업데이트하려면 이 문서를 참조하십시오.
지침
필수 구성 요소
- cluster-admin 역할을 가진 사용자로 클러스터에 액세스해야 합니다.
- Red Hat 고객 포털 계정이 있어야 합니다.
- OCP 버전과 동일한 OC(OpenShift CLI) 툴의 버전입니다.
- OC 툴을 설치하기 위한 랩톱 또는 점프 서버
- Red Hat OpenShift Container Platform 제품 소프트웨어
로 이동합니다.
- 포털 계정으로 로그인합니다.
- OCP 버전에 따라 적절한 OC 버전을 선택합니다.
- 아래로 스크롤하여 클라이언트 운영 체제에 따라 Download Now를 클릭합니다.
- Red Hat OpenShift Container Platform 제품 소프트웨어
- Kubernetes NMState Operator 4.16.0이 설치되어 있어야 합니다.
- Dell APEX Cloud Platform for Red Hat OpenShift의 웹 콘솔을 실행합니다.
- Operator → Installed Operators를 선택하고 연산자 "nmstate"를 검색하여 NMState Operator가 설치되어 있는지 확인합니다.
3. NMState Operator가 설치되어 있지 않고 클러스터가 인터넷에 액세스할 수 있는 경우 다음을 따릅니다. Chapter 8: Configure OperatorHub on an Internet-Connected System 안에 Deployment Guide OperatorHub를 구성합니다. 그런 다음 5단계를 진행합니다.
4. NMState Operator가 설치되어 있지 않고 클러스터가 제한된 네트워크에 있는 경우 다음을 따릅니다. Chapter 8: Configure OperatorHub on a Restricted Network 안에 Deployment Guide kubernetes-nmstate-operator를 준비합니다. CU 대신 kubevirt-hyperconverged OperatorHub에서 NMState 및 Virtualization Operator를 모두 설정하기 위한 운영자 이름입니다. 그런 다음 5단계를 진행합니다.
5. 설치 지침은 OpenShift Knowledgebase 솔루션 'Kubernetes NMState Operator 설치 방법'을 따르십시오.
단계
1. 클러스터에 로그인합니다.
다음 명령을 실행하여 노트북 또는 점프 서버에서 OpenShift CLI(OC) 툴을 사용하여 클러스터에 로그인합니다. 확인 <cluster_admin_username> 가 cluster-admin 역할을 맡고 있으며, 메시지가 표시되면 비밀번호를 입력합니다.
oc login https://api.<cluster_name>.<top_level_domain>:6443 -u=<cluster_admin_username>
2. 클러스터의 현재 NodeNetworkState 오브젝트를 확인합니다.
2.1 다음 명령을 실행하여 클러스터의 현재 NodeNetworkState 개체를 나열합니다.
oc get nns
예시 출력:
mystic@mystic-vm:~$ oc get nns
NAME AGE
c3-esx01.rackg10.local 45h
c3-esx02.rackg10.local 47h
c3-esx03.rackg10.local 47h
c3-esx04.rackg10.local 47h
2.2 다음 명령을 실행하여 NodeNetworkState 개체를 검사하고 노드의 네트워크 구성을 확인합니다. 출력은 'dns-resolver' 아래에 현재 DNS 설정을 표시합니다.
oc get nns <node_hostname> -o yaml
예시 출력:
mystic@mystic-vm:~$ oc get nns c3-esx01.rackg10.local -o yaml
apiVersion: nmstate.io/v1beta1
kind: NodeNetworkState
metadata:
creationTimestamp: "2025-03-25T11:44:15Z"
generation: 1
labels:
nmstate.io/force-nns-refresh: "1742984117342487473"
name: c3-esx01.rackg10.local
ownerReferences:
- apiVersion: v1
kind: Node
name: c3-esx01.rackg10.local
uid: 659cd517-6b59-4599-b3c3-91c5523fc275
resourceVersion: "1328052"
uid: d26ceea7-c1bb-4f18-8394-6b619ef2701d
status:
currentState:
dns-resolver:
config:
search: []
server:
- 20.100.10.8
running:
search: []
server:
- 20.100.10.8
interfaces:
- accept-all-mac-addresses: false
......
3. NNCP(NodeNetworkConfigurationPolicy) 매니페스트 파일을 사용하여 DNS 설정을 업데이트합니다.
3.1 DNS 구성 변경 사항을 포함하는 NodeNetworkConfigurationPolicy를 정의하는 node-network-policy.yml 파일(NNCP 매니페스트)을 만듭니다.
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: modify-dns-servers
spec:
nodeSelector: {} # Apply the policy to all nodes
desiredState:
dns-resolver:
config:
search:
- example.com
- example.org # Replace with your desired search domain(s)
server:
- 8.8.8.8 # Replace with your desired DNS resolver IP address(es
모든 클러스터 노드에 대해 DNS를 '20.100.10.7'로 업데이트하는 매니페스트 파일(node-network-policy.yml)의 예:
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: modify-dns-servers
spec:
nodeSelector: {} # Apply the policy to all nodes
desiredState:
dns-resolver:
config:
search: []
server:
- 20.100.10.7
3.2. 다음 명령을 실행하여 클러스터의 DNS 설정을 업데이트하기 위해 노드 네트워크 정책을 적용합니다.
oc apply -f node-network-policy.yml
예시 출력:
mystic@mystic-vm:~$ oc apply -f node-network-policy.yml
nodenetworkconfigurationpolicy.nmstate.io/modify-dns-servers configured
4. 노드에서 노드 네트워크 정책 업데이트 확인
4.1. 정책이 클러스터에 적용되었는지 확인하려면 정책 및 상태를 나열합니다.
oc get nncp
예시 출력:
mystic@mystic-vm:~$ oc get nncp
NAME STATUS REASON
modify-dns-servers Available SuccessfullyConfigured
4.2. *선택 사항: 정책이 성공적으로 구성되는 데 예상보다 오래 걸리는 경우 다음 명령을 실행하여 특정 정책의 요청된 상태 조건을 검사할 수 있습니다.
oc get nncp <policy_name> -o yaml
예시 출력:
mystic@mystic-vm:~$ oc get nncp modify-dns-servers -o yaml
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"nmstate.io/v1","kind":"NodeNetworkConfigurationPolicy","metadata":{"annotations":{},"name":"modify-dns-servers"},"spec":{"desiredState":{"dns-resolver":{"config":{"search":[],"server":["20.100.10.7"]}}},"nodeSelector":{}}}
nmstate.io/webhook-mutating-timestamp: "1742984115155498338"
creationTimestamp: "2025-03-26T09:25:12Z"
generation: 3
name: modify-dns-servers
resourceVersion: "1397345"
uid: fd23a4a7-476d-44fc-b1b2-eb1c76c1cd99
spec:
desiredState:
dns-resolver:
config:
search: []
server:
- 20.100.10.7
nodeSelector: {}
status:
conditions:
- lastHeartbeatTime: "2025-03-26T10:15:18Z"
lastTransitionTime: "2025-03-26T10:15:18Z"
message: 4/4 nodes successfully configured
reason: SuccessfullyConfigured
status: "True"
type: Available
- lastHeartbeatTime: "2025-03-26T10:15:18Z"
lastTransitionTime: "2025-03-26T10:15:18Z"
reason: SuccessfullyConfigured
status: "False"
type: Degraded
- lastHeartbeatTime: "2025-03-26T10:15:18Z"
lastTransitionTime: "2025-03-26T10:15:18Z"
reason: ConfigurationProgressing
status: "False"
type: Progressing
lastUnavailableNodeCountUpdate: "2025-03-26T09:25:21Z"
4.3. *선택 사항: 정책이 모든 노드에서 성공적으로 구성되는 데 예상보다 오래 걸리는 경우 클러스터의 제정 상태를 나열할 수 있습니다.
oc get nnce
예시 출력:
mystic@mystic-vm:~$ oc get nnce
NAME STATUS STATUS AGE REASON
c3-esx01.rackg10.local.modify-dns-servers Available 22h SuccessfullyConfigured
c3-esx02.rackg10.local.modify-dns-servers Available 22h SuccessfullyConfigured
c3-esx03.rackg10.local.modify-dns-servers Available 22h SuccessfullyConfigured
c3-esx04.rackg10.local.modify-dns-servers Available 22h SuccessfullyConfigured
4.4. *선택 사항: 실패한 구성에 대한 오류 보고를 포함하여 특정 제정의 구성을 보려면 다음을 수행합니다.
oc get nnce <node>.<policy> -o yaml
예시 출력:
mystic@mystic-vm:~$ oc get nnce c3-esx01.rackg10.local.modify-dns-servers -o yaml
apiVersion: nmstate.io/v1beta1
kind: NodeNetworkConfigurationEnactment
metadata:
creationTimestamp: "2025-03-26T09:25:12Z"
generation: 1
labels:
nmstate.io/node: c3-esx01.rackg10.local
nmstate.io/policy: modify-dns-servers
name: c3-esx01.rackg10.local.modify-dns-servers
ownerReferences:
- apiVersion: v1
kind: Node
name: c3-esx01.rackg10.local
uid: 659cd517-6b59-4599-b3c3-91c5523fc275
resourceVersion: "823259"
uid: eae49147-1fbd-46e8-a2b7-0a8bfbec3201
status:
conditions:
- lastHeartbeatTime: "2025-03-26T10:15:17Z"
lastTransitionTime: "2025-03-26T10:15:17Z"
reason: SuccessfullyConfigured
status: "False"
type: Progressing
- lastHeartbeatTime: "2025-03-26T10:15:17Z"
lastTransitionTime: "2025-03-26T10:15:17Z"
reason: SuccessfullyConfigured
status: "False"
type: Failing
- lastHeartbeatTime: "2025-03-26T10:15:17Z"
lastTransitionTime: "2025-03-26T10:15:17Z"
message: successfully reconciled
reason: SuccessfullyConfigured
status: "True"
type: Available
- lastHeartbeatTime: "2025-03-26T10:15:17Z"
lastTransitionTime: "2025-03-26T10:15:15Z"
reason: SuccessfullyConfigured
status: "False"
type: Pending
- lastHeartbeatTime: "2025-03-26T10:15:17Z"
lastTransitionTime: "2025-03-26T10:15:15Z"
reason: SuccessfullyConfigured
status: "False"
type: Aborted
desiredState:
dns-resolver:
config:
search: []
server:
- 20.100.10.7
desiredStateMetaInfo: {}
features:
- static-dns-name-server
- static-dns-search
policyGeneration: 2
추가 정보
관련 Red Hat OCP 문서:
- https://docs.redhat.com/en/documentation/openshift_container_platform/4.16/html/networking/networking-operators#k8s-nmstate-about-the-k8s-nmstate-operator
- https://docs.redhat.com/en/documentation/openshift_container_platform/4.16/html/networking/kubernetes-nmstate#k8s-nmstate-updating-node-network-config