7.9.7. 안전하지 않은 sysctl 활성화


클러스터 관리자는 고성능 또는 실시간 애플리케이션 튜닝과 같이 매우 특별한 상황에 대해 안전하지 않은 특정 sysctl을 허용할 수 있습니다.

안전하지 않은 sysctl을 사용하려면 클러스터 관리자가 특정 유형의 노드에 대해 개별적으로 활성화해야 합니다. sysctl에 네임스페이스가 지정되어 있어야 합니다.

보안 컨텍스트 제약 조건의 allowedUnsafeSysctls 필드에 sysctl 또는 sysctl 패턴 목록을 지정하여 Pod에 설정된 sysctl을 추가로 제어할 수 있습니다.

  • allowedUnsafeSysctls 옵션은 고성능 또는 실시간 애플리케이션 튜닝과 같은 특정 요구 사항을 제어합니다.
주의

안전하지 않은 상태의 특성으로 인해 안전하지 않은 sysctl을 사용하는 경우 사용자가 위험을 감수해야 하고 부적절한 컨테이너 동작, 리소스 부족 또는 노드 중단과 같은 심각한 문제가 발생할 수 있습니다.

프로세스

  1. OpenShift Container Platform 클러스터의 기존 MachineConfig 개체를 나열하여 다음 명령을 실행하여 머신 구성에 레이블을 지정하는 방법을 결정합니다.

    $ oc get machineconfigpool

    출력 예

    NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master   rendered-master-bfb92f0cd1684e54d8e234ab7423cc96   True      False      False      3              3                   3                     0                      42m
    worker   rendered-worker-21b6cb9a0f8919c88caf39db80ac1fce   True      False      False      3              3                   3                     0                      42m

  2. 안전하지 않은 sysctl이 있는 컨테이너가 다음 명령을 실행하여 실행되는 머신 구성 풀에 레이블을 추가합니다.

    $ oc label machineconfigpool worker custom-kubelet=sysctl
  3. KubeletConfig CR(사용자 정의 리소스)을 정의하는 YAML 파일 set-sysctl-worker.yaml 을 생성합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: custom-kubelet
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: sysctl 
    1
    
      kubeletConfig:
        allowedUnsafeSysctls: 
    2
    
          - "kernel.msg*"
          - "net.core.somaxconn"
    1
    머신 구성 풀에서 라벨을 지정합니다.
    2
    허용할 안전하지 않은 sysctl을 나열합니다.
  4. 다음 명령을 실행하여 오브젝트를 생성합니다.

    $ oc apply -f set-sysctl-worker.yaml
  5. Machine Config Operator가 새로 렌더링된 구성을 생성하고 다음 명령을 실행하여 머신에 적용할 때까지 기다립니다.

    $ oc get machineconfigpool worker -w

    잠시 후 UPDATING 상태가 True에서 False로 변경됩니다.

    NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    worker   rendered-worker-f1704a00fc6f30d3a7de9a15fd68a800   False     True       False      3              2                   2                     0                      71m
    worker   rendered-worker-f1704a00fc6f30d3a7de9a15fd68a800   False     True       False      3              2                   3                     0                      72m
    worker   rendered-worker-0188658afe1f3a183ec8c4f14186f4d5   True      False      False      3              3                   3                     0                      72m
  6. 다음 예와 같이 예제 Pod를 정의하는 YAML 파일 sysctl-example-safe-unsafe.yaml 을 생성합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: sysctl-example-safe-unsafe
    spec:
      containers:
      - name: podexample
        image: centos
        command: ["bin/bash", "-c", "sleep INF"]
        securityContext:
          runAsUser: 2000
          runAsGroup: 3000
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
        sysctls:
        - name: kernel.shm_rmid_forced
          value: "0"
        - name: net.core.somaxconn
          value: "1024"
        - name: kernel.msgmax
          value: "65536"
  7. 다음 명령을 실행하여 Pod를 생성합니다.

    $ oc apply -f sysctl-example-safe-unsafe.yaml

    예상 출력

    Warning: would violate PodSecurity "restricted:latest": forbidden sysctls (net.core.somaxconn, kernel.msgmax)
    pod/sysctl-example-safe-unsafe created

  8. 다음 명령을 실행하여 Pod가 생성되었는지 확인합니다.

    $ oc get pod

    출력 예

    NAME                         READY   STATUS    RESTARTS   AGE
    sysctl-example-safe-unsafe   1/1     Running   0          19s

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

    $ oc rsh sysctl-example-safe-unsafe
  10. 구성된 sysctl 플래그의 값을 확인합니다. 예를 들어 다음 명령을 실행하여 net.core.somaxconn 값을 찾습니다.

    sh-4.4# sysctl net.core.somaxconn

    예상 출력

    net.core.somaxconn = 1024

안전하지 않은 sysctl이 허용되고 값이 업데이트된 Pod 사양의 securityContext 사양에 정의된 대로 설정됩니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동