사용자는 kubectl을 이용하거나 kube-apiserver와 직접 상호작용하여 Kubernetes API를 사용할 수 있다.
예시
- kubenetes 클러스터 버전 확인
curl <MASTER_NODE_URL>/version
# 예시
curl https://kube-master:6443/version
- 포드 목록 확인
curl <MASTER_NODE_URL>/version
# 예시
curl https://kube-master:6443/version
API Group
api resource를 묶어놓은 그룹으로. yaml 파일 작성 시 apiVersion에 명시된다.
Kubernetes API는 상태 모니터링, 메트릭 수집, 로그 등의 목적에 따라 그룹화된다.
목적 | api 경로 | Group | 비고 |
클러스터 상태 모니터링 | /metrics | ||
/healthz | |||
클러스터의 버전 확인 | /version | ||
클러스터 기능 담당 | /api | namespaces, pods, replication controllers, events, endpoints, nodes, bindings, persistent volumes, persistent volume claims, configmaps, secrets, service |
핵심적인(core) group core api는 group을 적시하지 않아도 된다. |
/apis | apps, extensions, networking.k8s.io storage.k8s.io, authentication.k8s.io certificates.k8s.io |
named group 새로운 기능 지원 |
|
써드파티 로깅 연동 | /logs |
Resources란 각 API Group에서 지원하는 자원을 뜻하며, verb는 Resource 요청에 사용하는 api 동사에 해당한다.
API Group 확인
kube-apiserver에 접근
사용자는 경로 없이 kube-apiserver에 접근함으로써 쿠버네티스 클러스터 내에서 사용 가능한 API 그룹을 확인할 수 있다. 단, 인증 없이 요청하는 경우 특정 API를 제외하고는 접근이 허용되지 않는다.
API Group 확인
curl <MASTER_NODE_URL> -k
# 예시
curl https://kube-master:6443 -k
curl https://kube-master:6443 -k \
--key admin.key \
--cert admin.crt \
--cacert ca.crt
api groups 내 resources 확인
경로를 지정하여 kube-apiserver에 접근하면 resource를 확인할 수 있다.
curl <MASTER_NODE_URL>/apis -k | grep name
# 예시
curl https://kube-master:6443/apis -k
kubectl proxy 클라이언트 사용
kubectl proxy 명령어를 실행하면 localhost:8001로 프록시 서비스를 동작시키고, kubeconfig 파일의 자격 증명 및 인증서를 사용하여 클러스터에 접근할 수 있게 한다.
kubectl proxy
# proxy 서비스 접근
curl http://localhost:8001 -k
kube proxy VS kubectl proxy
kube proxy는 클러스터의 서로 다른 노드에 걸쳐 포트와 서비스를 연결할 수 있도록 설정하는 데 사용한다.
kubectl proxy는 kube-apiserver에 접근하기 위해 kubectl에 의해 생성된 http 프록시 서비스이다.
참고 문서
https://www.waytoeasylearn.com/learn/api-groups-in-kubernetes/