kubernetes
pod으로 클러스터 제어
misankim
2023. 3. 7. 00:34
pod으로 클러스터 제어
k8s 생성한 포드가 k8s 클러스터를 제어할 수 있도록 설정
# kubectl 바이너리 설치
kubectl exec -it <pod 이름> -n <포드의 네임스페이스> -- bash
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl
# 권한 부여
## 방법1. kubeconfig 파일을 해당 포드 /root/.kube 디렉토리로 복사
mkdir ~/.kube
rsync -avP <마스터노드아이피>:/etc/kubernetes/admin.conf ~/.kube/config
kubectl cp /root/.kube <pod 이름>:/root/ -n <포드의 네임스페이스>
## 방법2. 포드의 service account 를 클러스터 관리자 역할로 롤바인딩하는 클러스터 롤바인딩 생성
k8s 클러스터 안에 생성된 포드는 기본적으로 자신이 속한 클러스터에 대한 정보를 환경 변수로 가지고 있기 때문에 kubectl 바이너리만 설치해주면 바로 자신이 속한 k8s 클러스터로 접근 가능,
하지만 클러스터롤바인딩이 되어 있지 않다면 접근이 제한적이기 때문에 현재 포드의 service account 에 클러스터 관리자 역할을 바인딩하는 클러스터 롤바인딩 생성이 필요함
kubectl create clusterrolebinding <롤바인딩 이름> --clusterrole cluster-admin --serviceaccount=<포드의 네임스페이스>:default
예시)
kubectl create clusterrolebinding testrolebinding --clusterrole cluster-admin --serviceaccount=test:default
# 확인
kubectl exec -it <pod 이름> -n <포드의 네임스페이스> -- kubectl get node