Kubernetes 제어 영역 프로파일링 설정 점검

불필요한 성능 진단 기능을 끄고 필요한 진단 경로의 접근을 제한하세요.

설명

--profiling은 kube-apiserver와 kube-controller-manager 등의 성능 프로파일링 기능을 제어합니다. 진단에 유용하지만 불필요하게 활성화된 기능에 과도한 접근 권한까지 허용하면 운영 정보가 노출될 수 있습니다. 설정을 생략했는지만 보지 말고 실행 버전의 기본값과 실제 설정을 확인해야 합니다.

잠재적 영향

  • 진단 엔드포인트에 접근할 수 있는 주체가 내부 실행 정보를 확인할 수 있습니다.
  • 불필요한 진단 기능이 운영 중 관리해야 할 접근 경로를 늘릴 수 있습니다.

해결 방법

  • 성능 분석에 필요하지 않다면 kube-apiserver와 kube-controller-manager의 --profiling=false를 설정하세요. KubeSchedulerConfiguration을 사용한다면 해당 버전의 enableProfiling: false 설정을 적용하세요.
  • 필요한 진단 기능에는 인증·인가와 네트워크 접근 제한을 적용하세요. 일시적으로 켰다면 분석 후 원래 설정으로 되돌리고 실제 실행 설정을 확인하세요.

예시

v1.30.0의 프로파일링 인자만 비교하는 기존 발췌입니다. API 서버의 인증·저장소·네트워크 등 나머지 설정은 생략했습니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --profiling=true

프로파일링을 활성화합니다. 실제 노출 범위는 진단 경로의 접근 통제에 따라 달라집니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --profiling=false

프로파일링을 비활성화합니다. 다른 API 서버 접근 경로의 보안을 대신하지는 않습니다.

참조