Unsafe sysctl을 허용하는 Kubernetes 구성

Unsafe sysctl 허용을 제한해 Pod 격리와 노드 안정성을 보호하세요.

설명

Unsafe sysctl은 커널 설정에 따라 Pod 격리나 노드 안정성에 영향을 줄 수 있습니다. 필요한 성능 튜닝이라도 사용하는 Kubernetes·커널 버전과 다른 워크로드에 미치는 영향을 확인해야 합니다. 정책에서 sysctl을 허용하는 것과 Pod가 실제 값을 설정하는 것은 다릅니다.

PodSecurityPolicy는 Kubernetes v1.21에서 사용 중단되었고 v1.25에서 제거되었습니다. 최신 클러스터에서는 Pod Security Admission이나 정책 엔진으로 제한을 적용하세요.

잠재적 영향

  • 잘못된 커널 튜닝 값으로 애플리케이션이나 노드가 불안정해질 수 있습니다.
  • 격리 조건에 따라 다른 Pod나 노드 자원에 영향을 줄 수 있습니다.

해결 방법

  • 불필요한 allowed_unsafe_sysctls 허용을 제거하고 Pod에는 해당 버전에서 안전하다고 분류된 sysctl만 사용하세요.
  • 예외가 필요하면 실제 설정값과 영향을 검토하고 kubelet 허용 목록 및 전용 노드 등으로 사용 범위를 제한하세요.
  • 변경 후 워크로드의 정상 동작과 정책 적용을 확인하세요.

예시

레거시 PodSecurityPolicy의 부분 예시입니다. 해당 API와 공급자를 지원하는 과거 환경에서 허용 목록의 차이를 설명하며, 완전한 정책 구성은 아닙니다.

변경 전

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    allowed_unsafe_sysctls = ["kernel.msg*"]
  }
}

kernel.msg* 계열의 unsafe sysctl을 허용합니다. 이 정책 자체가 sysctl 값을 바꾸는 것은 아닙니다.

변경 후

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    privileged                 = false
    allow_privilege_escalation = false
  }
}

Unsafe sysctl 허용 항목을 제거했습니다. privileged와 allow_privilege_escalation 제한은 별도의 보호 설정입니다.

참조