들어가며
- 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 환경변수 확인 및 해당 경로에 권한 확인이 필요합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.