API 서버 배경 - 클러스터 안 통신은 API 서버를 통한다
API 서버가 가지고 있는 경로는 API 서버에 접근하여 알 수 있거나, 쿠버네티스 공식 문서 API 문서 에도 나와있다.
아래 명령어를 통해 API 서버의 주소를 알 수 있다.
$ kubernetes cluster-info
Kubenetes master is running at https://192.168.99.100:8443
서버는 https 를 사용하여, 인증이 필요하다. 이 때, kubectl proxy 명령을 이용할 수 있다. kubectl proxy 는 프록시 서버를 실행해, 로컬 컴퓨터에서 HTTP 연결을 수신하고, 이 연결을 관리하면서 API 서버로 전달하기 때문에, 요청할 때마다 인증 토큰을 전달할 필요가 없다.
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
$ curl http://localhost:8001
{
"paths": [
"/api",
"/api/v1",
"/apis",
"/apis/apps",
"/apis/apps/v1beta1",
...
"/apis/batch",
"/apis/batch/v1",
"/apis/batch/v2alpha1",
...
API Groups
쿠버네티스 안 모든 Resource 들은 api 그룹 중 하나로 그룹화되어 있다.
가장 top 레벨에는 core api 그룹과 named apis 그룹이 있다.
core api 그룹은 /api/v1 으로 시작하며, 대부분의 리소스 타입을 여기서 확인할 수 있다.
namespaces, pods, nodes, binidngs, PV, PVC, configmaps, secrets, services, rc, evenets, endpoints 의 리소스를 확인할 수 있다.
named api 그룹은 /apis 로 시작한다. 추후의 추가될 k8s 리소스 타입은 여기에 추가된다고 한다.
API 그룹 아래에 Resource 들이 있으며, 각 resource들은 각 resource 들과 관련된 action을 관련한 verbs 들이 있다.
verbs(동사)는 HTTP 메소드와 아래와 같이 매핑이 된다.
HTTP methodVerb for single resourceVerb for collection
GET, HEAD | get (and watch for watching) | list (and watch) |
POST | create | n/a |
PUT | update | n/a |
PATCH | patch | n/a |
DELETE | delete | deletecollection |
이 내용은 다음에 나올 인가 Authoriazation 관련된 내용이니 숙지하자.
인가 Authoriazation - 무엇을 할 수 있는가?
참고
쿠버네티스 인 액션(마르코 룩샤) 12장
아래 쿠버네티스 공식 문서에서 쿠버네티스 api 를 확인할 수 있다.
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#-strong-api-groups-strong-
'개발자: 지식 정리 > 쿠버네티스' 카테고리의 다른 글
쿠버네티스 클러스터 구성 요소 및 동작 이해 (4) - Kubelet (0) | 2023.01.15 |
---|---|
쿠버네티스 클러스터 구성 요소 및 동작 이해 (3) - 스케줄러, 컨트롤러 (0) | 2023.01.15 |
쿠버네티스 클러스터 구성 요소 및 동작 이해 (2) - API 서버 (0) | 2023.01.15 |
쿠버네티스 클러스터 구성 요소 및 동작 이해 - (1) etcd (0) | 2023.01.15 |
쿠버네티스 클러스터 구성 요소(component)란? (0) | 2022.06.06 |