33.5. 안전하지 않은 sysctl 활성화
클러스터 관리자는 고성능 또는 실시간 애플리케이션 튜닝과 같은 매우 특별한 상황에 대해 안전하지 않은 특정 sysctl을 허용할 수 있습니다.
안전하지 않은 sysctl을 사용하려면 클러스터 관리자가 노드에서 개별적으로 활성화해야 합니다. 네임스페이스가 지정된 sysctl만 활성화할 수 있습니다.
Security Context Constraints 의forbiddenSysctls
및 allowedUnsafeSysctls
필드에 sysctls 목록을 지정하여 Pod에서 설정할 수 있는 sysctl을 추가로 제어할 수 있습니다.
-
forbiddenSysctls
옵션은 특정 sysctl을 제외합니다. -
allowedUnsafeSysctls
옵션은 고성능 또는 실시간 애플리케이션 튜닝과 같은 특정 요구 사항을 제어합니다.
안전하지 않은 상태의 특성으로 인해 안전하지 않은 sysctl을 사용하는 경우 사용자가 위험을 감수하는 경우 컨테이너 동작, 리소스 부족 또는 노드 중단과 같은 심각한 문제가 발생할 수 있습니다.
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을 추가합니다.
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 ...
Pod ServiceAccount에 대한 새 SCC 액세스 권한을 부여합니다.
$ oc adm policy add-scc-to-user restricted-sysctls -z default -n your_project_name
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"
노드 서비스를 다시 시작하여 변경 사항을 적용합니다.
# systemctl restart atomic-openshift-node