kubectl edit 명령 permission denied

작성자 박형춘 수정일 2023-09-01 08:33

들어가며

  • kubectl 명령이 사용 가능한 계정으로 edit 옵션을 사용할 때 permission denied 에러가 발생할 수 있습니다.
  • 아래의 가이드를 참고하면 원인과 해결 방안을 확인할 수 있습니다.
  • ABL 생명에서 kubectl edit 사용시 발생했던 현상이며 처음엔 podman 또는 crictl의 설정 영향으로 추측하였으나 원인은 다른곳에 있음을 확인했습니다.



kubectl edit

  • kubectl edit 명령 사용시 기본적으로 /tmp 디렉토리 하위에 임시 yaml 파일을 생성하며 수정이 완료되면(:wq)
    해당 yaml을 apply하여 kube-apiserver에  반영을 요청합니다.

    $ kubectl edit sts 
    
    [다른 세션]
    $ ls -al /tmp |grep kubectl

임시로 생성된 yaml을 수정하므로 복원을 위한 .swp 파일도 같이 생성됨을 확인할 수 있습니다.



TMPDIR 환경변수

  • TMPDIR 환경변수를 변경하면 kubectl edit 명령 사용시 임시 yaml 파일이 생성되는 위치가 변경됩니다.

- 환경변수 등록


  • 이때 변경된 경로에 현재 계정이 write, excute 할 권한이 없다면 permission denied 오류가 발생하게 됩니다.


- ned 일반 계정으로 테스트


  • TMPDIR 경로에 ned 계정이 파일을 생성할 수 있도록 권한을 추가해주면 정상적으로 edit이 가능합니다.
    chmod o+wx /SHARE
    chmod o+wx /SHARE/sparklingsoda
    
    [ned 계정]
    kubectl edit sts 


TMPDIR에 지정한 디렉토리의 상위 경로 모두 wx 권한이 추가되야 합니다.


마치며

  • root 이외의 계정에서 kubectl edit 명령 사용할 때 permission denied 에러가 발생한다면 TMPDIR 환경변수 확인 및 해당 경로에 권한 확인이 필요합니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300