API 서버 요청 시간 제한 점검

API 서버의 요청 제한 시간을 정상 처리 시간과 자원 보호 요구에 맞게 설정하세요.

설명

--request-timeout 값이 너무 길면 kube-apiserver가 느린 요청을 오랫동안 유지하게 됩니다. 이 경우 비정상 요청이나 장시간 처리 요청이 API 서버 자원을 오래 점유할 수 있습니다.

적절한 타임아웃은 장애 확산을 줄이고 API 서버 자원 보호에도 도움이 됩니다. 현재 기본값은 1분이며, watch 등 특정 요청에는 별도 시간 제한이 적용될 수 있습니다. 정상 요청을 불필요하게 중단하지 않는 값으로 조정하세요.

잠재적 영향

  • 장시간 요청이 API 서버 연결과 자원을 계속 점유할 수 있습니다.
  • 비정상 요청이나 과부하 상황에서 회복이 느려질 수 있습니다.
  • 너무 짧은 제한은 정상 작업을 중단시킬 수 있습니다.

해결 방법

  • --request-timeout을 실제 처리 시간과 운영 기준에 맞는 값으로 설정하세요.
  • watch 등 별도 제한이 있는 요청과 일반 요청을 구분해 검토하세요.
  • 부하와 타임아웃 오류를 모니터링하고 정상 요청이 완료되는지 시험하세요.

예시

기존 v1.6.0 이미지가 포함된 명령 인수 비교용 발췌입니다. 해당 버전을 배포하라는 권장 사항이 아닙니다. 지원되는 버전과 실제 제어면 설정에 적용하고 필요한 인증서·접속 설정은 별도로 구성하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver"]
      args: ["--request-timeout=6m"]

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver"]
      args: ["--request-timeout=300s"]

설명:

  • 변경 전: 일반 요청의 기본 제한을 6분으로 설정합니다. 이 시간이 실제로 필요한지 확인하세요.
  • 변경 후: 300초, 즉 5분으로 줄입니다. 이는 예시이며 현재 기본값 1분보다 길므로 모든 환경에 권장되는 값은 아닙니다.

참조