설명
--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이 조정하려고 합니다. 이것이 곧 임의의 워크로드 커널 변경 허용을 뜻하지는 않습니다.
- 변경 후: 불일치 시 오류를 반환하도록 합니다. 필요한 커널 값이 먼저 준비되어 있어야 합니다.