6장. Networking Operator
6.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 및 RHOSP(Red Hat OpenStack Platform) 설치의 프로덕션 환경에서 Kubernetes NMState Operator를 지원합니다.
Red Hat 지원은 Microsoft Azure에서 Kubernetes NMState Operator를 사용하지만 용량은 제한되어 있습니다. 지원은 시스템의 DNS 서버를 설치 후 작업으로 구성하는 것으로 제한됩니다.
OpenShift Container Platform과 함께 NMState를 사용하기 전에 Kubernetes NMState Operator를 설치해야 합니다.
Kubernetes NMState Operator는 보조 NIC의 네트워크 구성을 업데이트합니다. Operator는 기본 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
CR을 클러스터에 적용하여 인터페이스 추가 및 제거를 포함하여 노드 네트워크 구성을 업데이트합니다. NodeNetworkConfigurationEnactment
- 각 노드에 적용된 네트워크 정책을 보고합니다.
6.1.1. Kubernetes NMState Operator 설치
웹 콘솔 또는 CLI를 사용하여 Kubernetes NMState Operator를 설치할 수 있습니다.
6.1.1.1. 웹 콘솔을 사용하여 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
인지 확인합니다.참고이름 제한은 알려진 문제입니다. 인스턴스는 전체 클러스터에 대한 단일 생성입니다.
- 기본 설정을 수락하고 만들기를 클릭하여 인스턴스를 만듭니다.
요약
Kubernetes NMState Operator를 설치한 후 Operator에서 NMState State Controller를 모든 클러스터 노드에 데몬 세트로 배포했습니다.
6.1.1.2. CLI를 사용하여 Kubernetes NMState Operator 설치
OpenShift CLI(oc)
를 사용하여 Kubernetes NMState Operator를 설치할 수 있습니다. Operator가 설치되면 NMState State Controller를 모든 클러스터 노드에 데몬 세트로 배포할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
nmstate
Operator 네임스페이스를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: openshift-nmstate spec: finalizers: - kubernetes EOF
OperatorGroup
을 생성합니다.$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-nmstate namespace: openshift-nmstate spec: targetNamespaces: - openshift-nmstate EOF
nmstate
Operator에 가입합니다.$ 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 EOF
nmstate
Operator 배포의ClusterServiceVersion
(CSV) 상태를Succeeded
:과 일치하는지 확인합니다.$ oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
출력 예
Name Phase kubernetes-nmstate-operator.4.17.0-202210210157 Succeeded
nmstate
Operator 인스턴스를 생성합니다.$ cat << EOF | oc apply -f - apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate EOF
NMState Operator의 Pod가 실행 중인지 확인합니다.
$ oc get pod -n openshift-nmstate
출력 예
Name Ready Status Restarts Age pod/nmstate-cert-manager-5b47d8dddf-5wnb5 1/1 Running 0 77s pod/nmstate-console-plugin-d6b76c6b9-4dcwm 1/1 Running 0 77s pod/nmstate-handler-6v7rm 1/1 Running 0 77s pod/nmstate-handler-bjcxw 1/1 Running 0 77s pod/nmstate-handler-fv6m2 1/1 Running 0 77s pod/nmstate-handler-kb8j6 1/1 Running 0 77s pod/nmstate-handler-wn55p 1/1 Running 0 77s pod/nmstate-operator-f6bb869b6-v5m92 1/1 Running 0 4m51s pod/nmstate-webhook-66d6bbd84b-6n674 1/1 Running 0 77s pod/nmstate-webhook-66d6bbd84b-vlzrd 1/1 Running 0 77s
6.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
매니페스트는 지표를 노출하고 CCMO(Cluster Monitoring Operator)에서 사용할 수 있도록 합니다. 다음 예제에서는 노출된 몇 가지 메트릭을 보여줍니다.
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 웹 콘솔의 개발자 화면에서 메트릭을 보려면 다음 작업을 완료합니다.
- 모니터링 을 클릭합니다.
-
특정 프로젝트의 메트릭을 보려면 Project: 목록에서 프로젝트를 선택합니다. 예를 들면
openshift-nmstate
입니다. - 지표 탭을 클릭합니다.
플롯에 지표를 시각화하려면 쿼리 선택 목록에서 쿼리 를 선택하거나 PromQL 표시를 선택하여 선택한 쿼리를 기반으로 사용자 정의 PromQL 쿼리를 만듭니다.
참고개발자 관점에서는 한 번에 하나의 쿼리만 실행할 수 있습니다.
OpenShift Container Platform 웹 콘솔의 관리자 관점에서 메트릭을 보려면 다음 작업을 완료합니다.
-
모니터링
메트릭 을 클릭합니다. -
Expression 필드에
kubernetes_nmstate_features_applied
를 입력합니다. - 쿼리 추가를 클릭한 다음 쿼리 실행을 클릭합니다.
-
모니터링
시각화된 메트릭을 살펴보려면 다음 작업을 수행합니다.
플롯을 확대하고 시간 범위를 변경하려면 다음 작업을 수행합니다.
- 시각적으로 시간 범위를 선택하려면 가로로 플롯을 클릭하고 드래그합니다.
- 시간 범위를 선택하려면 콘솔 왼쪽 상단에 있는 메뉴를 사용합니다.
- 시간 범위를 재설정하려면 확대/축소 재설정 을 선택합니다.
- 특정 시점에서 모든 쿼리에 대한 출력을 표시하려면 해당 시점에서 플롯에 마우스 커서를 유지합니다. 쿼리 출력이 팝업 상자에 표시됩니다.