이 페이지는 쿠버네티스 API에 대한 개요를 제공한다.
REST API는 쿠버네티스의 근본적인 구조이다. 모든 조작, 컴포넌트 간의 통신과 외부 사용자의 명령은 API 서버에서 처리할 수 있는 REST API 호출이다. 따라서, 쿠버네티스 플랫폼 안의 모든 것은 API 오브젝트로 취급되고, API에 상응하는 항목이 있다.
대부분의 작업은 API에 의존하고 있는 kubectl 커맨드라인 인터페이스 또는 kubeadm과 같은 다른 커맨드라인 툴을 통해 수행할 수 있다. 그러나, REST 호출 사용을 통해서 API에 직접 접근할 수도 있다.
쿠버네티스 API를 사용하는 애플리케이션을 작성하는 경우 클라이언트 라이브러리중 하나의 사용을 고려한다.
필드를 없애거나 리소스 표현을 재구성하기 쉽도록,
쿠버네티스는 /api/v1
이나 /apis/extensions/v1beta1
과 같이
각각 다른 API 경로에서 복수의 API 버전을 지원한다.
아래를 위해 버전은 리소스나 필드 수준보다는 API 수준에서 설정된다.
JSON과 Protobuf 직렬화 스키마 모두 스키마 변경에 대해서 동일한 가이드라인을 따른다. 이후 설명에서는 이 형식 모두를 다룬다.
참고: API 버전 규칙과 소프트웨어 버전 규칙은 간접적으로 연관된다. API와 릴리스 버전 부여에 관한 제안에는 API 버전 규칙과 소프트웨어 버전 규칙 간의 관계가 기술되어 있다.
API 버전의 차이는 수준의 안정성과 지원의 차이를 나타낸다. API 변경 문서에서 각 수준의 기준에 대한 더 많은 정보를 찾을 수 있다.
아래는 각 수준의 기준에 대한 요약이다.
알파(Alpha) 수준:
alpha
가 포함된다. (예: v1alpha1
)베타(Beta) 수준:
beta
가 포함된다. (예: v2beta3
).참고: 베타 기능을 사용해보고 피드백을 제공하자. 일단 베타가 끝나면, 실질적으로 더 많은 변경이 어렵다.
vX
이고 X
는 정수다.API 그룹은 쿠버네티스 API를 더 쉽게 확장하게 해준다. API 그룹은 REST 경로와 직렬화된 객체의 apiVersion
필드에 명시된다.
현재 다음과 같은 다양한 API 그룹이 사용되고 있다:
apiVersion: v1
와 같이 apiVersion
필드에 명시되지 않고 REST 경로 /api/v1
에 있다./apis/$GROUP_NAME/$VERSION
에 있으며 apiVersion: $GROUP_NAME/$VERSION
을 사용한다
(예를 들어 apiVersion: batch/v1
). 지원되는 API 그룹 전체의 목록은 쿠버네티스 API 참조 문서에서 확인할 수 있다.사용자 정의 리소스로 API를 확장하는 경우에는 다음 두 종류의 경로가 지원된다.
특정 리소스와 API 그룹은 기본적으로 활성화되어 있다. 이들은 apiserver에서 --runtime-config
를 설정해서 활성화하거나
비활성화 시킬 수 있다. --runtime-config
는 쉼표로 분리된 값을 허용한다. 예를 들어:
--runtime-config=batch/v1=false
로 설정--runtime-config=batch/v2alpha1
로 설정이 플래그는 apiserver의 런타임 구성을 설명하는 쉼표로 분리된 키=값 쌍의 집합을 허용한다.
참고: 그룹이나 리소스를 활성화 또는 비활성화하려면, apiserver와 controller-manager를 재시작하여--runtime-config
변경을 반영해야 한다.
데몬셋, 디플로이먼트, 스테이트풀셋, 네트워크정책, 파드보안정책 그리고 레플리카셋은 extensions/v1beta1
API 그룹에서 기본적으로 비활성화되어있다.
예시: 디플로이먼트와 데몬셋의 활성화 설정은
--runtime-config=extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true
를 입력한다.
참고: 개별 리소스의 활성화/비활성화는 레거시 문제로extensions/v1beta1
API 그룹에서만 지원된다.
이 페이지가 도움이 되었나요?
피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오. Stack Overflow. 원한다면 GitHub 리포지터리에 이슈를 열어서 문제 리포트 또는 개선 제안이 가능합니다..