23.15. 네트워크 흐름 추적
클러스터 관리자는 다음 영역을 지원하기 위해 클러스터에서 Pod 네트워크 흐름에 대한 정보를 수집할 수 있습니다.
- pod 네트워크에서 수신 및 송신 트래픽을 모니터링합니다.
- 성능 문제를 해결합니다.
- 용량 계획 및 보안 감사를 위한 데이터를 수집합니다.
네트워크 흐름 컬렉션을 활성화하면 트래픽에 대한 메타데이터만 수집됩니다. 예를 들어 패킷 데이터는 수집되지 않지만 프로토콜, 소스 주소, 대상 주소, 포트 번호, 바이트 수 및 기타 패킷 수준 정보가 수집됩니다.
데이터는 다음 레코드 형식 중 하나로 수집됩니다.
- NetFlow
- sFlow
- IPFIX
하나 이상의 컬렉터 IP 주소와 포트 번호를 사용하여 CNO(Cluster Network Operator)를 구성하는 경우 Operator는 각 노드에 OVS(Open vSwitch)를 구성하여 네트워크 흐름 레코드를 각 컬렉터에 전송합니다.
여러 유형의 네트워크 흐름 수집기로 레코드를 보내도록 Operator를 구성할 수 있습니다. 예를 들어 NetFlow 컬렉터에 레코드를 보내고 레코드를 sFlow 수집기에 전송할 수도 있습니다.
OVS가 수집기에 데이터를 보내면 각 유형의 컬렉터는 동일한 레코드를 수신합니다. 예를 들어 노드의 OVS가 두 개의 NetFlow 컬렉터를 구성하는 경우 두 컬렉터에 동일한 레코드를 보냅니다. 또한 두 개의 sFlow 컬렉터를 구성하는 경우 두 개의 sFlow 수집기는 동일한 레코드를 받습니다. 그러나 각 컬렉터 유형에는 고유한 레코드 형식이 있습니다.
네트워크 흐름 데이터를 수집하고 컬렉터로 레코드를 전송하면 성능에 영향을 미칩니다. 노드는 더 느린 속도로 패킷을 처리합니다. 성능 영향이 너무 크면 컬렉터의 대상을 삭제하여 네트워크 흐름 데이터 수집 및 복원 성능을 비활성화할 수 있습니다.
네트워크 흐름 수집기를 활성화하면 클러스터 네트워크의 전반적인 성능에 영향을 미칠 수 있습니다.
23.15.1. 네트워크 흐름 추적을 위한 네트워크 오브젝트 구성
CNO(Cluster Network Operator)에서 네트워크 흐름 수집기를 구성하는 필드는 다음 표에 표시되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CNO 개체 이름입니다. 이 이름은 항상 |
|
|
|
|
| 최대 10개의 컬렉터에 대한 IP 주소 및 네트워크 포트 쌍 목록입니다. |
|
| 최대 10개의 컬렉터에 대한 IP 주소 및 네트워크 포트 쌍 목록입니다. |
|
| 최대 10개의 컬렉터에 대한 IP 주소 및 네트워크 포트 쌍 목록입니다. |
CNO에 다음 매니페스트를 적용한 후 Operator는 클러스터의 각 노드에서 OVS(Open vSwitch)를 구성하여 네트워크 흐름 레코드를 192.168.1.99:2056
에서 수신 대기 중인 NetFlow 수집기에 전송합니다.
네트워크 흐름 추적을 위한 구성 예
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: exportNetworkFlows: netFlow: collectors: - 192.168.1.99:2056
23.15.2. 네트워크 흐름 수집기 추가
클러스터 관리자는 Pod 네트워크에 대한 네트워크 흐름 메타데이터를 네트워크 흐름 수집기로 전송하도록 CNO(Cluster Network Operator)를 구성할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 흐름 수집기가 있고 수신 대기하는 IP 주소와 포트를 알고 있습니다.
프로세스
네트워크 흐름 수집기 유형과 컬렉터의 IP 주소 및 포트 정보를 지정하는 패치 파일을 생성합니다.
spec: exportNetworkFlows: netFlow: collectors: - 192.168.1.99:2056
네트워크 흐름 수집기를 사용하여 CNO를 구성합니다.
$ oc patch network.operator cluster --type merge -p "$(cat <file_name>.yaml)"
출력 예
network.operator.openshift.io/cluster patched
검증
일반적으로 검증은 필요하지 않습니다. 다음 명령을 실행하여 각 노드의 OVS(Open vSwitch)가 하나 이상의 컬렉터에 네트워크 흐름 레코드를 전송하도록 구성되어 있는지 확인할 수 있습니다.
Operator 구성을 보고
exportNetworkFlows
필드가 구성되었는지 확인합니다.$ oc get network.operator cluster -o jsonpath="{.spec.exportNetworkFlows}"
출력 예
{"netFlow":{"collectors":["192.168.1.99:2056"]}}
각 노드에서 OVS의 네트워크 흐름 구성을 확인합니다.
$ for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node -o jsonpath='{range@.items[*]}{.metadata.name}{"\n"}{end}'); do ; echo; echo $pod; oc -n openshift-ovn-kubernetes exec -c ovnkube-controller $pod \ -- bash -c 'for type in ipfix sflow netflow ; do ovs-vsctl find $type ; done'; done
출력 예
ovnkube-node-xrn4p _uuid : a4d2aaca-5023-4f3d-9400-7275f92611f9 active_timeout : 60 add_id_to_interface : false engine_id : [] engine_type : [] external_ids : {} targets : ["192.168.1.99:2056"] ovnkube-node-z4vq9 _uuid : 61d02fdb-9228-4993-8ff5-b27f01a29bd6 active_timeout : 60 add_id_to_interface : false engine_id : [] engine_type : [] external_ids : {} targets : ["192.168.1.99:2056"]- ...
23.15.3. 네트워크 흐름 수집기의 모든 대상 삭제
클러스터 관리자는 네트워크 흐름 수집기로 네트워크 흐름 메타데이터를 중지하도록 CNO(Cluster Network Operator)를 구성할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
모든 네트워크 흐름 수집기를 제거합니다.
$ oc patch network.operator cluster --type='json' \ -p='[{"op":"remove", "path":"/spec/exportNetworkFlows"}]'
출력 예
network.operator.openshift.io/cluster patched