Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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

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

안전하지 않은 sysctl을 사용하려면 클러스터 관리자가 노드에서 개별적으로 활성화해야 합니다. 네임스페이스가 지정된 sysctl만 활성화할 수 있습니다.

Security Context Constraints 의forbiddenSysctlsallowedUnsafeSysctls 필드에 sysctls 목록을 지정하여 Pod에서 설정할 수 있는 sysctl을 추가로 제어할 수 있습니다.

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

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

  1. Node Resources 구성에 설명된 대로 안전하지 않은 sysctl을 적절한 노드 구성 맵 파일의 kubeletArguments 매개변수에 추가합니다.

    예를 들면 다음과 같습니다.

    $ oc edit cm node-config-compute -n openshift-node
    
    ...
        kubeletArguments:
          allowed-unsafe-sysctls: 1
          - "net.ipv4.tcp_keepalive_time"
          - "net.ipv4.tcp_keepalive_intvl"
          - "net.ipv4.tcp_keepalive_probes"
    1
    사용할 안전하지 않은 sysctl을 추가합니다.
  2. restricted SCC의 콘텐츠를 사용하고 안전하지 않은 sysctl을 추가하는 새 SCC를 생성합니다.

    ...
    allowHostDirVolumePlugin: false
    allowHostIPC: false
    allowHostNetwork: false
    allowHostPID: false
    allowHostPorts: false
    allowPrivilegeEscalation: true
    allowPrivilegedContainer: false
    allowedCapabilities: null
    allowedUnsafeSysctls: 1
    - net.ipv4.tcp_keepalive_time
    - net.ipv4.tcp_keepalive_intvl
    - net.ipv4.tcp_keepalive_probes
    ...
    metadata:
      name: restricted-sysctls 2
    ...
    1
    사용할 안전하지 않은 sysctl을 추가합니다.
    2
    SCC의 새 이름을 지정합니다.
  3. Pod ServiceAccount에 대한 새 SCC 액세스 권한을 부여합니다.

    $ oc adm policy add-scc-to-user restricted-sysctls -z default -n your_project_name
  4. Pod의 DeploymentConfig에 안전하지 않은 sysctl을 추가합니다.

    kind: DeploymentConfig
    
    ...
      template:
        ...
        spec:
          containers:
          ...
          securityContext:
            sysctls:
            - name: net.ipv4.tcp_keepalive_time
              value: "300"
            - name: net.ipv4.tcp_keepalive_intvl
              value: "20"
            - name: net.ipv4.tcp_keepalive_probes
              value: "3"
  5. 노드 서비스를 다시 시작하여 변경 사항을 적용합니다.

    # systemctl restart atomic-openshift-node