Home 사용자의 명령을 받은 kubectl은 내부적으로 HTTP 요청을 만들어 API 서버를 호출한다.
Post
Cancel

사용자의 명령을 받은 kubectl은 내부적으로 HTTP 요청을 만들어 API 서버를 호출한다.

사용자의 명령을 받은 kubectl은 내부적으로 HTTP 요청을 만들어 API 서버를 호출한다. kubectl 공식문서

kubectl은 Kubernetes 클러스터를 관리하기 위한 CLI 도구로, Kubernetes API 서버와 통신하기 위해 HTTP(S) 요청을 생성합니다. 이 과정은 다음과 같은 단계로 요약할 수 있습니다:

  1. 명령 실행:
    • 사용자가 터미널에서 kubectl 명령을 실행합니다. 예를 들어, kubectl apply -f pod.yaml.
  2. 구성 파일 로드:
    • 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
    
  3. 명령어 해석 및 요청 생성:
    • kubectl은 사용자가 입력한 명령어를 해석하여 적절한 HTTP 요청을 생성합니다. 예를 들어, kubectl apply -f pod.yaml 명령어는 새로운 파드를 생성하는 POST 요청을 /api/v1/namespaces/default/pods 경로에 전송합니다.
  4. API 서버로 요청 전송:
    • 생성된 HTTP(S) 요청이 API 서버로 전송됩니다.
  5. API 서버의 요청 처리 및 응답 반환:
    • API 서버는 요청을 처리하고 결과를 HTTP 응답으로 반환합니다. kubectl은 이 응답을 받아 사용자에게 출력합니다.

예시: 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
This post is licensed under CC BY 4.0 by the author.

여러 플로우로 알아보는 k8s 오브젝트들의 동작방식2

api server가 호출받고 etcd에 저장하는 방식

Trending Tags