Kubectl plugin 을 통해 쉽게 pod 의 sudo 권한을 획득해보자

Namhoon Kim
2 min readDec 9, 2020

Kubernetes 를 사용하는 사용자라면 문제 있는 pod 에 대해 debugging 을 하다가 기본적인 tool 이 설치 되어 있지 않아 어려움을 겪어 본 경험이 많을 것이다. 대표적인 예로는 nslookup, vim 등의 기본적인 툴이 없어서 답답했었을 것이다.

일반적인 시나리오에서 Kubernetes 의 Pod security policy 등에 의해 root 권한을 획득하기가 어렵다. 이경우 sudo 권한이 필요한 linux 의 package manager 를 통해 간단하게 툴 설치가 어렵다. 회피하는 방법으로서 pod 이 떠있는 node 에 접속해 docker exec 기능을 통해 root 로 권한을 확대해서 container 에 접속할 경우 sudo 권한을 획득하면 yum, apk 등의 package manager 를이용해 디버깅에 필요한 툴을 설치하고, 문제를 분석할 수 있다.

하지만 node 에 접속해 docker cli 를 이용해 sudo 권한을 획득하는 과정은 상당히 번거롭다. 회사와 같은 enterprise 환경에서는 보안을 위해 local 에서 직접 node 로 접속하는 것을 대부분 막아 놓을 것이다. 이런 경우 kubectl plugin 을 활용하면 좀 더 간단하게 특정 pod 의 sudo 권한을 획득할 수 있다.

먼저 plugin 관리를 쉽게 해주는 krew 를 설치하자. (https://krew.sigs.k8s.io/)

그리고 exec-as 를 설치해보자
(더 좋은 툴이 있을 수 있습니다. 다른 툴과 비교해보진 못했습니다)

그리고 다음과 같이 실행하면 sudo 권한으로 pod 에 접속할 수 있다.

kubectl exec-as $POD_NAME -- sh

--

--