10.2.3. Network Resources Injector 정보
워크로드에 대한 네트워크 구성을 자동화하려면 Network Resources Injector를 사용합니다. 이 Kubernetes Dynamic Admission Controller는 Pod 생성 요청을 가로채어 클러스터에 정의된 필수 네트워크 리소스 및 매개변수를 자동으로 삽입합니다.
Network Resources Injector는 다음과 같은 기능을 제공합니다.
- SR-IOV 네트워크 연결 정의 주석에 따라 SR-IOV 리소스 이름을 추가하기 위해 Pod 사양의 리소스 요청 및 제한 변경
-
Pod 사양을 Downward API 볼륨으로 변경하여 Pod 주석, 라벨 및 대규모 페이지 요청 및 제한을 노출합니다. pod에서 실행되는 컨테이너는
/etc/podnetinfo경로에 있는 파일로 노출된 정보에 액세스할 수 있습니다.
SR-IOV Network Operator는 SriovOperatorConfig CR에서 enableInjector 가 true 로 설정된 경우 Network Resources Injector를 활성화합니다. network-resources-injector Pod는 모든 컨트롤 플레인 노드에서 데몬 세트로 실행됩니다. 다음은 3개의 컨트롤 플레인 노드가 있는 클러스터에서 실행 중인 Network Resources Injector Pod의 예입니다.
$ oc get pods -n openshift-sriov-network-operator
출력 예
NAME READY STATUS RESTARTS AGE
network-resources-injector-5cz5p 1/1 Running 0 10m
network-resources-injector-dwqpx 1/1 Running 0 10m
network-resources-injector-lktz5 1/1 Running 0 10m
기본적으로 Network Resources Injector webhook의 failurePolicy 필드는 Ignore 로 설정됩니다. 이 기본 설정을 사용하면 Webhook를 사용할 수 없는 경우 Pod 생성이 차단되지 않습니다.
failurePolicy 필드를 Fail 로 설정하고 Network Resources Injector Webhook를 사용할 수 없는 경우 Webhook에서 모든 Pod 생성 및 업데이트 요청을 변경하려고 합니다. 이 동작은 Pod 생성을 차단하고 정상적인 클러스터 작업을 중단할 수 있습니다. 이러한 문제를 방지하기 위해 SriovOperatorConfig 오브젝트에서 featureGates.resourceInjectorMatchCondition 기능을 활성화하여 Network Resources Injector webhook의 범위를 제한할 수 있습니다. 이 기능이 활성화된 경우 Webhook는 보조 네트워크 주석 k8s.v1.cni.cncf.io/networks 가 있는 Pod에만 적용됩니다.
resourceInjectorMatchCondition 기능을 활성화한 후 failurePolicy 필드를 Fail 로 설정하면 웹 후크는 보조 네트워크 주석 k8s.v1.cni.cncf.io/networks 가 있는 Pod에만 적용됩니다. Webhook를 사용할 수 없는 경우에도 클러스터는 이 주석 없이 Pod를 계속 배포합니다. 이로 인해 클러스터 작업이 불필요한 중단이 발생하지 않습니다.
featureGates.resourceInjectorMatchCondition 기능은 기본적으로 비활성화되어 있습니다. 이 기능을 활성화하려면 SriovOperatorConfig 오브젝트에서 featureGates.resourceInjectorMatchCondition 필드를 true 로 설정합니다.
SriovOperatorConfig 오브젝트 구성의 예
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovOperatorConfig
metadata:
name: default
namespace: sriov-network-operator
spec:
# ...
featureGates:
resourceInjectorMatchCondition: true
# ...