1. kubectl 이란?
쿠버네티스 관리자가 쿠버네티스 클러스터를 관리하기 위해서 명령을 내릴 때 kubectl
을 이용한다.
2. kubectl의 기능:
kubectl
로 내린 명령은 control plane
에 있는 kube-apiserver
로 전송되서 명령이 실행된다.
kube-apiserver
는 요청이 오면 etcd
에 Command/Query를 통해서 응답을 작성한다.
kubectl
은 이 응답을 받아서 우리에게 출력해주는 것이다.
3. kubectl 을 사용하기 위한 .kube/config:
kubectl
로 명령을 내리기 위해서는 다음과 같은 추가적인 정보가 있어야한다:
- kubernetes cluster location (명령이 전달될 URL 을 말한다)
- kubernetes credentials (명령을 내리기 위해 필요한 인증을 말한다.)
- Context (명령을 내릴 클러스터를 말한다. Context 는 클러스터 + 사용자 이름 + 네임스페이스의 조합으로 구성된다. 즉 어떤 클러스터에 어떤 자격증명을 내릴 것인지 정하는 것.)
즉 kube-apiserver
로 전달되는 데이터들은 다음과 같다:
kubectl
로 지정한 명령어들과 파라미터들- Context
- Credential
이런 정보들은 홈디렉토리에서 숨겨진 폴더인 .kube
안에 있는 config
파일에 등록되어있다:
- 여기에는 clusterName 과 같은 정보도 추가적으로 들어있다.
apiVersion: v1
kind: Config
clusters:
- name: cluster-name
cluster:
server: https://cluster-api-server-endpoint
users:
- name: user-name
user:
client-certificate: /path/to/cert.pem
client-key: /path/to/key.pem
contexts:
- name: context-name
context:
cluster: cluster-name
user: user-name
current-context: context-name
.kube/config
를 이용해서 Config 정보를 관리할 수 있는 명령어는 다음과 같다:
- 구성 정보 보기:
kubectl config view
- 새 클러스터, 사용자, 컨텍스트 추가:
kubectl config set-cluster
kubectl config set-credentials
kubectl config set-context
- 사용 중인 컨텍스트 변경:
kubectl config use-context
4. kubectl 과 GKE 와의 통합
GKE 와 연결하기 위해선 다음과 같이 명령을 내려야한다:
get-credentials
명령을 통해서 GKE 와 연결을 하기위한 인증 정보를 가지고 온다.- gcloud 명령어는 google cloud shell 에선 기본적으로 설치가 되어있어서 사용할 수 있다.
- 로컬 환경에서 이 명령어들을 실행해서 GKE 와 연결하려면 다음과 같다:
- 1. Google Cloud SDK 설치
- 2.
gcloud init
명령 실행 후 Google 계정 로그인 및 GKE 가 포함된 프로젝트 선택. - 3.
gcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE_NAME]
명령을 실행한다. 그러면.kube/config
에 선택된 클러스터 정보들과 credential 을 기록해준다. - 4. GKE 와 연결할 수 있는 필요 정보를 가지고 왔으니 이후부터는
kubectl
을 통한 명령어를 날릴 수 있음. - 추가: (만약 다른 GKE 에서 다른 클러스터에 접속하고 싶다면
gcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE_NAME]
에서 CLUSTER 와 ZONE 에 대한 정보를 다르게해서 날려야한다.
$ gcloud container clusters \ get-credentials [CLUSTER_NAME] \ --zone [ZONE_NAME]
5. kubectl 명령어 구문:
kubectl
명령어는 다음과 같은 구조로 이뤄진다:
- COMMAND 는 내가 원하는 명령을 말한다. (e.g kubectl describe, get, log, exec 등)
- TYPE 은 명령이 수행될 쿠버네티스 오브젝트를 말한다.
- NAME 은 오브젝트를 식별할 수 있는 이름을 말한다.
- FLAG 는 명령에 좀 더 디테일한 설정을 할 수 있도록 하는 옵션 값이다.
'Kubernetes' 카테고리의 다른 글
Google Kubernetes Engine: Cloud IAM (0) | 2023.11.19 |
---|---|
Google Kubernetes Engine: Authentication and Authorization (0) | 2023.11.19 |
Google Kubernetes Engine: Secret (0) | 2023.11.17 |
Google Kubernetes Engine: ConfigMap (0) | 2023.11.17 |
Google Kubernetes Engine: StatefulSets (0) | 2023.11.17 |