17.2. 튜닝 CNI를 사용하여 모든 멀티 캐스트 모드 활성화
CNI(Container Network Interface) 메타 플러그인을 사용하여 all-multicast 모드를 활성화할 수 있습니다.
다음 절차에서는 all-multicast 모드를 활성화하도록 튜닝 CNI를 구성하는 방법을 설명합니다.
프로세스
다음 콘텐츠를 사용하여
tuning-example.yaml
과 같은 네트워크 연결 정의를 생성합니다.apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: <name> 1 namespace: default 2 spec: config: '{ "cniVersion": "0.4.0", 3 "name": "<name>", 4 "plugins": [{ "type": "<main_CNI_plugin>" 5 }, { "type": "tuning", 6 "allmulti": true 7 } } ] }
YAML 파일의 예는 다음과 같습니다.
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: setallmulti namespace: default spec: config: '{ "cniVersion": "0.4.0", "name": "setallmulti", "plugins": [ { "type": "bridge" }, { "type": "tuning", "allmulti": true } ] }'
다음 명령을 실행하여 YAML 파일에 지정된 설정을 적용합니다.
$ oc apply -f tuning-allmulti.yaml
출력 예
networkattachmentdefinition.k8s.cni.cncf.io/setallmulti created
다음
examplepod.yaml
샘플 파일에 지정된 것과 유사한 네트워크 연결 정의를 사용하여 Pod를 생성합니다.apiVersion: v1 kind: Pod metadata: name: allmultipod namespace: default annotations: k8s.v1.cni.cncf.io/networks: setallmulti 1 spec: containers: - name: podexample image: centos command: ["/bin/bash", "-c", "sleep INF"] securityContext: runAsUser: 2000 2 runAsGroup: 3000 3 allowPrivilegeEscalation: false 4 capabilities: 5 drop: ["ALL"] securityContext: runAsNonRoot: true 6 seccompProfile: 7 type: RuntimeDefault
- 1
- 구성된
NetworkAttachmentDefinition
의 이름을 지정합니다. - 2
- 컨테이너가 실행되는 사용자 ID를 지정합니다.
- 3
- 컨테이너가 실행되는 기본 그룹 ID를 지정합니다.
- 4
- Pod에서 권한 에스컬레이션을 요청할 수 있는지 여부를 지정합니다. 지정되지 않은 경우 기본값은
true
입니다. 이 부울은no_new_privs
플래그가 컨테이너 프로세스에 설정되는지 여부를 직접 제어합니다. - 5
- 컨테이너 기능을 지정합니다.
drop: ["ALL"]
설명은 모든 Linux 기능이 Pod에서 삭제되어 보다 제한적인 보안 프로필을 제공합니다. - 6
- 컨테이너가 0 이외의 UID가 있는 사용자로 실행되도록 지정합니다.
- 7
- 컨테이너의 seccomp 프로필을 지정합니다. 이 경우 유형은
RuntimeDefault
로 설정됩니다. seccomp는 프로세스에서 사용할 수 있는 시스템 호출을 제한하여 공격 면적을 최소화하여 보안을 강화하는 Linux 커널 기능입니다.
다음 명령을 실행하여 YAML 파일에 지정된 설정을 적용합니다.
$ oc apply -f examplepod.yaml
다음 명령을 실행하여 Pod가 생성되었는지 확인합니다.
$ oc get pod
출력 예
NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23s
다음 명령을 실행하여 Pod에 로그인합니다.
$ oc rsh allmultipod
다음 명령을 실행하여 Pod와 관련된 모든 인터페이스를 나열합니다.
sh-4.4# ip link
출력 예
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8901 qdisc noqueue state UP mode DEFAULT group default link/ether 0a:58:0a:83:00:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0 1 3: net1@if24: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether ee:9b:66:a4:ec:1d brd ff:ff:ff:ff:ff:ff link-netnsid 0 2