17장. 튜닝 플러그인을 사용하여 시스템 제어 및 인터페이스 속성 구성


Linux에서 sysctl을 사용하면 관리자가 런타임 시 커널 매개변수를 수정할 수 있습니다. CNI(Container Network Interface) 메타 플러그인을 사용하여 인터페이스 수준 네트워크 sysctl을 수정할 수 있습니다. 튜닝 CNI 메타 플러그인은 설명된 대로 기본 CNI 플러그인을 사용하여 체인에서 작동합니다.

CNI 플러그인

기본 CNI 플러그인은 인터페이스를 할당하고 런타임 시 튜닝 CNI 메타 플러그인에 이 인터페이스를 전달합니다. 조정 CNI 메타 플러그인을 사용하여 네트워크 네임스페이스에서 불규칙 모드, all-multicast 모드, MTU 및 MAC 주소와 같은 일부 sysctl 및 여러 인터페이스 속성을 변경할 수 있습니다.

17.1. 튜닝 CNI를 사용하여 시스템 제어 구성

다음 절차에서는 인터페이스 수준 네트워크 net.ipv4.conf.IFNAME.accept_redirects sysctl을 변경하도록 튜닝 CNI를 구성합니다. 이 예에서는 ICMP 리디렉션 패킷을 수락하고 전송할 수 있습니다. 조정 CNI 메타 플러그인 구성에서 인터페이스 이름은 IFNAME 토큰으로 표시되고 런타임 시 인터페이스의 실제 이름으로 교체됩니다.

프로세스

  1. 다음 콘텐츠를 사용하여 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
           "sysctl": {
                "net.ipv4.conf.IFNAME.accept_redirects": "1" 7
            }
          }
         ]
    }
    1
    생성할 추가 네트워크 연결의 이름을 지정합니다. 이름은 지정된 네임스페이스 내에서 고유해야 합니다.
    2
    오브젝트가 연결된 네임스페이스를 지정합니다.
    3
    CNI 사양 버전을 지정합니다.
    4
    구성 이름을 지정합니다. 구성 이름과 네트워크 연결 정의의 name 값과 일치하는 것이 좋습니다.
    5
    구성할 기본 CNI 플러그인의 이름을 지정합니다.
    6
    CNI 메타 플러그인의 이름을 지정합니다.
    7
    설정할 sysctl을 지정합니다. 인터페이스 이름은 IFNAME 토큰으로 표시되고 런타임 시 인터페이스의 실제 이름으로 교체됩니다.

    YAML 파일의 예는 다음과 같습니다.

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: tuningnad
      namespace: default
    spec:
      config: '{
        "cniVersion": "0.4.0",
        "name": "tuningnad",
        "plugins": [{
          "type": "bridge"
          },
          {
          "type": "tuning",
          "sysctl": {
             "net.ipv4.conf.IFNAME.accept_redirects": "1"
            }
        }
      ]
    }'
  2. 다음 명령을 실행하여 YAML을 적용합니다.

    $ oc apply -f tuning-example.yaml

    출력 예

    networkattachmentdefinition.k8.cni.cncf.io/tuningnad created

  3. 다음과 유사한 네트워크 연결 정의를 사용하여 examplepod.yaml 과 같은 Pod를 생성합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: tunepod
      namespace: default
      annotations:
        k8s.v1.cni.cncf.io/networks: tuningnad 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
    runAsUser 는 컨테이너가 실행되는 사용자 ID를 제어합니다.
    3
    runAsGroup 은 컨테이너가 실행되는 기본 그룹 ID를 제어합니다.
    4
    allowPrivilegeEscalation 은 Pod에서 권한 에스컬레이션을 허용하도록 요청할 수 있는지 여부를 결정합니다. 지정되지 않은 경우 기본값은 true입니다. 이 부울은 no_new_privs 플래그가 컨테이너 프로세스에 설정되는지 여부를 직접 제어합니다.
    5
    기능을 사용하면 전체 root 액세스 권한을 부여하지 않고 권한 있는 작업을 수행할 수 있습니다. 이 정책은 모든 기능이 Pod에서 삭제되도록 합니다.
    6
    runAsNonRoot: true 를 사용하려면 컨테이너가 0 이외의 UID가 있는 사용자로 실행해야 합니다.
    7
    RuntimeDefault 는 Pod 또는 컨테이너 워크로드에 대한 기본 seccomp 프로필을 활성화합니다.
  4. 다음 명령을 실행하여 yaml을 적용합니다.

    $ oc apply -f examplepod.yaml
  5. 다음 명령을 실행하여 Pod가 생성되었는지 확인합니다.

    $ oc get pod

    출력 예

    NAME      READY   STATUS    RESTARTS   AGE
    tunepod   1/1     Running   0          47s

  6. 다음 명령을 실행하여 Pod에 로그인합니다.

    $ oc rsh tunepod
  7. 구성된 sysctl 플래그의 값을 확인합니다. 예를 들어 다음 명령을 실행하여 net.ipv4.conf.net1.accept_redirects 값을 찾습니다.

    sh-4.4# sysctl net.ipv4.conf.net1.accept_redirects

    예상 출력

    net.ipv4.conf.net1.accept_redirects = 1

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.