Kubelet 스트리밍 연결 시간 제한 점검

실제로 적용되는 스트리밍 유휴 시간 제한을 확인하고 불필요한 세션이 오래 남지 않게 관리하세요.

설명

스트리밍 연결에 유효한 유휴 시간 제한이 없으면 exec, attach, port-forward 같은 연결이 필요 이상으로 오래 유지될 수 있습니다. 유휴 연결 제한은 자원 보호와 세션 관리 측면에서 중요합니다.

--streaming-connection-idle-timeout=0은 이 설정이 유효한 이전 버전에서 유휴 시간 제한을 끄는 값이었습니다. 현재 streamingConnectionIdleTimeout은 사용 중단되었으며 효과가 없습니다. 실제 연결을 처리하는 컨테이너 런타임과 관련 구성요소의 지원되는 제한을 확인해야 합니다.

잠재적 영향

  • 정리되지 않는 유휴 연결이 자원을 점유할 수 있습니다.
  • 불필요한 접근 세션이 오래 유지되어 운영 관리가 어려워질 수 있습니다.

해결 방법

  • 실제 Kubernetes 버전과 컨테이너 런타임에서 적용되는 스트리밍 시간 제한을 확인하세요.
  • 지원되는 구성요소의 설정으로 운영 요구에 맞는 유휴 제한을 적용하세요. 효과가 없는 kubelet 옵션 변경만으로 해결되었다고 판단하지 마세요.
  • 디버깅 세션이 정상 동작하고 유휴 연결이 정해진 시간에 종료되는지 확인하세요.

예시

명령 인수를 비교하는 발췌입니다. 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: ["--streaming-connection-idle-timeout=0"]

변경 후

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

설명:

  • 변경 전: 이전 kubelet 설정의 유휴 제한을 0으로 명시합니다. 현재 버전에서 이 값만으로 실제 연결 수명을 판단할 수는 없습니다.
  • 변경 후: 빈 문자열 인수 대신 빈 인수 목록으로 기존 옵션을 생략합니다. 현재 환경의 실효 시간 제한은 런타임 등에서 별도로 확인해야 합니다.

참조