Kubernetes NMState
OpenShift Container Platform에서 Kubernetes NMState를 사용하여 노드 네트워크 상태 및 구성 관찰 및 업데이트
초록
1장. 노드 네트워크 상태 및 구성 관찰 및 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
Kubernetes NMState Operator를 설치한 후에는 해당 Operator를 사용하여 클러스터의 노드 네트워크 상태와 네트워크 구성을 관찰하고 업데이트할 수 있습니다.
NMState Operator를 설치하는 방법에 대한 자세한 내용은 Kubernetes NMState Operator를 참조하세요.
OVN-Kubernetes에서 관리하는 Open vSwitch 브리지인 br-ex 브리지를 수정하는 구성은 제공할 수 없습니다. 하지만 사용자 정의 br-ex 브리지를 구성할 수 있습니다.
자세한 내용은 베어 메탈에 설치 관리자 프로비저닝 클러스터 배포 문서 또는 베어 메탈에 사용자 프로비저닝 클러스터 설치 문서에서 "사용자 지정 br-ex 브리지를 포함하는 매니페스트 개체 만들기"를 참조하세요.
1.1. CLI를 사용하여 노드의 네트워크 상태 보기 링크 복사링크가 클립보드에 복사되었습니다!
노드 네트워크 상태는 클러스터의 모든 노드에 대한 네트워크 구성입니다. NodeNetworkState 오브젝트는 클러스터의 모든 노드에 존재합니다. 이 오브젝트는 주기적으로 업데이트되며 해당 노드의 네트워크 상태를 캡처합니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다.
프로세스
클러스터의 모든
NodeNetworkState오브젝트를 나열합니다.oc get nns
$ oc get nnsCopy to Clipboard Copied! Toggle word wrap Toggle overflow NodeNetworkState오브젝트를 검사하여 해당 노드의 네트워크를 확인합니다. 이 예제의 출력은 명확성을 위해 수정되었습니다.oc get nns node01 -o yaml
$ oc get nns node01 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 웹 콘솔에서 노드(NNS) 토폴로지의 네트워크 상태에 대한 그래픽 표현 보기 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 내 노드 네트워크의 구성을 더 쉽게 이해하기 위해 다이어그램 형태로 볼 수 있습니다. NNS 토폴로지 다이어그램은 모든 노드 구성 요소(네트워크 인터페이스 컨트롤러, 브리지, 본드, VLAN), 해당 속성 및 구성, 노드 간 연결을 표시합니다.
클러스터의 토폴로지 보기를 열려면 다음 단계를 따르세요.
OpenShift Container Platform 웹 콘솔의 관리자 보기에서 네트워킹 → 노드 네트워크 구성 으로 이동합니다.
NNS 토폴로지 다이어그램이 열립니다. 각 구성 요소 그룹은 단일 노드를 나타냅니다.
- 노드의 구성과 속성을 표시하려면 노드 테두리 안쪽을 클릭합니다.
- 특정 구성 요소(예: 인터페이스 또는 브리지)의 기능이나 YAML 파일을 표시하려면 해당 구성 요소의 아이콘을 클릭합니다.
- 활성 구성 요소의 아이콘은 녹색 테두리를 가지고 있고, 연결이 끊긴 구성 요소의 아이콘은 빨간색 테두리를 가지고 있습니다.
1.3. NodeNetworkState 리소스 목록 보기 링크 복사링크가 클립보드에 복사되었습니다!
관리자는 OpenShift Container Platform 웹 콘솔을 사용하여 NodeNetworkState 리소스 및 네트워크 인터페이스 목록을 보고 네트워크 세부 정보에 액세스할 수 있습니다.
프로세스
- 네트워킹 → 노드 네트워크 구성 으로 이동합니다.
목록 아이콘을 클릭하세요.
이제
NodeNetworkState리소스 목록과 노드에 생성된 해당 인터페이스를 볼 수 있습니다.-
인터페이스 상태 , 인터페이스 유형 , IP를 기준으로 필터를 사용하거나, 이름 이나 레이블 을 기준으로 검색 창을 사용하여 표시되는
NodeNetworkState리소스를 좁힐 수 있습니다. -
NodeNetworkState리소스에 대한 자세한 정보에 액세스하려면 이름 열에 나열된NodeNetworkState리소스 이름을 클릭합니다. -
NodeNetworkState리소스의 네트워크 세부 정보 섹션을 확장하여 보려면 큼( > ) 기호를 클릭하세요. 또는 네트워크 인터페이스 열에서 각 인터페이스 유형을 클릭하여 네트워크 세부 정보를 볼 수 있습니다.
-
인터페이스 상태 , 인터페이스 유형 , IP를 기준으로 필터를 사용하거나, 이름 이나 레이블 을 기준으로 검색 창을 사용하여 표시되는
1.4. NodeNetworkConfigurationPolicy 매니페스트 파일 링크 복사링크가 클립보드에 복사되었습니다!
NNCP( NodeNetworkConfigurationPolicy ) 매니페스트 파일은 Kubernetes NMState Operator가 OpenShift Container Platform 클러스터에 있는 노드에 대한 네트워킹을 구성하는 데 사용하는 정책을 정의합니다.
노드에 여러 NNCP CR을 적용하려면 정책 이름의 영숫자 정렬을 기준으로 논리적 순서로 NNCP를 만들어야 합니다. Kubernetes NMState Operator는 새로 생성된 NNCP CR을 지속적으로 확인하여 Operator가 노드에 CR을 즉시 적용할 수 있도록 합니다. 다음의 논리적 순서 문제 예를 생각해 보세요.
-
eth1.1000과 같은 VLAN 포트에서 수신하는 브리지 인터페이스를 정의하기 위해 NNCP 1을 생성합니다. -
VLAN 인터페이스를 정의하기 위해 NNCP 2를 생성하고 이 인터페이스에 대한 포트(예:
eth1.1000)를 지정합니다. - NNCP 2를 노드에 적용하기 전에 NNCP 1을 적용합니다.
포트 eth1.1000이 없기 때문에 노드에 노드 연결 문제가 발생합니다. 결과적으로 클러스터가 실패합니다.
노드에 노드 네트워크 정책을 적용하면 Kubernetes NMState Operator가 노드 네트워크 정책 세부 정보에 따라 노드에 대한 네트워킹 구성을 구성합니다.
다음 인터페이스 이름 목록은 예약되어 있으므로 NMstate 구성과 함께 사용할 수 없습니다.
-
br-ext -
br-int -
br-로컬 -
br-nexthop -
br0 -
ext-vxlan -
ext -
genev_sys_* -
int -
k8s-* -
ovn-k8s-* -
patch-br-* -
tun0 -
vxlan_sys_*
OpenShift CLI( oc ) 또는 OpenShift Container Platform 웹 콘솔을 사용하여 NNCP를 생성할 수 있습니다. 설치 후 작업으로 NNCP를 만들거나 기존 NNCP를 편집할 수 있습니다.
NNCP를 만들기 전에 "다양한 인터페이스에 대한 정책 구성 예시" 문서를 읽어보세요.
NNCP를 삭제하려면 oc delete nncp 명령을 사용하여 이 작업을 완료할 수 있습니다. 하지만 이 명령은 브리지 인터페이스와 같은 객체를 삭제하지 않습니다.
노드에 인터페이스를 추가한 노드 네트워크 정책을 삭제해도 노드의 정책 구성은 변경되지 않습니다. 마찬가지로, 인터페이스를 제거해도 정책은 삭제되지 않습니다. Kubernetes NMState Operator가 Pod 또는 노드가 다시 시작될 때마다 제거된 인터페이스를 다시 추가하기 때문입니다.
NNCP, 노드 네트워크 정책 및 모든 인터페이스를 효과적으로 삭제하려면 일반적으로 다음 작업이 필요합니다.
-
NNCP를 편집하여 파일에서 인터페이스 세부 정보를 제거합니다. 파일에서
name,state및type매개변수를 제거하지 않도록 주의하세요. -
NNCP의
interfaces.state섹션에state: absence를추가합니다. -
oc apply -f <nncp_file_name>을실행합니다. Kubernetes NMState Operator가 클러스터의 각 노드에 노드 네트워크 정책을 적용한 후에는 각 노드에 존재하는 모든 인터페이스가 없음 으로 표시됩니다. -
NNCP를 삭제하려면
oc delete nncp를실행하세요.
1.6. 웹 콘솔에서 정책 관리 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 노드 네트워크 구성을 업데이트(예: 노드에서 인터페이스 추가 또는 제거)할 수 있습니다. 네트워킹 메뉴 아래 NodeNetworkConfigurationPolicy 페이지에서 생성된 정책 목록에 액세스하여 웹 콘솔에서 정책을 관리합니다. 이 페이지에서는 정책을 만들고, 업데이트하고, 모니터링하고, 삭제할 수 있습니다.
1.6.1. 정책 상태 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 페이지에서 정책 상태를 모니터링할 수 있습니다. 이 페이지는 클러스터에서 생성된 모든 정책을 다음 열과 함께 표 형식으로 표시합니다.
- 이름
- 생성된 정책의 이름입니다.
- 매칭된 노드
- 정책이 적용되는 노드의 수입니다. 이는 노드 선택기를 기준으로 하는 노드의 하위 집합이거나 클러스터의 모든 노드일 수 있습니다.
- 노드 네트워크 상태
- 매칭된 노드의 시행 상태입니다. 시행 상태를 클릭하면 해당 상태에 대한 자세한 정보를 볼 수 있습니다.
원하는 정책을 찾으려면 필터 옵션을 사용하여 제정 상태를 기준으로 목록을 필터링하거나 검색 옵션을 사용하여 목록을 필터링할 수 있습니다.
1.6.2. 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔에서 양식이나 YAML을 사용하여 정책을 만들 수 있습니다. 양식을 사용하여 정책을 만들면 새 정책이 클러스터의 노드 토폴로지를 어떻게 실시간으로 변경하는지 확인할 수 있습니다.
프로세스
- 네트워킹 → 노드 네트워크 구성 으로 이동합니다.
노드 네트워크 구성 페이지에서 만들기를 클릭하고 양식에서 옵션을 선택합니다.
참고YAML을 사용하여 정책을 만들려면 만들기 → YAML 사용 옵션을 클릭합니다. 하지만 다음 단계는 form 방법에만 적용됩니다.
- 선택 사항: 노드 선택기를 사용하여 이 NodeNetworkConfigurationPolicy를 특정 노드 하위 집합에만 적용 확인란을 선택하여 정책을 적용해야 하는 노드를 지정합니다.
- 정책 이름 필드에 정책 이름을 입력합니다.
- 선택 사항: 설명 필드에 정책에 대한 설명을 입력합니다.
- 다음을 클릭하여 정책 인터페이스 섹션으로 이동합니다.
정책 인터페이스 섹션의 브리징 부분에서는
br0이라는 이름의 브리지 인터페이스가 기본적으로 추가되고, 편집 가능한 필드에 사전 설정된 값이 설정됩니다. 필요한 경우 다음 단계를 수행하여 값을 편집합니다.- 인터페이스 이름 필드에 인터페이스 이름을 입력합니다.
- 필요한 네트워크 상태를 선택하세요. 기본적으로 선택된 상태는 위 입니다.
인터페이스 유형을 선택하세요. 사용 가능한 유형은 브리지 , 본딩 , 이더넷 입니다. 기본적으로 선택된 값은 Bridge 입니다.
참고양식을 사용하여 VLAN 인터페이스를 추가하는 것은 지원되지 않습니다. VLAN 인터페이스를 추가하려면 YAML을 사용하여 정책을 만들어야 합니다. 정책을 추가한 후에는 양식을 사용하여 정책을 편집할 수 없습니다.
선택 사항: IP 구성 섹션에서 IPv4 확인란을 선택하여 인터페이스에 IPv4 주소를 할당하고 IP 주소 할당 세부 정보를 구성합니다.
- IP 주소를 클릭하면 정적 IP 주소로 인터페이스를 구성하고, DHCP를 클릭하면 IP 주소를 자동으로 할당합니다.
IP 주소 옵션을 선택한 경우, IPv4 주소 필드에 IPv4 주소를 입력하고, 접두사 길이 필드에 접두사 길이를 입력합니다.
DHCP 옵션을 선택한 경우 비활성화하려는 옵션의 선택을 취소하세요. 사용 가능한 옵션은 자동 DNS , 자동 경로 , 자동 게이트웨이 입니다. 모든 옵션은 기본적으로 선택되어 있습니다.
- 선택 사항: 포트 필드에 포트 번호를 입력합니다.
- 선택 사항: STP를 활성화하려면 STP 활성화 확인란을 선택하세요.
- 선택 사항: 정책에 인터페이스를 추가하려면 정책에 다른 인터페이스 추가를 클릭합니다.
- 선택 사항: 정책에서 인터페이스를 제거하려면 다음을 클릭하세요. 인터페이스 옆에 있는 아이콘.
참고또는 페이지 상단의 YAML 편집을 클릭하여 YAML을 사용하여 양식 편집을 계속할 수 있습니다.
- 다음을 클릭하여 양식의 검토 섹션으로 이동합니다.
- 설정을 확인하고 만들기를 클릭하여 정책을 만듭니다.
1.7. 정책 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
1.7.1. 양식을 사용하여 정책 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
절차
- 네트워킹 → NodeNetworkConfigurationPolicy 로 이동합니다.
-
NodeNetworkConfigurationPolicy 페이지에서 다음을 클릭합니다.
편집하려는 정책 옆에 있는 아이콘을 클릭하고 편집을 클릭합니다.
- 업데이트하려는 필드를 편집합니다.
- 저장을 클릭합니다.
양식을 사용하여 VLAN 인터페이스를 추가하는 것은 지원되지 않습니다. VLAN 인터페이스를 추가하려면 YAML을 사용하여 정책을 만들어야 합니다. 정책을 추가한 후에는 양식을 사용하여 정책을 편집할 수 없습니다.
1.7.2. YAML을 사용하여 정책 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
절차
- 네트워킹 → NodeNetworkConfigurationPolicy 로 이동합니다.
- NodeNetworkConfigurationPolicy 페이지에서 편집하려는 정책의 이름 열 아래에 있는 정책 이름을 클릭합니다.
- YAML 탭을 클릭하고 YAML을 편집합니다.
- 저장을 클릭합니다.
1.7.3. 정책 삭제 링크 복사링크가 클립보드에 복사되었습니다!
절차
- 네트워킹 → NodeNetworkConfigurationPolicy 로 이동합니다.
-
NodeNetworkConfigurationPolicy 페이지에서 다음을 클릭합니다.
삭제하려는 정책 옆에 있는 아이콘을 클릭하고 삭제를 클릭합니다.
- 팝업창에 정책 이름을 입력하여 삭제를 확인하고 '삭제'를 클릭합니다.
1.8. CLI를 사용하여 정책 관리 링크 복사링크가 클립보드에 복사되었습니다!
1.8.1. 노드에서 인터페이스 만들기 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 NodeNetworkConfigurationPolicy (NNCP) 매니페스트를 적용하여 클러스터의 노드에 인터페이스를 생성합니다. 매니페스트는 요청된 인터페이스 구성을 자세히 설명합니다.
기본적으로 매니페스트는 클러스터의 모든 노드에 적용됩니다. 특정 노드에 인터페이스를 추가하려면 spec: nodeSelector 매개변수와 노드 선택기에 적합한 <key>:<value>를 추가합니다.
여러 개의 nmstate 지원 노드를 동시에 구성할 수 있습니다. 이 구성은 병렬로 50%의 노드에 적용됩니다. 이 전략을 사용하면 네트워크 연결이 끊어져도 전체 클러스터를 사용할 수 없게 되는 일이 방지됩니다. 클러스터의 특정 부분에 병렬로 정책 구성을 적용하려면 NodeNetworkConfigurationPolicy 매니페스트 구성 파일에서 maxUnavailable 매개변수를 사용합니다.
두 개의 노드가 있고 maxUnavailable 매개변수를 50% 로 설정한 NNCP 매니페스트를 이 두 노드에 적용하면 한 번에 한 노드씩 NNCP 구성을 수신합니다. 그런 다음 maxUnavailable 매개변수를 50% 로 설정한 추가 NNCP 매니페스트 파일을 도입하면 이 NCCP는 초기 NNCP와 독립적입니다. 즉, 두 NNCP 매니페스트가 모두 노드에 잘못된 구성을 적용하는 경우 클러스터의 절반이 작동한다는 것을 더 이상 보장할 수 없습니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다.
프로세스
NodeNetworkConfigurationPolicy매니페스트를 생성합니다. 다음 예제에서는 모든 워커 노드에 Linux 브리지를 구성하고 DNS 리졸버를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
node-role.kubernetes.io/worker: ""노드 선택기를 사용하여 클러스터의 모든 작업자 노드를 선택합니다. - 4
- 선택 사항: 정책 구성을 동시에 적용할 수 있는 nmstate 지원 노드의 최대 수를 지정합니다. 이 매개변수는
"10%"과 같은 백분율 값(문자열)이나3과 같은 절대값(숫자)으로 설정할 수 있습니다. - 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 선택 사항: DNS 서버에 대한 검색 및 서버 설정을 지정합니다.
노드 네트워크 정책을 생성합니다.
oc apply -f br1-eth1-policy.yaml
$ oc apply -f br1-eth1-policy.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 노드 네트워크 구성 정책 매니페스트의 파일 이름입니다.
1.10. 다양한 인터페이스에 대한 예제 정책 구성 링크 복사링크가 클립보드에 복사되었습니다!
다양한 NodeNetworkConfigurationPolicy (NNCP) 매니페스트 구성 예를 읽기 전에 클러스터가 최상의 성능 조건에서 실행될 수 있도록 노드에 정책을 적용할 때 다음 요소를 고려하세요.
- 노드에 여러 NNCP CR을 적용하려면 정책 이름의 영숫자 정렬을 기준으로 논리적 순서로 NNCP를 만들어야 합니다. Kubernetes NMState Operator는 새로 생성된 NNCP CR을 지속적으로 확인하여 Operator가 노드에 CR을 즉시 적용할 수 있도록 합니다.
-
여러 노드에 정책을 적용해야 하지만 모든 노드에 대해 단일 NNCP만 생성하려는 경우 Kubernetes NMState Operator는 정책을 각 노드에 순서대로 적용합니다. 클러스터 구성 파일의
maxUnavailable매개변수를 사용하여 대상 노드에 대한 정책 적용 속도와 범위를 설정할 수 있습니다. 매개변수에 대해 더 낮은 백분율 값을 설정하면 정책 적용을 받는 소수의 노드에 영향을 미치는 중단으로 인해 클러스터 전체가 중단되는 위험을 줄일 수 있습니다. -
두 개의 NNCP 매니페스트에서
maxUnavailable매개변수를50%로 설정하면 정책 구성 적용 범위가 클러스터의 노드 100%에 적용됩니다. - 노드가 다시 시작되면 Kubernetes NMState Operator는 노드에 정책을 적용하는 순서를 제어할 수 없습니다. Kubernetes NMState Operator는 상호 종속적인 정책을 순서대로 적용하여 네트워크 개체의 성능이 저하될 수 있습니다.
- 모든 관련 네트워크 구성을 단일 정책으로 지정하는 것을 고려하세요.
1.10.1. 예제: 이더넷 인터페이스 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 이더넷 인터페이스를 구성합니다.
다음 YAML 파일은 이더넷 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
hostname노드 선택기를 사용합니다. - 4
- 인터페이스 이름입니다.
- 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 인터페이스 유형입니다. 이 예제에서는 이더넷 네트워킹 인터페이스를 생성합니다.
- 7
- 생성 후 인터페이스에 요청되는 상태입니다.
- 8
- 선택 사항:
dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다. - 9
- 이 예제에서
ipv4를 활성화합니다.
1.10.2. 예: Linux 브리지 인터페이스 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 Linux 브리지 인터페이스를 만듭니다.
다음 YAML 파일은 Linux 브리지 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
hostname노드 선택기를 사용합니다. - 4
- 인터페이스 이름입니다.
- 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 인터페이스 유형입니다. 이 예제에서는 브리지를 만듭니다.
- 7
- 생성 후 인터페이스에 요청되는 상태입니다.
- 8
- 선택 사항:
dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다. - 9
- 이 예제에서
ipv4를 활성화합니다. - 10
- 이 예제에서
stp를 비활성화합니다. - 11
- 브리지가 연결되는 노드 NIC입니다.
1.10.3. 예제: VLAN 인터페이스 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 VLAN 인터페이스를 만듭니다.
단일 NodeNetworkConfigurationPolicy 매니페스트에서 노드의 VLAN 인터페이스에 대한 모든 관련 구성을 정의합니다. 예를 들어, 노드에 대한 VLAN 인터페이스와 동일한 NodeNetworkConfigurationPolicy 매니페스트에서 VLAN 인터페이스에 대한 관련 경로를 정의합니다.
노드가 다시 시작되면 Kubernetes NMState Operator는 정책이 적용되는 순서를 제어할 수 없습니다. 따라서 관련 네트워크 구성에 대해 별도의 정책을 사용하는 경우 Kubernetes NMState Operator가 이러한 정책을 순서대로 적용하면 네트워크 개체가 저하될 수 있습니다.
다음 YAML 파일은 VLAN 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
hostname노드 선택기를 사용합니다. - 4
- 인터페이스 이름입니다. 베어 메탈에 배포하는 경우
<interface_name>.<vlan_number>VLAN 형식만 지원됩니다. - 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 인터페이스 유형입니다. 이 예제에서는 VLAN을 만듭니다.
- 7
- 생성 후 인터페이스에 요청되는 상태입니다.
- 8
- VLAN이 연결되는 노드 NIC입니다.
- 9
- VLAN 태그입니다.
1.10.4. 예제: 본딩 인터페이스 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 클러스터에 적용하여 클러스터의 노드에서 본딩 인터페이스를 만듭니다.
OpenShift Container Platform에서는 다음과 같은 본딩 모드만 지원합니다.
-
활성 백업
-
balance-xor
-
802.3ad
다른 본드 모드는 지원되지 않습니다.
balance-xor 및 802.3ad 본드 모드에는 "EtherChannel" 또는 유사한 포트 그룹화를 설정하기 위한 스위치 구성이 필요합니다. 이 두 가지 모드는 인터페이스를 통해 전달되는 트래픽의 소스와 대상에 따라 추가적인 부하 분산 구성이 필요합니다. 액티브-백업 본드 모드에는 스위치 구성이 필요하지 않습니다. 다른 본드 모드는 지원되지 않습니다.
다음 YAML 파일은 본딩 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
hostname노드 선택기를 사용합니다. - 4
- 인터페이스 이름입니다.
- 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 인터페이스 유형입니다. 이 예제에서는 본딩을 생성합니다.
- 7
- 생성 후 인터페이스에 요청되는 상태입니다.
- 8
- 선택 사항:
dhcp를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 종료할 수 있습니다. - 9
- 이 예제에서
ipv4를 활성화합니다. - 10
- 본딩의 드라이버 모드입니다. 이 예제에서는
활성 백업을사용합니다. - 11
- 선택 사항: 이 예제에서는 miimon을 사용하여 140ms마다 본딩 링크를 검사합니다.
- 12
- 본딩의 하위 노드 NIC입니다.
- 13
- 선택 사항: 본딩의 MTU(최대 전송 단위)입니다. 지정하지 않는 경우 이 값은 기본적으로
1500으로 설정됩니다.
1.10.5. 예제: 노드 네트워크 구성 정책이 동일한 여러 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
동일한 노드 네트워크 구성 정책으로 여러 개의 인터페이스를 생성할 수 있습니다. 이러한 인터페이스는 서로를 참조할 수 있으므로 단일 정책 매니페스트를 사용하여 네트워크 구성을 빌드하고 배포할 수 있습니다.
다음 예제 YAML 파일은 두 개의 NIC와 VLAN에 걸쳐 bond10 이라는 이름의 본드를 생성하고, 이 본드에 연결되는 bond10.103 이라는 이름의 VLAN을 생성합니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예제에서는
호스트 이름노드 선택기를 사용합니다. - 4 11
- 인터페이스 이름입니다.
- 5 12
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6 13
- 인터페이스 유형입니다.
- 7 14
- 생성 후 인터페이스에 요청되는 상태입니다.
- 8
- 본딩의 드라이버 모드입니다.
- 9
- 선택 사항: 이 예제에서는 miimon을 사용하여 140ms마다 본딩 링크를 검사합니다.
- 10
- 본딩의 하위 노드 NIC입니다.
- 15
- VLAN이 연결되는 노드 NIC입니다.
- 16
- VLAN 태그입니다.
- 17
- 선택 사항: DHCP를 사용하지 않는 경우 고정 IP를 설정하거나 IP 주소 없이 인터페이스를 그대로 둘 수 있습니다.
- 18
- 이 예에서는 IPv4를 활성화합니다.
1.10.6. 예: 가상 기능에 대한 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 매니페스트를 적용하여 기존 클러스터의 SR-IOV(Single Root I/O Virtualization) 네트워크 가상 기능(VF)에 대한 호스트 네트워크 설정을 업데이트합니다.
다음 작업을 완료하려면 기존 클러스터에 NodeNetworkConfigurationPolicy 매니페스트를 적용할 수 있습니다.
- VF에 대한 QoS 호스트 네트워크 설정을 구성하여 성능을 최적화합니다.
- 네트워크 인터페이스에 대한 VF를 추가, 제거 또는 업데이트합니다.
- VF 본딩 구성을 관리합니다.
SR-IOV 네트워크 운영자를 통해 관리되는 물리적 기능에서 NMState를 사용하여 SR-IOV VF에 대한 호스트 네트워크 설정을 업데이트하려면 관련 SriovNetworkNodePolicy 리소스에서 externallyManaged 매개변수를 true 로 설정해야 합니다. 자세한 내용은 추가 자료 섹션을 참조하세요.
다음 YAML 파일은 VF에 대한 QoS 정책을 정의하는 매니페스트의 예입니다. 이 YAML에는 사용자 고유의 정보로 바꿔야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예는
작업자역할이 있는 모든 노드에 적용됩니다. - 4
- 물리적 기능(PF) 네트워크 인터페이스의 이름입니다.
- 5
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 6
- 인터페이스 유형입니다.
- 7
- 구성 후 인터페이스에 대한 요청 상태입니다.
- 8
- VF의 총 수.
- 9
- ID가
0인 VF를 식별합니다. - 10
- VF의 최대 전송 속도를 Mbps 단위로 설정합니다. 이 샘플 값은 200Mbps의 속도를 설정합니다.
다음 YAML 파일은 네트워크 인터페이스에 VF를 추가하는 매니페스트의 예입니다.
이 샘플 구성에서는 ens1f1v0 VF가 ens1f1 물리적 인터페이스에 생성되고, 이 VF가 본딩된 네트워크 인터페이스 bond0 에 추가됩니다. 본드는 중복성을 위해 활성 백업 모드를 사용합니다. 이 예에서 VF는 하드웨어 오프로드를 사용하여 물리적 인터페이스에서 직접 VLAN을 관리하도록 구성됩니다.
- 1
- 정책 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. - 3
- 이 예는
작업자역할이 있는 모든 노드에 적용됩니다. - 4
- VF 네트워크 인터페이스의 이름입니다.
- 5
- 생성할 VF의 수.
- 6
- 활성 및 백업 VF 간의 장애 조치 본딩을 허용하도록 설정합니다.
- 7
- VLAN의 ID입니다. 이 예제에서는 하드웨어 오프로드를 사용하여 VF에서 직접 VLAN을 정의합니다.
- 8
- 본딩 네트워크 인터페이스의 이름입니다.
- 9
- 선택 사항: 사람이 읽을 수 있는 인터페이스 설명입니다.
- 10
- 인터페이스 유형입니다.
- 11
- 구성 후 인터페이스에 대한 요청 상태입니다.
- 12
- 채권에 대한 채권 정책.
- 13
- 1차 부착된 본딩 포트입니다.
- 14
- 본딩된 네트워크 인터페이스의 포트입니다.
- 15
- 이 예에서 VLAN 네트워크 인터페이스는 본딩된 네트워크 인터페이스에 추가 인터페이스로 추가됩니다.
1.10.7. 예: VRF 인스턴스 노드 네트워크 구성 정책이 있는 네트워크 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
NodeNetworkConfigurationPolicy 사용자 정의 리소스(CR)를 적용하여 VRF(가상 라우팅 및 포워딩) 인스턴스를 네트워크 인터페이스와 연결합니다.
VRF 인스턴스를 네트워크 인터페이스와 연결하면 트래픽 격리, 독립적인 라우팅 결정, 네트워크 리소스의 논리적 분리를 지원할 수 있습니다.
VRF(가상 경로 전달)를 구성할 때 VRF 값을 1000 보다 작은 테이블 ID로 변경해야 합니다. 1000 보다 큰 값은 OpenShift Container Platform에 예약되어 있기 때문입니다.
베어 메탈 환경에서는 MetalLB를 사용하여 VRF 인스턴스에 속한 인터페이스를 통해 로드 밸런서 서비스를 알릴 수 있습니다. 자세한 내용은 추가 자료 섹션을 참조하세요.
다음 YAML 파일은 VRF 인스턴스를 네트워크 인터페이스에 연결하는 예입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
1.11. 노드에서 IP over InfiniBand 인터페이스 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 웹 콘솔에서는 InfiniBand(IPoIB) 모드를 지원하는 NVIDIA Network Operator와 같은 Red Hat 인증 타사 Operator를 설치할 수 있습니다. 일반적으로 OpenShift Container Platform 클러스터의 리소스를 관리하려면 타사 운영자를 다른 공급업체 인프라와 함께 사용합니다. 클러스터의 노드에서 IPoIB 인터페이스를 생성하려면 NodeNetworkConfigurationPolicy (NNCP) 매니페스트 파일에서 InfiniBand(IPoIB) 인터페이스를 정의해야 합니다.
OpenShift Container Platform 설명서에서는 NodeNetworkConfigurationPolicy (NNCP) 매니페스트 파일에서 IPoIB 인터페이스 구성만 정의하는 방법을 설명합니다. 대부분의 구성 단계에 대해서는 NVIDIA 및 기타 타사 공급업체의 설명서를 참조해야 합니다. Red Hat 지원은 NNCP 구성 외부의 어떤 것에도 확장되지 않습니다.
NVIDIA Operator에 대한 자세한 내용은 Red Hat OpenShift 시작하기 (NVIDIA Docs Hub)를 참조하세요.
사전 요구 사항
- IPoIB 인터페이스를 지원하는 Red Hat 인증 타사 운영자를 설치했습니다.
-
OpenShift CLI(
oc)가 설치되어 있습니다.
프로세스
NodeNetworkConfigurationPolicy(NNCP) 매니페스트 파일을 만들거나 편집한 다음, 해당 파일에 IPoIB 인터페이스를 지정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
데이터그램은 IPoIB 인터페이스의 기본 모드이며, 이 모드는 성능과 지연 시간을 최적화합니다.연결모드는 지원되는 모드이지만 주변 네트워크 장치와의 노드 연결성을 개선하기 위해 최대 전송 단위(MTU) 값을 조정해야 하는 경우에만 이 모드를 사용하는 것이 좋습니다.- 2
- 문자열 또는 정수 값을 지원합니다. 이 매개변수는 NVIDIA와 같은 제3자 공급업체와의 인증 및 암호화된 통신을 목적으로 하는 인터페이스에 대한 보호 키 또는 P-키를 정의합니다. 값
None과0xffff는InfiniBand 시스템의 기본 인터페이스에 대한 보호 키를 나타냅니다. - 3
- 지원되는 값에는
name, 기본값 및mac-address 가포함됩니다.이름값은 지정된 인터페이스 이름을 보유하는 인터페이스에 구성을 적용합니다. - 4
- 인터페이스의 MAC 주소를 보관합니다. IP-over-InfiniBand(IPoIB) 인터페이스의 경우 주소는 20바이트 문자열입니다.
- 5
- 인터페이스 유형을
infiniband로 설정합니다.
다음 명령을 실행하여 클러스터의 각 노드에 NNCP 구성을 적용합니다. 그러면 Kubernetes NMState Operator가 각 노드에 IPoIB 인터페이스를 생성할 수 있습니다.
$ oc apply -f <nncp_file_name>
$ oc apply -f <nncp_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<nncp_file_name>을NNCP 파일 이름으로 바꾸세요.
1.12. 동적 매칭 및 템플릿을 사용하는 정책 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 구성 조각은 동적 매칭과 템플릿을 사용하는 노드 네트워크 정책을 보여줍니다.
동적 매칭 및 템플릿을 사용하는 노드 네트워크 구성 정책을 적용하는 것은 기술 미리 보기 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
1.12.1. 예: 브리지에 연결된 NIC에서 정적 IP 주소를 상속하는 Linux 브리지 인터페이스 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 노드에 Linux 브리지 인터페이스를 만들고 클러스터에 단일 NodeNetworkConfigurationPolicy 매니페스트를 적용하여 NIC의 정적 IP 구성을 브리지로 전송합니다.
다음 YAML 파일은 Linux 브리지 인터페이스의 매니페스트 예제입니다. 여기에는 해당 정보로 교체해야 하는 샘플 값이 포함되어 있습니다.
- 1
- 정책의 이름입니다.
- 2
- 선택 사항:
nodeSelector매개변수를 포함하지 않으면 정책이 클러스터의 모든 노드에 적용됩니다. 이 예제에서는node-role.kubernetes.io/worker: ""노드 선택기를 사용하여 클러스터의 모든 작업자 노드를 선택합니다. - 3
- 브리지가 연결된 노드 NIC에 대한 참조입니다.
- 4
- 인터페이스 유형입니다. 이 예제에서는 브리지를 만듭니다.
- 5
- 브리지 인터페이스의 IP 주소입니다. 이 값은
spec.capture.eth1-nic항목에서 참조하는 NIC의 IP 주소와 일치합니다. - 6
- 브리지가 연결되는 노드 NIC입니다.
1.12.2. 예: LLDP 보고를 활성화하기 위한 노드 네트워크 구성 정책 링크 복사링크가 클립보드에 복사되었습니다!
다음 YAML 파일은 OpenShift Container Platform 클러스터의 모든 이더넷 포트에 대한 LLDP(Link Layer Discovery Protocol) 리스너를 활성화하는 NodeNetworkConfigurationPolicy 매니페스트의 예입니다. LAN(Local Area Network)에 있는 장치는 LLDP를 사용하여 자신의 ID, 기능 및 이웃 정보를 알릴 수 있습니다.
1.13. 예제: IP 관리 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제 구성 조각은 IP 관리의 다양한 방법을 보여줍니다.
이 예제에서는 ethernet 인터페이스 유형을 사용하여 예제를 단순화하면서 정책 구성에 관련 컨텍스트를 표시합니다. 이러한 IP 관리 예제는 다른 인터페이스 유형과 함께 사용할 수 있습니다.
1.13.1. 고정 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫은 이더넷 인터페이스에서 IP 주소를 정적으로 구성합니다.
- 1
- 이 값을 인터페이스의 고정 IP 주소로 교체합니다.
1.13.2. IP 주소 없음 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫에서는 인터페이스에 IP 주소가 없습니다.
인터페이스를 비활성화하려면 ipv4.enabled 및 ipv6.enabled 매개변수를 모두 false 로 설정하는 경우 항상 state 매개변수를 up 으로 설정하세요. 이 구성에서 state: down 을 설정하면 자동 DHCP 할당으로 인해 인터페이스가 DHCP IP 주소를 받습니다.
1.13.3. 동적 호스트 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫에서는 동적 IP 주소, 게이트웨이 주소, DNS를 사용하는 이더넷 인터페이스를 구성합니다.
다음 스니펫에서는 동적 IP 주소를 사용하지만 동적 게이트웨이 주소 또는 DNS를 사용하지 않는 이더넷 인터페이스를 구성합니다.
1.13.4. 미디어 액세스 제어(MAC) 주소 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 인터페이스 이름 대신 MAC 주소를 사용하여 네트워크 인터페이스를 식별할 수 있습니다. 네트워크 인터페이스 이름은 운영 체제 구성 변경 등 다양한 이유로 변경될 수 있습니다. 그러나 모든 네트워크 인터페이스에는 변경되지 않는 고유한 MAC 주소가 있습니다. 즉, MAC 주소를 사용하면 특정 네트워크 인터페이스를 식별하는 데 더 영구적인 방법이 됩니다.
식별자 매개변수에 지원되는 값에는 기본 이름 값과 mac-address 값이 포함됩니다. 이름 값은 지정된 인터페이스 이름을 보유하는 인터페이스에 구성을 적용합니다.
식별자 매개변수에 MAC 주소 값을 사용하면 MAC 주소가 네트워크 인터페이스의 식별자라는 것을 나타냅니다. 식별자 값을 mac-address 로 설정하는 경우 다음 mac-address 매개변수 필드에 특정 MAC 주소를 입력해야 합니다.
name 매개변수에 대한 값을 지정할 수는 있지만, identifier: mac-address 값을 설정하면 MAC 주소가 네트워크 인터페이스의 기본 식별자로 사용된다는 의미입니다. 잘못된 MAC 주소를 지정하면 nmstate는 잘못된 인수 오류를 보고합니다.
다음 스니펫은 8A:8C:92:1A:F6:98 의 MAC 주소를 갖는 eth1 이라는 이더넷 장치의 기본 식별자로 지정합니다.
1.13.5. DNS 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 nmstate API는 DNS 값을 네트워크 인터페이스에 저장하는 대신 전역적으로 저장합니다. 특정 상황에서는 DNS 값을 저장하기 위해 네트워크 인터페이스를 구성해야 합니다.
DNS 구성을 설정하는 것은 /etc/resolv.conf 파일을 수정하는 것과 같습니다.
네트워크 인터페이스에 대한 DNS 구성을 정의하려면 먼저 네트워크 인터페이스의 YAML 구성 파일에서 dns-resolver 섹션을 지정해야 합니다. 네트워크 인터페이스에 NNCP 구성을 적용하려면 oc apply -f <nncp_file_name> 명령을 실행해야 합니다.
다음 예에서는 DNS 값을 전역적으로 저장하는 기본 상황을 보여줍니다.
네트워크 인터페이스 없이 정적 DNS를 구성합니다. 호스트 노드에서
/etc/resolv.conf파일을 업데이트할 때NodeNetworkConfigurationPolicy(NNCP) 매니페스트에서 인터페이스(IPv4 또는 IPv6)를 지정할 필요가 없습니다.DNS 값을 전역적으로 저장하는 네트워크 인터페이스에 대한 DNS 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요다음 예에서 보여준 것처럼 NNCP 파일의
dns-resolver.config섹션에서 DNS 옵션을 지정할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 인터페이스에서 DNS 옵션을 제거하려면 다음 구성을 NNCP에 적용한 다음
oc apply -f <nncp_file_name>명령을 실행하세요.... ...
# ... dns-resolver: config: {} interfaces: [] # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 예에서는 DNS 값을 저장하기 위해 네트워크 인터페이스를 구성해야 하는 상황을 보여줍니다.
정적 DNS 이름 서버를 동적 DNS 이름 서버보다 순위를 매기려면 네트워크 인터페이스 YAML 구성 파일에서 동적 호스트 구성 프로토콜(DHCP) 또는 IPv6 자동 구성(
autoconf) 메커니즘을 실행하는 인터페이스를 정의합니다.DHCPv4 네트워크 프로토콜에서 검색된 DNS 이름 서버에
192.0.2.1을추가하는 구성 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow DNS 값을 전역적으로 저장하기 위해
nmstateAPI를 사용하는 기본 방식 대신 DNS 값을 저장하도록 네트워크 인터페이스를 구성해야 하는 경우, 네트워크 인터페이스 YAML 파일에서 정적 DNS 값과 정적 IP 주소를 설정할 수 있습니다.중요네트워크 인터페이스 수준에서 DNS 값을 저장하면 인터페이스를 OVS(Open vSwitch) 브리지, Linux 브리지 또는 본드와 같은 네트워크 구성 요소에 연결한 후 이름 확인 문제가 발생할 수 있습니다.
인터페이스 수준에서 DNS 값을 저장하는 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 인터페이스에 대한 정적 DNS 검색 도메인과 정적 DNS 이름 서버를 설정하려면 네트워크 인터페이스 YAML 구성 파일에서 DHCP(동적 호스트 구성 프로토콜) 또는 IPv6 자동 구성(
autoconf) 메커니즘을 실행하는 정적 인터페이스를 정의합니다.중요네트워크 인터페이스 YAML 파일에서 다음
dns-resolver구성을 지정하면 재부팅 시 경쟁 조건이 발생하여 클러스터에서 실행되는 Pod에NodeNetworkConfigurationPolicy(NNCP)가 적용되지 않을 수 있습니다.- 네트워크 인터페이스에 대한 정적 DNS 검색 도메인과 동적 DNS 이름 서버를 설정합니다.
-
검색매개변수에 도메인 접미사를 지정하고서버매개변수에 IP 주소를 설정하지 않습니다.
example.com및example.org정적 DNS 검색 도메인과 정적 DNS 이름 서버 설정을 설정하는 예제 구성Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.13.6. 고정 라우팅 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫에서는 eth1 인터페이스에 고정 경로와 고정 IP를 구성합니다.
사용자 지정 br- ex 브리지를 수동으로 구성하지 않는 한 정적 경로를 구성할 때 OVN-Kubernetes br- ex 브리지를 다음 홉 인터페이스로 사용할 수 없습니다.
자세한 내용은 베어 메탈에 설치 관리자 프로비저닝 클러스터 배포 문서 또는 베어 메탈에 사용자 프로비저닝 클러스터 설치 문서에서 "사용자 지정 br-ex 브리지를 포함하는 매니페스트 개체 만들기"를 참조하세요.
2장. 노드 네트워크 구성 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
노드 네트워크 구성에 문제가 발생하면 정책이 자동으로 롤백되고 시행이 실패로 보고됩니다. 여기에는 다음과 같은 문제가 포함됩니다.
- 호스트에 구성을 적용하지 못했습니다.
- 호스트와 기본 게이트웨이의 연결이 끊어졌습니다.
- 호스트와 API 서버의 연결이 끊어졌습니다.
2.1. 잘못된 노드 네트워크 구성 정책의 구성 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
노드 네트워크 구성 정책을 적용하여 전체 클러스터에 노드 네트워크 구성 변경 사항을 적용할 수 있습니다.
잘못된 구성을 적용하는 경우 다음 예제를 사용하여 실패한 노드 네트워크 정책의 문제를 해결하고 수정할 수 있습니다. 이 예제에서는 세 개의 제어 평면 노드와 세 개의 컴퓨팅 노드가 있는 클러스터에 Linux 브리지 정책을 적용하려고 시도합니다. 정책이 잘못된 인터페이스를 참조하기 때문에 정책이 적용되지 않습니다.
오류를 찾으려면 사용 가능한 NMState 리소스를 조사해야 합니다. 그런 다음 올바른 구성으로 정책을 업데이트할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
Linux 시스템에
ens01인터페이스가 존재하지 않는지 확인했습니다.
절차
클러스터에 대한 정책을 만듭니다. 다음 예제에서는
ens01을멤버로 갖는 간단한 브리지br1을생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 인터페이스에 정책을 적용합니다.
oc apply -f ens01-bridge-testfail.yaml
$ oc apply -f ens01-bridge-testfail.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 정책의 상태를 확인합니다.
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에 정책이 실패했다는 내용이 표시됩니다.
출력 예
NAME STATUS ens01-bridge-testfail FailedToConfigure
NAME STATUS ens01-bridge-testfail FailedToConfigureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 그러나 정책 상태만으로는 모든 노드에서 실패했는지 노드 서브 세트에서 실패했는지 알 수 없습니다.
노드 네트워크 구성 시행을 나열하여 정책이 모든 노드에서 성공적인지 확인합니다. 정책이 노드 서브 세트에서만 실패한 경우 특정 노드 구성에 문제가 있음을 나타냅니다. 정책이 모든 노드에서 실패한 경우, 출력은 문제가 정책에 있다는 것을 나타냅니다.
oc get nnce
$ oc get nnceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에 정책이 모든 노드에서 실패했다는 내용이 표시됩니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실패한 제정안 중 하나를 살펴보세요. 다음 명령은 출력 툴
jsonpath를 사용하여 출력을 필터링합니다.oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'$ oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[2024-10-10T08:40:46Z INFO nmstatectl] Nmstate version: 2.2.37 NmstateError: InvalidArgument: Controller interface br1 is holding unknown port ens01
[2024-10-10T08:40:46Z INFO nmstatectl] Nmstate version: 2.2.37 NmstateError: InvalidArgument: Controller interface br1 is holding unknown port ens01Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 예에서는
ens01이 알 수 없는 포트임을 나타내는InvalidArgument오류의 출력을 보여줍니다. 이 예에서는 정책 구성 파일에서 포트 구성을 변경해야 할 수도 있습니다.정책이 제대로 구성되었는지 확인하기 위해
NodeNetworkState오브젝트를 요청하여 하나 또는 모든 노드의 네트워크 구성을 확인합니다. 다음 명령에서는control-plane-1노드의 네트워크 구성을 반환합니다.oc get nns control-plane-1 -o yaml
$ oc get nns control-plane-1 -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에 노드의 인터페이스 이름이
ens1인데 실패한 정책에서ens01로 잘못 사용하고 있다는 내용이 표시됩니다.출력 예
- ipv4: # ... name: ens1 state: up type: ethernet- ipv4: # ... name: ens1 state: up type: ethernetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 기존 정책을 편집하여 오류를 수정합니다.
oc edit nncp ens01-bridge-testfail
$ oc edit nncp ens01-bridge-testfailCopy to Clipboard Copied! Toggle word wrap Toggle overflow # ... port: - name: ens1# ... port: - name: ens1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정책을 저장하여 수정 사항을 적용합니다.
정책 상태를 확인하여 업데이트가 완료되었는지 확인합니다.
oc get nncp
$ oc get nncpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
NAME STATUS ens01-bridge-testfail SuccessfullyConfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된 정책이 클러스터의 모든 노드에 성공적으로 구성되었습니다.
2.2. 연결이 끊긴 환경에서 DNS 연결 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
연결이 끊긴 환경에서 nmstate를 구성할 때 상태 점검 프로브 문제가 발생하는 경우 기본 root-servers.net 도메인 대신 사용자 지정 도메인 이름을 확인하도록 DNS 서버를 구성할 수 있습니다.
DNS 서버에 root-servers.net 영역에 대한 이름 서버(NS) 항목이 포함되어 있는지 확인하세요. DNS 서버는 상위 리졸버에 쿼리를 전달할 필요는 없지만, 서버는 NS 쿼리에 대한 올바른 답변을 반환해야 합니다.
2.2.1. bind9 DNS 명명 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
bind9 DNS 서버를 쿼리하도록 구성된 클러스터의 경우, 최소한 하나의 DNS 레코드가 포함된 구성 파일에 root-servers.net 영역을 추가할 수 있습니다. 예를 들어, 이미 이 기준에 맞는 영역 파일로 /var/named/named.localhost 를 사용할 수 있습니다.
프로세스
다음 명령을 실행하여
/etc/named.conf구성 파일의 끝에root-servers.net영역을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
지정된서비스를 다시 시작합니다.systemctl restart named
$ systemctl restart namedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
root-servers.net영역이 있는지 확인하세요.journalctl -u named|grep root-servers.net
$ journalctl -u named|grep root-servers.netCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Jul 03 15:16:26 rhel-8-10 bash[xxxx]: zone root-servers.net/IN: loaded serial 0 Jul 03 15:16:26 rhel-8-10 named[xxxx]: zone root-servers.net/IN: loaded serial 0
Jul 03 15:16:26 rhel-8-10 bash[xxxx]: zone root-servers.net/IN: loaded serial 0 Jul 03 15:16:26 rhel-8-10 named[xxxx]: zone root-servers.net/IN: loaded serial 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 DNS 서버가
root-servers.net도메인의 NS 레코드를 확인할 수 있는지 확인하세요.host -t NS root-servers.net. 127.0.0.1
$ host -t NS root-servers.net. 127.0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Using domain server: Name: 127.0.0.1 Address: 127.0.0.53 Aliases: root-servers.net name server root-servers.net.
Using domain server: Name: 127.0.0.1 Address: 127.0.0.53 Aliases: root-servers.net name server root-servers.net.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. dnsmasq DNS 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
dnsmasq를 DNS 서버로 사용하는 경우 root-servers.net 도메인의 확인을 다른 DNS 서버에 위임할 수 있습니다. 예를 들어, 지정한 DNS 서버를 사용하여 root-servers.net을 확인하는 새 구성 파일을 만드는 것입니다.
다음 명령을 실행하여 도메인
root-servers.net을다른 DNS 서버에 위임하는 구성 파일을 만듭니다.echo 'server=/root-servers.net/<DNS_server_IP>'> /etc/dnsmasq.d/delegate-root-servers.net.conf
$ echo 'server=/root-servers.net/<DNS_server_IP>'> /etc/dnsmasq.d/delegate-root-servers.net.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dnsmasq서비스를 다시 시작합니다.systemctl restart dnsmasq
$ systemctl restart dnsmasqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
root-servers.net도메인이 다른 DNS 서버에 위임되었는지 확인하세요.journalctl -u dnsmasq|grep root-servers.net
$ journalctl -u dnsmasq|grep root-servers.netCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Jul 03 15:31:25 rhel-8-10 dnsmasq[1342]: using nameserver 192.168.1.1#53 for domain root-servers.net
Jul 03 15:31:25 rhel-8-10 dnsmasq[1342]: using nameserver 192.168.1.1#53 for domain root-servers.netCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 DNS 서버가
root-servers.net도메인의 NS 레코드를 확인할 수 있는지 확인하세요.host -t NS root-servers.net. 127.0.0.1
$ host -t NS root-servers.net. 127.0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: root-servers.net name server root-servers.net.
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: root-servers.net name server root-servers.net.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. DNS 연결 문제를 해결하기 위한 사용자 지정 DNS 호스트 이름 생성 링크 복사링크가 클립보드에 복사되었습니다!
외부 DNS 서버에 접근할 수 없는 연결이 끊긴 환경에서는 NMState 사용자 정의 리소스 정의(CRD)에 사용자 정의 DNS 호스트 이름을 지정하여 Kubernetes NMState Operator 상태 프로브 문제를 해결할 수 있습니다.
프로세스
클러스터의
NMStateCRD에 DNS 호스트 이름 구성을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터 네트워크에 DNS 호스트 이름 구성을 적용합니다.
<파일 이름>을CRD 파일 이름으로 바꿔야 합니다.$ oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.