>

쿠 버네 티스 클러스터의 포드에서 파이썬 서비스를 실행하고 있습니다. 서비스는 환경 변수에서 로그 수준을 받도록 설정됩니다. 이러한 환경 변수는 서비스를 gitlab 파이프 라인에 배포하는 동안 설정됩니다. 디버깅 목적으로 gitlab에서 서비스를 재배치하지 않고 단일 포드에서 env var를 변경하고 다시 시작할 수 있기를 원합니다.

쿠 버네 티스로 옮기기 전에 GUI에서 컨테이너를 설명하기가 매우 쉬운 랜처에서 컨테이너를 실행했습니다. env var 변경->적중 업데이트->컨테이너가 자동으로 다시 시작됩니다.

를 찾았습니다. 이 기사 는

와 같은 명령을 사용하여 복제본 세트를 변경하도록 제안합니다.
kubectl set env rs [REPLICASET_NAME] [ENV_VAR]=[VALUE]

포드를 종료 한 후 env var 세트를 사용하여 다시 생성합니다.

하지만

와이즈 비즈

디버그 목적으로 실행중인 포드에서 env var를 빠르게 변경하려는 목표를 달성하는 유일한 방법입니까?

Never do it on a production system.

Never even do this on a dev environment without taking care in how it may impact your deployment workflow.


  • 답변 # 1

    와이즈 비즈

    짧은 대답 : 예.

    긴 대답 : Rancher를 사용한 적이 없거나 읽은 적이 없지만 복제본 세트 또는 배포 템플릿 env var도 변경되어 포드 업데이트가 트리거 된 것 같습니다. 실제로 포드에서 환경 변수를 변경하는 유일한 방법입니다. 실행중인 컨테이너 또는 실행중인 포드에서 환경 변수를 변경할 수 없습니다. Docker 컨테이너에서는 그렇게 할 수 없으며 Kubernetes에서는 그렇게 할 수 없으므로 Rancher에서는 할 수 없다고 가정합니다. 다른 사양의 포드 만 다시 시작할 수 있습니다.

    왜?

    컨테이너는 호스트 시스템에서 실행되는 프로세스 일뿐입니다. 프로세스가 시작되면 불쾌한 해킹에 의존하지 않고 프로세스 환경을 변경할 수 없습니다.

    dev 또는 prod에서이 작업을 수행하지 않아야한다는 경고가 우려되는 경우 설명 된 Rancher 워크 플로에 동일한 경고가 적용되므로 위험을 감수 할 의사가있는 경우 여기서 다르지 않을 것입니다.

    Is that the only / best way to achieve my goal of quickly changing an env var in a running pod for debug purposes?

관련 자료

  • 이전 python - DateTimeIndexto_period는 많은 오프셋 별칭에 대해 ValueError 예외를 발생시킵니다
  • 다음 react native - Firebase 데이터를 가져 와서 배열에 저장 한 다음 flatlist를 사용하여 표시하는 방법은 무엇입니까?