1장. Kubernetes NMState Operator
Kubernetes NMState Operator는 OpenShift Container Platform 클러스터 노드에서 NMState를 사용하여 상태 중심 네트워크 구성을 수행하는 데 필요한 Kubernetes API를 제공합니다. Kubernetes NMState Operator는 사용자에게 클러스터 노드에서 다양한 네트워크 인터페이스 유형, DNS 및 라우팅을 구성하는 기능을 제공합니다. 또한 클러스터 노드의 데몬은 각 노드의 네트워크 인터페이스 상태를 API 서버에 정기적으로 보고합니다.
Red Hat은 베어메탈, IBM Power®, IBM Z®, IBM® LinuxONE, VMware vSphere 및 Red Hat OpenStack Platform(RHOSP) 설치의 프로덕션 환경에서 Kubernetes NMState Operator를 지원합니다.
Red Hat은 Microsoft Azure에서 Kubernetes NMState Operator를 사용하도록 지원하지만 그 기능은 제한적입니다. 지원은 설치 후 작업으로 시스템에 DNS 서버를 구성하는 것으로 제한됩니다.
OpenShift Container Platform과 함께 NMState를 사용하기 전에 Kubernetes NMState Operator를 설치해야 합니다. Kubernetes NMState Operator를 설치한 후 다음 작업을 완료할 수 있습니다.
- 노드 네트워크 상태 및 구성 관찰 및 업데이트
-
사용자 정의
br-ex브리지를 포함하는 매니페스트 개체 만들기
이러한 작업에 대한 자세한 내용은 추가 리소스 섹션을 참조하세요.
Kubernetes NMState Operator는 보조 NIC의 네트워크 구성을 업데이트합니다. 운영자는 기본 NIC의 네트워크 구성을 업데이트할 수 없으며, 대부분의 온프레미스 네트워크에서 br-ex 브리지를 업데이트할 수 없습니다.
베어 메탈 플랫폼에서 Kubernetes NMState Operator를 사용하여 br-ex 브리지 네트워크 구성을 업데이트하는 것은 머신 구성 매니페스트 파일에서 br-ex 브리지를 인터페이스로 설정한 경우에만 지원됩니다. 설치 후 작업으로 br-ex 브리지를 업데이트하려면 클러스터의 NodeNetworkConfigurationPolicy 사용자 정의 리소스(CR)의 NMState 구성에서 br-ex 브리지를 인터페이스로 설정해야 합니다. 자세한 내용은 설치 후 구성 에서 사용자 정의 br-ex 브리지를 포함하는 매니페스트 개체 만들기를 참조하세요.
OpenShift Container Platform에서는 nmstate를 사용하여 노드 네트워크의 상태를 보고하고 구성합니다. 이를 통해 단일 구성 매니페스트를 클러스터에 적용하여(예: 모든 노드에서 Linux 브리지 생성) 네트워크 정책 구성을 수정할 수 있습니다.
노드 네트워킹은 다음 오브젝트에서 모니터링하고 업데이트합니다.
NodeNetworkState- 해당 노드의 네트워크 상태를 보고합니다.
NodeNetworkConfigurationPolicy-
노드에서 요청된 네트워크 구성을 설명합니다.
NodeNetworkConfigurationPolicy매니페스트를 클러스터에 적용하는 방식으로 인터페이스 추가 및 제거를 포함하여 노드 네트워크 구성을 업데이트합니다. NodeNetworkConfigurationEnactment- 각 노드에 적용된 네트워크 정책을 보고합니다.
1.1. Kubernetes NMState Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔이나 CLI를 사용하여 Kubernetes NMState Operator를 설치할 수 있습니다.
1.1.1. 웹 콘솔을 사용하여 Kubernetes NMState Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔을 사용하여 Kubernetes NMState Operator를 설치할 수 있습니다. Kubernetes NMState Operator를 설치하면 Operator가 모든 클러스터 노드에 NMState State Controller를 데몬 세트로 배포합니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 로그인했습니다.
프로세스
-
Operators
OperatorHub를 선택합니다. -
모든 항목 아래의 검색 필드에
nmstate를 입력하고 Enter를 클릭하여 Kubernetes NMState Operator를 검색합니다. - Kubernetes NMState Operator 검색 결과를 클릭합니다.
- 설치를 클릭하여 Operator 설치 창을 엽니다.
- 설치를 클릭하여 Operator를 설치합니다.
- Operator 설치가 완료되면 Operator 보기를 클릭합니다.
-
제공된 API 아래에서 인스턴스 생성을 클릭하여
kubernetes-nmstate의 인스턴스 생성을 위해 대화 상자를 엽니다. 대화 상자의 이름 필드에서 인스턴스 이름이
nmstate인지 확인합니다.참고이름 제한은 알려진 문제입니다. 인스턴스는 전체 클러스터에 대한 단일 생성입니다.
- 기본 설정을 수락하고 만들기를 클릭하여 인스턴스를 만듭니다.
1.1.2. CLI를 사용하여 Kubernetes NMState Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift CLI( oc) 를 사용하여 Kubernetes NMState Operator를 설치할 수 있습니다. Operator가 설치되면 NMState State Controller를 모든 클러스터 노드에 데몬 세트로 배포할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. -
cluster-admin권한이 있는 사용자로 로그인했습니다.
프로세스
nmstate연산자 네임스페이스를 만듭니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: openshift-nmstate spec: finalizers: - kubernetes EOFOperatorGroup을생성합니다.$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-nmstate namespace: openshift-nmstate spec: targetNamespaces: - openshift-nmstate EOFnmstate운영자 구독:$ cat << EOF| oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: kubernetes-nmstate-operator namespace: openshift-nmstate spec: channel: stable installPlanApproval: Automatic name: kubernetes-nmstate-operator source: redhat-operators sourceNamespace: openshift-marketplace EOFnmstateOperator 배포에 대한ClusterServiceVersion(CSV) 상태가Succeeded로 확인됩니다.$ oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phasenmstate연산자의 인스턴스를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate EOFDNS 연결 문제로 인해 클러스터에서 DNS 상태 검사 프로브에 문제가 발생하는 경우 다음 DNS 호스트 이름 구성을
NMStateCRD에 추가하여 이러한 문제를 해결할 수 있는 상태 검사를 빌드할 수 있습니다.apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate spec: probeConfiguration: dns: host: redhat.com # ...다음 명령을 실행하여 클러스터 네트워크에 DNS 호스트 이름 구성을 적용합니다.
<파일 이름>을CRD 파일 이름으로 바꿔야 합니다.$ oc apply -f <filename>.yaml다음 명령을 실행하여 리소스가
사용 가능조건에 도달할 때까지nmstateCRD를 모니터링합니다.--timeout옵션에 값을 설정하여사용 가능조건이 이 설정된 최대 대기 시간 내에 충족되지 않으면 명령이 시간 초과되고 오류 메시지를 생성하도록 해야 합니다.$ oc wait --for=condition=Available nmstate/nmstate --timeout=600s
검증
다음 명령을 입력하여 NMState Operator의 모든 포드가
Running상태인지 확인하세요.$ oc get pod -n openshift-nmstate
1.1.3. Kubernetes NMState Operator가 수집한 메트릭 보기 링크 복사링크가 클립보드에 복사되었습니다!
Kubernetes NMState Operator인 kubernetes-nmstate-operator 는 kubernetes_nmstate_features_applied 구성 요소에서 메트릭을 수집하고 이를 즉시 사용 가능한 메트릭으로 노출할 수 있습니다. 메트릭을 보기 위한 사용 사례로 NodeNetworkConfigurationPolicy 사용자 지정 리소스를 생성하고 정책이 활성화되었는지 확인하려는 상황을 고려해 보겠습니다.
kubernetes_nmstate_features_applied 메트릭은 API가 아니며 OpenShift Container Platform 버전 간에 변경될 수 있습니다.
웹 콘솔에서 Metrics UI에는 선택한 프로젝트에 대한 미리 정의된 CPU, 메모리, 대역폭 및 네트워크 패킷 쿼리가 포함되어 있습니다. 프로젝트에 대한 CPU, 메모리, 대역폭, 네트워크 패킷 및 애플리케이션 메트릭에 대해 사용자 정의 Prometheus Query Language(PromQL) 쿼리를 실행할 수도 있습니다.
다음 예제에서는 OpenShift Container Platform 클러스터에 적용되는 NodeNetworkConfigurationPolicy 매니페스트 예제를 보여줍니다.
# ...
interfaces:
- name: br1
type: linux-bridge
state: up
ipv4:
enabled: true
dhcp: true
dhcp-custom-hostname: foo
bridge:
options:
stp:
enabled: false
port: []
# ...
NodeNetworkConfigurationPolicy 매니페스트는 메트릭을 노출하고 이를 클러스터 모니터링 운영자(CMO)가 사용할 수 있도록 합니다. 다음 예에서는 일부 노출된 측정 항목을 보여줍니다.
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.005"} 16
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.01"} 16
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.025"} 16
...
# HELP kubernetes_nmstate_features_applied Number of nmstate features applied labeled by its name
# TYPE kubernetes_nmstate_features_applied gauge
kubernetes_nmstate_features_applied{name="dhcpv4-custom-hostname"} 1
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. - 관리자 권한으로 웹 콘솔에 로그인하고 Kubernetes NMState Operator를 설치했습니다.
- 개발자로 또는 메트릭을 확인하는 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
- 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
- 사용자 정의 프로젝트에 서비스를 배포했습니다.
-
NodeNetworkConfigurationPolicy매니페스트를 생성하여 클러스터에 적용했습니다.
OpenShift Container Platform 4.19부터 웹 콘솔의 관점이 통합되었습니다. 개발자 관점은 더 이상 기본적으로 활성화되지 않습니다.
모든 사용자는 OpenShift Container Platform 웹 콘솔 기능을 모두 사용할 수 있습니다. 하지만 클러스터 소유자가 아닌 경우 클러스터 소유자에게 특정 기능에 대한 액세스 권한을 요청해야 할 수도 있습니다.
개발자 관점을 계속 활성화할 수 있습니다. 웹 콘솔의 시작하기 창에서 콘솔을 둘러보고, 클러스터 설정에 대한 정보를 찾고, 개발자 관점을 활성화하기 위한 빠른 시작을 보고, 링크를 따라가서 새로운 기능과 성능을 살펴볼 수 있습니다.
프로세스
OpenShift Container Platform 웹 콘솔에서 개발자 관점에서 메트릭을 보려면 다음 작업을 완료하세요.
- 관찰을 클릭하세요.
-
특정 프로젝트의 지표를 보려면 프로젝트 목록에서 프로젝트를 선택하세요. 예를 들어,
openshift-nmstate. - 메트릭 탭을 클릭합니다.
플롯의 메트릭을 시각화하려면 쿼리 선택 목록에서 쿼리를 선택하거나 'PromQL 표시'를 선택하여 선택한 쿼리를 기반으로 사용자 지정 PromQL 쿼리를 만듭니다.
참고개발자 역할로는 한 번에 하나의 쿼리만 실행할 수 있습니다.
관리자 권한으로 OpenShift Container Platform 웹 콘솔에서 메트릭을 보려면 다음 작업을 완료하세요.
-
관찰
지표를 클릭합니다. -
표현식 필드에
kubernetes_nmstate_features_applied를입력합니다. - 쿼리 추가를 클릭한 다음 쿼리 실행을 클릭합니다.
-
관찰
시각화된 지표를 살펴보려면 다음 작업 중 하나를 수행하세요.
플롯을 확대하고 시간 범위를 변경하려면 다음 작업 중 하나를 수행하세요.
- 시간 범위를 시각적으로 선택하려면 플롯을 수평으로 클릭하고 드래그하세요.
- 시간 범위를 선택하려면 콘솔의 왼쪽 상단에 있는 메뉴를 사용하세요.
- 시간 범위를 재설정하려면 확대/축소 재설정을 선택합니다.
- 특정 시점의 모든 쿼리에 대한 출력을 표시하려면 해당 시점의 플롯에 마우스 커서를 올려놓으세요. 쿼리 출력은 팝업 상자에 표시됩니다.