리셋 되지 말자

[kubernetes] kubectl 본문

오케스트레이션

[kubernetes] kubectl

kyeongjun-dev 2021. 7. 14. 17:27

kubectl

쿠버네티스 클러스터에 명령을 내리는 역할을 함.

쿠버네티스 클러스터를 이루는 다른 구성 요소들과는 다르게 바로 실행되는 형태인 바이너리로 배포됨. 따라서 반드시 마스터 노드에 있을 필요는 없음.

통상적으로 API 서버와 주로 통신하므로 API서버가 위치하는 마스터 노드에 구성할 때가 많다 - 비확실

kubectl은 API 서버를 통해 쿠버네티스에 명령을 내림. 즉 API 서버의 접속 정보만 있다면 어느 곳에서든 쿠버네티스 클러스터에 명령을 내릴 수 있음

 

- master 노드에서의 kubectl 명령

[vagrant@m-k8s ~]$ kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[vagrant@m-k8s ~]$ sudo kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
m-k8s    Ready    master   28h   v1.18.4
w1-k8s   Ready    <none>   28h   v1.18.4
w2-k8s   Ready    <none>   27h   v1.18.4
w3-k8s   Ready    <none>   57m   v1.18.4

 

- worker 노드에서의 kubectl 명령

[vagrant@w3-k8s ~]$ kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

명령어 사용 안됨. 쿠버네티스 클러스터의 정보를 kubectl이 알지 못하기 때문.

[vagrant@w3-k8s ~]$ scp root@m-k8s:/etc/kubernetes/admin.conf .
root@m-k8s's password: 
admin.conf                                                                                                                                                                                       100% 5452     6.0MB/s   00:00    
[vagrant@w3-k8s ~]$ ls
admin.conf  install_pkg.sh
[vagrant@w3-k8s ~]$ kubectl get nodes --kubeconfig admin.conf 
NAME     STATUS   ROLES    AGE   VERSION
m-k8s    Ready    master   28h   v1.18.4
w1-k8s   Ready    <none>   28h   v1.18.4
w2-k8s   Ready    <none>   28h   v1.18.4
w3-k8s   Ready    <none>   60m   v1.18.4

쿠버네티스 클러스터의 정보가 있는 admin.conf 파일을 마스터 노드에서 가져옴.
kubectl get nodes 명령어에 쿠버네티스 클러스터 정보를 입력받는 옵션인 --kubeconfig와 admin.conf를 입력하고 실행.
노드 정보가 정상적으로 출력됨.

정리 : kubectl을 실행하려면, API서버로의 접속 정보가 필요함. 이 정보만 있다면 어디서든 쿠버네티스에 명령 내리는것이 가능

Comments