설명
--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 서버 접근 경로의 보안을 대신하지는 않습니다.