[CKS] 1-11. API Groups

쿠버네티스 API는 기능별 그룹으로 구성되어 체계적인 리소스 관리와 확장을 지원합니다.

개요

권한 부여를 이해하기 위해선 k8s API Groups를 이해하는게 좋습니다.

k8s api란 api server와 상호작용하기 위한 방법으로 kubectl, REST API 등을 수행했습니다.

Kubernetes API

k8s api는 목적에 따라 여러 그룹으로 나뉩니다.

metrics, health, logs, api, apis 등이 존재하지만, 해당 문서에서는 클러스터 기능을 담당하는 api, apis를 중심으로 정리하였습니다.

자세한 내용은 k8s api 공식 문서에서 확인 가능합니다.


경로 없이 접근되면 사용 가능한 api 확인 가능하며 더 들어가 각 api로 접근하면 리소스 그룹 확인 가능

$ curl http://localhost:6443 -k
{
  "paths": [
    "/api",
    "/api/v1",
    "/apis",
    "/apis/",
    "/healthz",
    "/logs",
    "/metrics",
    "/openapi/v2",
    "/swagger-2.0.0.json"
  ]
}

$ kubectl api-versions

위에서 확인할 수 있듯 k8s api server로 접근하기 위해선 kubectl 혹은 REST API 형식의 호출이 필요합니다. kubectl의 경우 8001번에서 실행되는 프록시를 통해 접근하게 됩니다.

kubectl proxy는 개발자나 관리자의 로컬 머신에서 실행하는 HTTP 프록시 서버입니다.

이것은 k8s 내부에서 실행되는 kube-proxy와는 다릅니다.

kube-proxy는 Kubernetes 클러스터의 모든 노드에서 실행되는 파드(Pod) 또는 데몬입니다.


정리하면 다음과 같습니다.

Kubernetes의 모든 리소스는 기능별 API 그룹으로 체계화되며, 각 그룹은 특정 리소스와 이를 제어하는 작업(verbs)의 집합을 정의합니다.

Hands-on

kubectl proxy --port=8090