Kubelet 커널 설정 보호 방식 점검

노드 커널 설정을 사전에 관리하고 kubelet의 자동 조정 여부를 확인하세요.

설명

--protect-kernel-defaults=false이면 kubelet은 자신이 기대하는 일부 커널 설정값과 다른 값을 조정하려고 합니다. true이면 자동으로 바꾸는 대신 불일치 시 오류를 반환합니다. 모든 커널 설정이나 워크로드의 sysctl 변경을 보호하는 기능은 아닙니다.

커널 파라미터는 노드 전체에 영향을 줄 수 있으므로 승인된 노드 기준으로 관리해야 합니다. 자동 조정을 막으려면 필요한 값을 먼저 설정한 뒤 보호 옵션을 활성화하세요.

잠재적 영향

  • 자동 조정이 운영자가 관리하는 노드 설정과 충돌할 수 있습니다.
  • 준비 없이 보호 옵션을 켜면 설정 불일치로 kubelet 시작에 실패할 수 있습니다.

해결 방법

  • 노드 버전에서 kubelet이 요구하는 커널 값을 확인하고 승인된 설정 관리 절차로 적용하세요.
  • 자동 조정을 막아야 한다면 protectKernelDefaults: true 또는 기존 --protect-kernel-defaults=true를 설정하세요.
  • 변경 후 kubelet 시작과 노드 상태를 확인하고, 워크로드의 sysctl 권한은 별도로 제한하세요.

예시

명령 인수를 비교하는 발췌입니다. foo/bar는 예시 이미지이며, 이 Pod를 배포하는 것만으로 노드 kubelet이 재설정되지는 않습니다. 실제 노드의 지원되는 버전과 설정 방식에 적용하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: foo/bar
      command: ["kubelet"]
      args: ["--protect-kernel-defaults=false"]

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: foo/bar
      command: ["kubelet"]
      args: ["--protect-kernel-defaults=true"]

설명:

  • 변경 전: 기대값과 다른 커널 설정을 kubelet이 조정하려고 합니다. 이것이 곧 임의의 워크로드 커널 변경 허용을 뜻하지는 않습니다.
  • 변경 후: 불일치 시 오류를 반환하도록 합니다. 필요한 커널 값이 먼저 준비되어 있어야 합니다.

참조