콤퓨우터/필기: KodeKloud CKA 강의

159. API Groups

파란화면 2024. 5. 17. 00:38
반응형

kubectl get pods 명령어같은 것들은 뒤에서는 kube-apiserver에 6443번 포트, TLS로 붙어서 정보를 받아온다.
즉 kubectl은 뒤에서 GET /api/v1/pods HTTP/1.1 요청을 보내고, JSON으로 데이터가 반환되며, 이것을 예쁘게 가공해서 출력하는것이다.

kubectl version도 마찬가지다. GET /version HTTP/1.1을 보낼것이다.

(실제로는 HTTP 1.1은 아닐 수도 있겠지만, 아무튼)

엔드포인트

이 때 엔드포인트를 잘 보자.

  • /api
    • /api/v1/pods, ...
  • /version
  • /metrics
  • /healthz
  • /apis
  • /logs
    이렇게 쿠버 API는 역할별로 그룹이 나누어져 있는데, 이것이 API Group이다.

 

/api/apis

클러스터 기능에 직접적으로 영향을 주는 API들이다.

  • /api/v1는 코어 그룹이다.
    • namespaces, pods, rc, events, endpoints, nodes, bindings, pv, pvc, configmaps, secrets, services... 같은 코어 기능들.
  • /apis는 조금 더 체계적으로 분류되어있는 API 그룹으로, 신기능들은 이 named group을 통해 제공된다.
    • apps, extensions, networking.k8s.io, storage.k8s.io, authentication.k8s.io, certificates.k8s.io,... 같은 API Groups이 있고
      • 그 하위에 Resources들이 있으며 /apis/apps/v1/deployments, /apis/apps/v1/replicasets, /apis/apps/v1/statefulsets
        • 그 하위에 Verbs, (list, get ,create, delete, update, watch...) 들이 있다.

 

 

curl로 API에 편하게 붙기: kubectl proxy

기본적으로 curl로 API에 붙으려면 클라이언트 인증서, CA 인증서 등등을 파라미터로 덕지덕지 붙여야한다.
이 때 kubectl proxy를 이용하면 kubectl이 대신 인증을 서 주는 프록시를 생성해주므로, 간단하게 curl을 쓸 수 있게 된다.

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

$ curl http://localhost:8001 -k
{
 "paths": [
   "/api",
   ...

kubectl proxykube proxy는 다른 것이므로 주의!

반응형