쿠버네티스확장

쿠버네티스클러스터의동작을변경하는다양한방법

쿠버네티스는매우유연하게구성할수있고확장가능하다。결과적으로쿠버네티스프로젝트를포크하거나코드에패치를제출할필요가거의없다。

이가이드는쿠버네티스클러스터를사용자정의하기위한옵션을설명한다。쿠버네티스클러스터를업무환경의요구에맞게조정하는방법을이해하려는클러스터운영자를대상으로한다。잠재적인플랫폼개발자또는쿠버네티스프로젝트컨트리뷰터인개발자에게도어떤익스텐션(扩展)포인트와패턴이있는지,그리고그것의트레이드오프와제약을이해하는데도움이될것이다。

개요

사용자 정의 방식은 크게 플래그, 로컬 구성 파일 또는 美国石油学会리소스 변경만 포함하는구성과추가프로그램이나서비스실행과관련된익스텐션으로나눌수있다。이문서는주로익스텐션에관한것이다。

구성

구성파일플래그는온라인문서의레퍼런스섹션에각바이너리별로문서화되어있다。

호스팅된쿠버네티스서비스또는매니지드설치환경의배포판에서플래그및구성파일을항상변경할수있는것은아니다。변경가능한경우일반적으로클러스터관리자만변경할수있다。또한향후쿠버네티스버전에서변경될수있으며,이를설정하려면프로세스를다시시작해야할수도있다。이러한이유로다른옵션이없는경우에만사용해야한다。

리소스쿼터파드시큐리티폴리시(PodSecurityPolicy)네트워크폴리시및역할기반접근제어(RBAC)와 같은빌트인정책API (API)内置的政策는 기본적으로 제공되는 쿠버네티스 美国石油学会이다. 美国石油学会는 일반적으로 호스팅된 쿠버네티스 서비스 및 매니지드 쿠버네티스 설치 환경과 함께 사용된다. 그것들은 선언적이며 파드와 같은 다른 쿠버네티스 리소스와 동일한 규칙을 사용하므로, 새로운 클러스터 구성을 반복할 수 있고 애플리케이션과 동일한 방식으로 관리할 수 있다. 또한, 이들 美国石油学会가 안정적인 경우, 다른 쿠버네티스 美国石油学会와 같이정의된지원정책을사용할수있다。이러한이유로인해구성파일플래그보다선호된다。

익스텐션

익스텐션은쿠버네티스를확장하고쿠버네티스와긴밀하게통합되는소프트웨어컴포넌트이다。이들컴포넌트는쿠버네티스가새로운유형과새로운종류의하드웨어를지원할수있게해준다。

대부분의클러스터관리자는쿠버네티스의호스팅또는배포판인스턴스를사용한다。결과적으로대부분의쿠버네티스사용자는익스텐션기능을설치할필요가없고새로운익스텐션기능을작성할필요가있는사람은더적다。

익스텐션패턴

쿠버네티스는클라이언트프로그램을작성하여자동화되도록설계되었다。쿠버네티스API를읽고쓰는프로그램은유용한자동화를제공할수있다。자동화는클러스터상에서또는클러스터밖에서실행할수있다。이문서의지침에따라고가용성과강력한자동화를작성할수있다。자동화는일반적으로호스트클러스터및매니지드설치환경을포함한모든쿠버네티스클러스터에서작동한다。

쿠버네티스와잘작동하는클라이언트프로그램을작성하기위한특정패턴은컨트롤러패턴이라고한다。컨트롤러는일반적으로오브젝트의.spec을읽,고가능한경우수행한다음오브젝트의.status를업데이트한다。

컨트롤러는쿠버네티스의클라이언트이다。쿠버네티스가클라이언트이고원격서비스를호출할때이를웹훅(Webhook)이라고한다。원격서비스를웹훅백엔드라고한다。컨트롤러와마찬가지로웹훅은장애지점을추가한다。

웹훅모델에서쿠버네티스는원격서비스에네트워크요청을한다。바이너리 플러그인모델에서쿠버네티스는바이너리(프로그램)를실행한다。바이너리플러그인은kubelet(예:Flex体积플러그인네트워크플러그인)과kubectl에서사용한다。

아래는익스텐션포인트가쿠버네티스컨트롤플레인과상호작용하는방법을보여주는다이어그램이다。

익스텐션포인트와컨트롤플레인

익스텐션포인트

이다이어그램은쿠버네티스시스템의익스텐션포인트를보여준다。

익스텐션포인트

  1. 사용자는종종kubectl을사용하여쿠버네티스API와상호작용한다。Kubectl플러그인은kubectl바이너리를확장한다。개별사용자의로컬환경에만영향을미치므로사이트전체정책을적용할수는없다。
  2. apiserver는모든요청을처리한다。apiserver의여러유형의익스텐션포인트는요청을인증하거나,콘텐츠를기반으로요청을차단하거나,콘텐츠를편집하고,삭제처리를허용한다。이내용은API접근익스텐션섹션에설명되어있다。
  3. apiserver는다양한종류의리소스를제공한다。豆荚와같은빌트인리소스종류는 쿠버네티스 프로젝트에 의해 정의되며 변경할 수 없다. 직접 정의한 리소스를 추가할 수도 있고,커스텀리소스섹션에설명된대로커스텀리소스라고 부르는 다른 프로젝트에서 정의한 리소스를 추가할 수도 있다. 커스텀 리소스는 종종 美国石油学会접근 익스텐션과 함께 사용된다.
  4. 쿠버네티스스케줄러는파드를배치할노드를결정한다。스케줄링을확장하는몇가지방법이있다。이들은스케줄러익스텐션섹션에설명되어있다。
  5. 쿠버네티스의많은동작은API-Server의클라이언트인컨트롤러(控制器)라는프로그램으로구현된다。컨트롤러는종종커스텀리소스와함께사용된다。
  6. kubelet은서버에서실행되며파드가클러스터네트워크에서자체IP를가진가상서버처럼보이도록한다。네트워크플러그인을 사용하면 다양한 파드 네트워킹 구현이 가능하다.
  7. kubelet은컨테이너의볼륨을마운트및마운트해제한다。새로운유형의스토리지는스토리지플러그인을통해지원될수있다。

어디서부터시작해야할지모르겠다면,이플로우차트가도움이될수있다。일부솔루션에는여러유형의익스텐션이포함될수있다。

익스텐션 플로우차트

API익스텐션

사용자정의유형

새컨트롤러,애플리케이션구성오브젝트또는기타선언적API를정의하고kubectl과같은쿠버네티스도구를사용하여관리하려면쿠버네티스에커스텀리소스를추가하자。

애플리케이션,사용자또는모니터링데이터의데이터저장소로커스텀리소스를사용하지않는다。

커스텀리소스에대한자세한내용은커스텀리소스개념가이드를참고하길바란다。

새로운API와자동화의결합

사용자정의리소스API와컨트롤루프의조합을오퍼레이터(运营商)패턴이라고 한다. 오퍼레이터 패턴은 특정 애플리케이션, 일반적으로 스테이트풀(有状态)애플리케이션을 관리하는 데 사용된다. 이러한 사용자 정의 美国石油学会및 컨트롤 루프를 사용하여 스토리지나 정책과 같은 다른 리소스를 제어할 수도 있다.

빌트인리소스변경

사용자정의리소스를추가하여쿠버네티스API를확장하면추가된리소스는항상새로운API그룹에속한다。기존API그룹을바꾸거나변경할수없다。API를추가해도기존API(예:파드)의동작에직접영향을미치지는않지만API접근익스텐션은영향을준다。

API접근익스텐션

요청이 쿠버네티스 美国石油学会서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은쿠버네티스API에대한접근제어를참고하길바란다。

이러한각단계는익스텐션포인트를제공한다。

쿠버네티스에는이를지원하는몇가지빌트인인증방법이있다。또한인증프록시뒤에있을수있으며인증헤더에서원격서비스로토큰을전송하여확인할수있다(웹훅)。이러한방법은모두인증설명서에설명되어있다。

인증

인증은모든요청의헤더또는인증서를요청하는클라이언트의사용자이름에매핑한다。

쿠버네티스는 몇 가지 빌트인 인증 방법과 필요에 맞지 않는 경우인증웹훅방법을제공한다。

인가

인가는특정사용자리가API소스에서읽고,쓰고,다른작업을수행할수있는지를결정한다。전체리소스레벨에서작동하며임의의오브젝트필드를기준으로구별하지않는다。빌트인인증옵션이사용자의요구를충족시키지못하면인가 웹훅을통해사용자가제공한코드를호출하여인증결정을내릴수있다。

동적어드미션컨트롤

요청이승인된후,쓰기작업인경우어드미션 컨트롤단계도수행된다。빌트인단계외에도몇가지익스텐션이있다。

  • 이미지정책웹훅은컨테이너에서실행할수있는이미지를제한한다。
  • 임의의어드미션컨트롤결정을내리기위해일반적인어드미션웹훅을 사용할 수 있다. 어드미션 웹훅은 생성 또는 업데이트를 거부할 수 있다.

인프라스트럭처익스텐션

스토리지플러그인

Flex卷을 사용하면 库贝莱이 바이너리 플러그인을 호출하여 볼륨을 마운트하도록 함으로써 빌트인 지원 없이 볼륨 유형을 마운트 할 수 있다.

장치 플러그인

장치플러그인은노드가장치 플러그인을통해새로운노드리소스(CPU및메모리와같은빌트인자원외에)를발견할수있게해준다。

네트워크플러그인

노드레——벨의네트워크플러그인을통해다양한네트워킹패브릭을지원할수있다。

스케줄러익스텐션

스케줄러는파드를감시하고파드를노드에할당하는특수한유형의컨트롤러이다。다른쿠버네티스컴포넌트를계속사용하면서기본스케줄러를완전히교체하거나,여러스케줄러를동시에실행할수있다。

이것은중요한부분이며,거의모든쿠버네티스사용자는스케줄러를수정할필요가없다는것을알게된다。

스케줄러는또한웹훅백엔드(스케줄러익스텐션)가파드에대해선택된노드를필터링하고우선순위를지정할수있도록하는웹훅을지원한다。

다음내용

최종수정2021年6月13日凌晨1:50太平洋标准时间:修复ko extension -kubernetes (191506a9f)