DevOps/Kubernetes

[k8s]local에서 kubectl로 GKE 사용 소소꿀팁

kubectl?


kubectl의 정의에 대해서 공식문서를 참조하면,

Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구이다. 구성을 위해, kubectl 은 config 파일을 $HOME/.kube 에서 찾는다.

라고 적혀있습니다. 즉, 클러스터가 local에서 구동되는지 Cloud Computing으로 구동되는 Cluster인지 설정이 가능합니다.

현재 저는 MacBook Pro 13 (2 GHz Quad-Core Intel Core i5, 16 GB 3733 MHz LPDDR4X)로 kubernetes를 local로 3개이상의 노드 구성에 조금 힘든점이 있어서 GKE를 사용중입니다. (돌아가긴하지만.. Fan도 같이 돌아가는 아주 멋진 현상🏇)


kubectl에는 context가 있습니다.


기본적으로 kubectl의 config파일 위치는 $HOME/.kube 입니다. 구성파일 내부에 보면 현재 어떤 cluster를 사용중임을 의미하는 current-context 정보가 담겨있습니다.

현재 저는 minikube를 사용중입니다.

$ cat ~/.kube/config | yq e '.current-context' -
minikube

GKE에서 cluster를 생성하고 나면 GCP에서 제공하는 Cloud Shell을 통해서 브라우저로 쉘 접근을 가능하게 합니다.

여기서 이 연결에 관련된 명령어를 Local Terminal에서 실행하게되면 GKE에 생성된 Cluster로 current-context가 변경되면서 로컬 kubectl명령어를 사용하면 명령정보들은 GKE에 있는 Cluster에서 동작하게 됩니다.(☝️ 단, gcloud sdk가 사전에 설치되어 있어야합니다.)



정상적으로 변경되었는지 확인해보겠습니다.

$ gcloud container clusters get-credentials cluster-1 --zone asia-northeast3-a --project iamjjanga-gke-test-<...>
Fetching cluster endpoint and auth data.
kubeconfig entry generated for cluster-1.

$ kubectl config current-context
gke_iamjjanga-gke-test-<...>_asia-northeast3-a_cluster-1

테스트를 마치고 GKE 클러스터 삭제하고 난뒤, 다시 Local 환경으로 되돌아오고 싶으면 context를 다시 Local로 바라보게 변경하면됩니다.

$ kubectl config use-context minikube
Switched to context "minikube".

$ kubectl config current-context
minikube

다른 소소한 팁있으시면 댓글 남겨주시면 감사합니다.😀