사용자의 명령을 받은 kubectl은 내부적으로 HTTP 요청을 만들어 API 서버를 호출한다. kubectl 공식문서
kubectl
은 Kubernetes 클러스터를 관리하기 위한 CLI 도구로, Kubernetes API 서버와 통신하기 위해 HTTP(S) 요청을 생성합니다. 이 과정은 다음과 같은 단계로 요약할 수 있습니다:
- 명령 실행:
- 사용자가 터미널에서
kubectl
명령을 실행합니다. 예를 들어,kubectl apply -f pod.yaml
.
- 사용자가 터미널에서
- 구성 파일 로드:
kubectl
은~/.kube/config
파일에서 클러스터 정보와 사용자 인증 정보를 로드합니다.- 예시 구성 파일:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
apiVersion: v1 clusters: - cluster: certificate-authority: /path/to/ca.crt server: https://example.com:6443 name: my-cluster contexts: - context: cluster: my-cluster user: my-user namespace: default name: my-context current-context: my-context kind: Config users: - name: my-user user: client-certificate: /path/to/client.crt client-key: /path/to/client.key
- 명령어 해석 및 요청 생성:
kubectl
은 사용자가 입력한 명령어를 해석하여 적절한 HTTP 요청을 생성합니다. 예를 들어,kubectl apply -f pod.yaml
명령어는 새로운 파드를 생성하는POST
요청을/api/v1/namespaces/default/pods
경로에 전송합니다.
- API 서버로 요청 전송:
- 생성된 HTTP(S) 요청이 API 서버로 전송됩니다.
- API 서버의 요청 처리 및 응답 반환:
- API 서버는 요청을 처리하고 결과를 HTTP 응답으로 반환합니다.
kubectl
은 이 응답을 받아 사용자에게 출력합니다.
- API 서버는 요청을 처리하고 결과를 HTTP 응답으로 반환합니다.
예시: kubectl apply -f pod.yaml -v=8
kubectl apply -f pod.yaml -v=8
명령어는 로그 레벨을 8로 설정하여 매우 상세한 디버깅 정보를 출력하도록 합니다. 이 명령어를 실행하면, kubectl
이 API 서버와 주고받는 HTTP 요청과 응답에 대한 자세한 정보를 볼 수 있습니다.
예시 pod.yaml
파일:
1
2
3
4
5
6
7
8
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: nginx
1
kubectl apply -f pod.yaml -v=8
예시 출력:
1
2
3
4
5
6
7
8
9
10
11
I0827 06:51:49.950850 8021 loader.go:375] Config loaded from file: /home/user/.kube/config
I0827 06:51:49.954797 8021 round_trippers.go:420] POST https://example.com:6443/api/v1/namespaces/default/pods
I0827 06:51:49.954817 8021 round_trippers.go:427] Request Headers:
I0827 06:51:49.954821 8021 round_trippers.go:431] Accept: application/json
I0827 06:51:49.954826 8021 round_trippers.go:431] Content-Type: application/json
I0827 06:51:49.954831 8021 round_trippers.go:431] User-Agent: kubectl/v1.19.0 (linux/amd64) kubernetes/e199641
I0827 06:51:49.954831 8021 round_trippers.go:431] Authorization: Bearer <masked>
I0827 06:51:50.141125 8021 round_trippers.go:446] Response Status: 201 Created in 186 milliseconds
I0827 06:51:50.141185 8021 round_trippers.go:449] Response Headers:
I0827 06:51:50.141197 8021 round_trippers.go:452] Content-Type: application/json
I0827 06:51:50.141214 8021 round_trippers.go:452] Date: Fri, 27 Aug 2021 10:51:50 GMT