Merge pull request #28061 from kubernetes/dev-1.21-ko.2
[ko] 2nd Korean localization work for v1.21
This commit is contained in:
@@ -1 +1 @@
|
|||||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 215.9892 128.40633"><defs><style>.cls-1{fill:#f9f9f9;}.cls-2{fill:#4c81c2;}</style></defs><title>ibm_featured_logo</title><rect class="cls-1" x="-5.9997" y="-8.99955" width="229.48853" height="143.9928"/><polygon class="cls-2" points="190.441 33.693 162.454 33.693 164.178 28.868 190.441 28.868 190.441 33.693"/><path class="cls-2" d="M115.83346,28.867l25.98433-.003,1.7014,4.83715c.01251-.00687-27.677.00593-27.677,0C115.84224,33.69422,115.82554,28.867,115.83346,28.867Z"/><path class="cls-2" d="M95.19668,28.86593A18.6894,18.6894,0,0,1,106.37358,33.7s-47.10052.00489-47.10052,0V28.86488Z"/><rect class="cls-2" x="22.31176" y="28.86593" width="32.72063" height="4.82558"/><path class="cls-2" d="M190.44115,42.74673h-31.194s1.70142-4.79994,1.691-4.80193h29.50305Z"/><polygon class="cls-2" points="146.734 42.753 115.832 42.753 115.832 37.944 145.041 37.944 146.734 42.753"/><path class="cls-2" d="M110.04127,37.94271a12.47,12.47,0,0,1,1.35553,4.80214H59.28193V37.94271Z"/><rect class="cls-2" x="22.31176" y="37.94271" width="32.72063" height="4.80214"/><polygon class="cls-2" points="156.056 51.823 157.768 46.998 181.191 47.005 181.191 51.812 156.056 51.823"/><polygon class="cls-2" points="148.237 46.997 149.944 51.823 125.046 51.823 125.046 46.997 148.237 46.997"/><path class="cls-2" d="M111.81,46.99627a15.748,15.748,0,0,1-.68923,4.82641H96.85137V46.99627Z"/><rect class="cls-2" x="31.43162" y="47.01973" width="14.06406" height="4.8019"/><rect class="cls-2" x="68.7486" y="46.99627" width="14.03976" height="4.82537"/><path class="cls-2" d="M138.87572,57.03292s.004,3.65225.001,3.65913H125.04558V55.89h26.35583l1.637,4.4773c.00773.00292,1.57841-4.48815,1.58153-4.47835h26.56223V60.692h-13.763c-.00124-.00687-.00771-3.65819-.00771-3.65819l-1.273,3.65819-25.99183-.00687Z"/><path class="cls-2" d="M68.7486,55.889h40.30365v-.00188a18.13723,18.13723,0,0,1-3.99812,4.80494s-36.30647.00668-36.30647,0Z"/><rect class="cls-2" x="31.43162" y="55.88794" width="14.06406" height="4.80316"/><rect class="cls-2" x="167.41912" y="64.94348" width="13.76302" height="4.80212"/><path class="cls-2" d="M138.87572,64.94348H125.04558V69.7456c-.00688-.0025,13.83411.00167,13.83411,0C138.87969,69.7431,138.89532,64.94348,138.87572,64.94348Z"/><path class="cls-2" d="M164.63927,64.94348c-.06255-.007-1.61218,4.79962-1.67723,4.80212l-19.60378.00835c-.01543-.00751-1.72371-4.81745-1.725-4.81047Z"/><path class="cls-2" d="M68.74672,64.94233H104.985a23.7047,23.7047,0,0,1,4.32076,4.80327c.06609-.0025-40.5581.00167-40.5581,0Z"/><path class="cls-2" d="M45.49359,69.74436v-4.802H31.45487V69.7431Z"/><rect class="cls-2" x="167.41912" y="73.99693" width="13.76198" height="4.80295"/><rect class="cls-2" x="125.04474" y="73.99693" width="13.83097" height="4.80212"/><path class="cls-2" d="M159.74351,78.8224c.00376-.02169,1.69745-4.82964,1.72373-4.82547H144.80219c-.029-.00209,1.70848,4.80378,1.70848,4.80378S159.7404,78.84241,159.74351,78.8224Z"/><path class="cls-2" d="M68.74766,78.79905c0,.01919-.00094-4.80212,0-4.803H82.9958s.01272,4.80462,0,4.80462C82.98224,78.80072,68.74766,78.79489,68.74766,78.79905Z"/><path class="cls-2" d="M111.30529,73.9961a13.94783,13.94783,0,0,1,.89542,4.825H97.10364v-4.825Z"/><rect class="cls-2" x="31.45487" y="73.9961" width="14.03872" height="4.80171"/><rect class="cls-2" x="167.41912" y="82.86525" width="23.0212" height="4.80421"/><rect class="cls-2" x="115.83139" y="82.86525" width="23.04432" height="4.80421"/><polygon class="cls-2" points="156.647 87.669 149.618 87.669 147.931 82.865 158.272 82.865 156.647 87.669"/><path class="cls-2" d="M22.3099,82.86525v4.80212H55.008c.01366.00751-.01469-4.79919,0-4.79919Z"/><path class="cls-2" d="M111.60237,82.86525c-.3442,1.58445-.65962,3.5158-1.81732,4.80421l-.43175-.00209H59.28005V82.86525Z"/><polygon class="cls-2" points="153.461 96.733 152.814 96.733 151.171 91.92 155.147 91.92 153.461 96.733"/><rect class="cls-2" x="167.41788" y="91.91953" width="23.02244" height="4.82547"/><path class="cls-2" d="M59.27307,96.73333V91.92745s47.24073.00585,47.37623.00585A17.945,17.945,0,0,1,94.43864,96.745l-35.15859-.00959"/><rect class="cls-2" x="115.83139" y="91.91953" width="23.04432" height="4.82547"/><path class="cls-2" d="M55.008,91.94079s-.01469,4.79253,0,4.79253c.01366,0-32.6885.0196-32.69809.00961-.00888-.00961.00875-4.81548,0-4.81548S54.9933,91.95664,55.008,91.94079Z"/></svg>
|
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 215.9892 128.40633"><defs><style>.cls-1{fill:transparent;}.cls-2{fill:#4c81c2;}</style></defs><title>ibm_featured_logo</title><rect class="cls-1" x="-5.9997" y="-8.99955" width="229.48853" height="143.9928"/><polygon class="cls-2" points="190.441 33.693 162.454 33.693 164.178 28.868 190.441 28.868 190.441 33.693"/><path class="cls-2" d="M115.83346,28.867l25.98433-.003,1.7014,4.83715c.01251-.00687-27.677.00593-27.677,0C115.84224,33.69422,115.82554,28.867,115.83346,28.867Z"/><path class="cls-2" d="M95.19668,28.86593A18.6894,18.6894,0,0,1,106.37358,33.7s-47.10052.00489-47.10052,0V28.86488Z"/><rect class="cls-2" x="22.31176" y="28.86593" width="32.72063" height="4.82558"/><path class="cls-2" d="M190.44115,42.74673h-31.194s1.70142-4.79994,1.691-4.80193h29.50305Z"/><polygon class="cls-2" points="146.734 42.753 115.832 42.753 115.832 37.944 145.041 37.944 146.734 42.753"/><path class="cls-2" d="M110.04127,37.94271a12.47,12.47,0,0,1,1.35553,4.80214H59.28193V37.94271Z"/><rect class="cls-2" x="22.31176" y="37.94271" width="32.72063" height="4.80214"/><polygon class="cls-2" points="156.056 51.823 157.768 46.998 181.191 47.005 181.191 51.812 156.056 51.823"/><polygon class="cls-2" points="148.237 46.997 149.944 51.823 125.046 51.823 125.046 46.997 148.237 46.997"/><path class="cls-2" d="M111.81,46.99627a15.748,15.748,0,0,1-.68923,4.82641H96.85137V46.99627Z"/><rect class="cls-2" x="31.43162" y="47.01973" width="14.06406" height="4.8019"/><rect class="cls-2" x="68.7486" y="46.99627" width="14.03976" height="4.82537"/><path class="cls-2" d="M138.87572,57.03292s.004,3.65225.001,3.65913H125.04558V55.89h26.35583l1.637,4.4773c.00773.00292,1.57841-4.48815,1.58153-4.47835h26.56223V60.692h-13.763c-.00124-.00687-.00771-3.65819-.00771-3.65819l-1.273,3.65819-25.99183-.00687Z"/><path class="cls-2" d="M68.7486,55.889h40.30365v-.00188a18.13723,18.13723,0,0,1-3.99812,4.80494s-36.30647.00668-36.30647,0Z"/><rect class="cls-2" x="31.43162" y="55.88794" width="14.06406" height="4.80316"/><rect class="cls-2" x="167.41912" y="64.94348" width="13.76302" height="4.80212"/><path class="cls-2" d="M138.87572,64.94348H125.04558V69.7456c-.00688-.0025,13.83411.00167,13.83411,0C138.87969,69.7431,138.89532,64.94348,138.87572,64.94348Z"/><path class="cls-2" d="M164.63927,64.94348c-.06255-.007-1.61218,4.79962-1.67723,4.80212l-19.60378.00835c-.01543-.00751-1.72371-4.81745-1.725-4.81047Z"/><path class="cls-2" d="M68.74672,64.94233H104.985a23.7047,23.7047,0,0,1,4.32076,4.80327c.06609-.0025-40.5581.00167-40.5581,0Z"/><path class="cls-2" d="M45.49359,69.74436v-4.802H31.45487V69.7431Z"/><rect class="cls-2" x="167.41912" y="73.99693" width="13.76198" height="4.80295"/><rect class="cls-2" x="125.04474" y="73.99693" width="13.83097" height="4.80212"/><path class="cls-2" d="M159.74351,78.8224c.00376-.02169,1.69745-4.82964,1.72373-4.82547H144.80219c-.029-.00209,1.70848,4.80378,1.70848,4.80378S159.7404,78.84241,159.74351,78.8224Z"/><path class="cls-2" d="M68.74766,78.79905c0,.01919-.00094-4.80212,0-4.803H82.9958s.01272,4.80462,0,4.80462C82.98224,78.80072,68.74766,78.79489,68.74766,78.79905Z"/><path class="cls-2" d="M111.30529,73.9961a13.94783,13.94783,0,0,1,.89542,4.825H97.10364v-4.825Z"/><rect class="cls-2" x="31.45487" y="73.9961" width="14.03872" height="4.80171"/><rect class="cls-2" x="167.41912" y="82.86525" width="23.0212" height="4.80421"/><rect class="cls-2" x="115.83139" y="82.86525" width="23.04432" height="4.80421"/><polygon class="cls-2" points="156.647 87.669 149.618 87.669 147.931 82.865 158.272 82.865 156.647 87.669"/><path class="cls-2" d="M22.3099,82.86525v4.80212H55.008c.01366.00751-.01469-4.79919,0-4.79919Z"/><path class="cls-2" d="M111.60237,82.86525c-.3442,1.58445-.65962,3.5158-1.81732,4.80421l-.43175-.00209H59.28005V82.86525Z"/><polygon class="cls-2" points="153.461 96.733 152.814 96.733 151.171 91.92 155.147 91.92 153.461 96.733"/><rect class="cls-2" x="167.41788" y="91.91953" width="23.02244" height="4.82547"/><path class="cls-2" d="M59.27307,96.73333V91.92745s47.24073.00585,47.37623.00585A17.945,17.945,0,0,1,94.43864,96.745l-35.15859-.00959"/><rect class="cls-2" x="115.83139" y="91.91953" width="23.04432" height="4.82547"/><path class="cls-2" d="M55.008,91.94079s-.01469,4.79253,0,4.79253c.01366,0-32.6885.0196-32.69809.00961-.00888-.00961.00875-4.81548,0-4.81548S54.9933,91.95664,55.008,91.94079Z"/></svg>
|
||||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
@@ -304,13 +304,6 @@ ConditionFalse 다.).
|
|||||||
{{< glossary_tooltip text="테인트" term_id="taint" >}}를 추가한다.
|
{{< glossary_tooltip text="테인트" term_id="taint" >}}를 추가한다.
|
||||||
이는 스케줄러가 비정상적인 노드에 파드를 배치하지 않게 된다.
|
이는 스케줄러가 비정상적인 노드에 파드를 배치하지 않게 된다.
|
||||||
|
|
||||||
|
|
||||||
{{< caution >}}
|
|
||||||
`kubectl cordon` 은 노드를 'unschedulable'로 표기하는데, 이는
|
|
||||||
서비스 컨트롤러가 이전에 자격 있는 로드밸런서 노드 대상 목록에서 해당 노드를 제거하기에
|
|
||||||
사실상 cordon 된 노드에서 들어오는 로드 밸런서 트래픽을 제거하는 부작용을 갖는다.
|
|
||||||
{{< /caution >}}
|
|
||||||
|
|
||||||
### 노드 용량
|
### 노드 용량
|
||||||
|
|
||||||
노드 오브젝트는 노드 리소스 용량에 대한 정보: 예를 들어, 사용 가능한 메모리의
|
노드 오브젝트는 노드 리소스 용량에 대한 정보: 예를 들어, 사용 가능한 메모리의
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ no_list: true
|
|||||||
|
|
||||||
## 클러스터 보안
|
## 클러스터 보안
|
||||||
|
|
||||||
* [인증서 생성](/ko/docs/tasks/administer-cluster/certificates/)는 다른 툴 체인을 사용하여 인증서를 생성하는 단계를 설명한다.
|
* [인증서 생성](/ko/docs/tasks/administer-cluster/certificates/)은 다른 툴 체인을 사용하여 인증서를 생성하는 단계를 설명한다.
|
||||||
|
|
||||||
* [쿠버네티스 컨테이너 환경](/ko/docs/concepts/containers/container-environment/)은 쿠버네티스 노드에서 Kubelet으로 관리하는 컨테이너에 대한 환경을 설명한다.
|
* [쿠버네티스 컨테이너 환경](/ko/docs/concepts/containers/container-environment/)은 쿠버네티스 노드에서 Kubelet으로 관리하는 컨테이너에 대한 환경을 설명한다.
|
||||||
|
|
||||||
|
|||||||
@@ -170,4 +170,5 @@ kube-scheduler는 각 파드에 대해 구성된 리소스 [요청과 제한](/k
|
|||||||
## {{% heading "whatsnext" %}}
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
* 메트릭에 대한 [프로메테우스 텍스트 형식](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format)에 대해 읽어본다
|
* 메트릭에 대한 [프로메테우스 텍스트 형식](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format)에 대해 읽어본다
|
||||||
|
* [안정 버전의 쿠버네티스 메트릭](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml) 목록을 살펴본다
|
||||||
* [쿠버네티스 사용 중단 정책](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)에 대해 읽어본다
|
* [쿠버네티스 사용 중단 정책](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)에 대해 읽어본다
|
||||||
|
|||||||
@@ -50,11 +50,10 @@ terminated 또는 completed 상태인 경우에는 `PreStop` 훅 요청이 실
|
|||||||
### 훅 핸들러 구현
|
### 훅 핸들러 구현
|
||||||
|
|
||||||
컨테이너는 훅의 핸들러를 구현하고 등록함으로써 해당 훅에 접근할 수 있다.
|
컨테이너는 훅의 핸들러를 구현하고 등록함으로써 해당 훅에 접근할 수 있다.
|
||||||
구현될 수 있는 컨테이너의 훅 핸들러에는 세 가지 유형이 있다.
|
구현될 수 있는 컨테이너의 훅 핸들러에는 두 가지 유형이 있다.
|
||||||
|
|
||||||
* Exec - 컨테이너의 cgroups와 네임스페이스 안에서, `pre-stop.sh`와 같은, 특정 커맨드를 실행.
|
* Exec - 컨테이너의 cgroups와 네임스페이스 안에서, `pre-stop.sh`와 같은, 특정 커맨드를 실행.
|
||||||
커맨드에 의해 소비된 리소스는 해당 컨테이너에 대해 계산된다.
|
커맨드에 의해 소비된 리소스는 해당 컨테이너에 대해 계산된다.
|
||||||
* TCP - 컨테이너의 특정 포트에 대한 TCP 연결을 연다.
|
|
||||||
* HTTP - 컨테이너의 특정 엔드포인트에 대해서 HTTP 요청을 실행.
|
* HTTP - 컨테이너의 특정 엔드포인트에 대해서 HTTP 요청을 실행.
|
||||||
|
|
||||||
### 훅 핸들러 실행
|
### 훅 핸들러 실행
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ weight: 20
|
|||||||
이 페이지는 런타임클래스 리소스와 런타임 선택 메커니즘에 대해서 설명한다.
|
이 페이지는 런타임클래스 리소스와 런타임 선택 메커니즘에 대해서 설명한다.
|
||||||
|
|
||||||
런타임클래스는 컨테이너 런타임을 구성을 선택하는 기능이다. 컨테이너 런타임
|
런타임클래스는 컨테이너 런타임을 구성을 선택하는 기능이다. 컨테이너 런타임
|
||||||
구성은 파드의 컨테이너를 실행하는데 사용된다.
|
구성은 파드의 컨테이너를 실행하는 데 사용된다.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ weight: 20
|
|||||||
## 동기
|
## 동기
|
||||||
|
|
||||||
서로 다른 파드간에 런타임클래스를 설정하여
|
서로 다른 파드간에 런타임클래스를 설정하여
|
||||||
성능대 보안의 균형을 유지할 수 있다.
|
성능과 보안의 균형을 유지할 수 있다.
|
||||||
예를 들어, 일부 작업에서 높은 수준의 정보 보안 보증이 요구되는 경우,
|
예를 들어, 일부 작업에서 높은 수준의 정보 보안 보증이 요구되는 경우,
|
||||||
하드웨어 가상화를 이용하는 컨테이너 런타임으로 파드를 실행하도록 예약하는 선택을 할 수 있다.
|
하드웨어 가상화를 이용하는 컨테이너 런타임으로 파드를 실행하도록 예약하는 선택을 할 수 있다.
|
||||||
그러면 몇가지 추가적인 오버헤드는 있지만
|
그러면 몇가지 추가적인 오버헤드는 있지만
|
||||||
@@ -106,7 +106,8 @@ CRI 런타임 설치에 대한 자세한 내용은 [CRI 설치](/ko/docs/setup/p
|
|||||||
|
|
||||||
#### dockershim
|
#### dockershim
|
||||||
|
|
||||||
쿠버네티스의 내장 dockershim CRI는 런타임 핸들러를 지원하지 않는다.
|
dockershim을 사용하는 경우 RuntimeClass는 런타임 핸들러를 `docker`로 고정한다.
|
||||||
|
dockershim은 사용자 정의 런타임 핸들러를 지원하지 않는다.
|
||||||
|
|
||||||
#### {{< glossary_tooltip term_id="containerd" >}}
|
#### {{< glossary_tooltip term_id="containerd" >}}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
title: 쿠버네티스 확장
|
title: 쿠버네티스 확장
|
||||||
weight: 110
|
weight: 110
|
||||||
description: 쿠버네티스 클러스터의 동작을 변경하는 다양한 방법
|
description: 쿠버네티스 클러스터의 동작을 변경하는 다양한 방법
|
||||||
|
feature:
|
||||||
|
title: 확장성을 고려하여 설계됨
|
||||||
|
description: >
|
||||||
|
쿠버네티스 업스트림 소스 코드 수정 없이 쿠버네티스 클러스터에 기능을 추가할 수 있다.
|
||||||
content_type: concept
|
content_type: concept
|
||||||
no_list: true
|
no_list: true
|
||||||
---
|
---
|
||||||
@@ -76,19 +80,18 @@ kubectl에서
|
|||||||
아래는 익스텐션 포인트가 쿠버네티스 컨트롤 플레인과 상호 작용하는 방법을
|
아래는 익스텐션 포인트가 쿠버네티스 컨트롤 플레인과 상호 작용하는 방법을
|
||||||
보여주는 다이어그램이다.
|
보여주는 다이어그램이다.
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vQBRWyXLVUlQPlp7BvxvV9S1mxyXSM6rAc_cbLANvKlu6kCCf-kGTporTMIeG5GZtUdxXz1xowN7RmL/pub?w=960&h=720">
|
|
||||||
|
|
||||||
<!-- image source drawing https://docs.google.com/drawings/d/1muJ7Oxuj_7Gtv7HV9-2zJbOnkQJnjxq-v1ym_kZfB-4/edit?ts=5a01e054 -->
|
<!-- image source drawing https://docs.google.com/drawings/d/1muJ7Oxuj_7Gtv7HV9-2zJbOnkQJnjxq-v1ym_kZfB-4/edit?ts=5a01e054 -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 익스텐션 포인트
|
## 익스텐션 포인트
|
||||||
|
|
||||||
이 다이어그램은 쿠버네티스 시스템의 익스텐션 포인트를 보여준다.
|
이 다이어그램은 쿠버네티스 시스템의 익스텐션 포인트를 보여준다.
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vSH5ZWUO2jH9f34YHenhnCd14baEb4vT-pzfxeFC7NzdNqRDgdz4DDAVqArtH4onOGqh0bhwMX0zGBb/pub?w=425&h=809">
|
|
||||||
|
|
||||||
<!-- image source diagrams: https://docs.google.com/drawings/d/1k2YdJgNTtNfW7_A8moIIkij-DmVgEhNrn3y2OODwqQQ/view -->
|
<!-- image source diagrams: https://docs.google.com/drawings/d/1k2YdJgNTtNfW7_A8moIIkij-DmVgEhNrn3y2OODwqQQ/view -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
1. 사용자는 종종 `kubectl`을 사용하여 쿠버네티스 API와 상호 작용한다. [Kubectl 플러그인](/ko/docs/tasks/extend-kubectl/kubectl-plugins/)은 kubectl 바이너리를 확장한다. 개별 사용자의 로컬 환경에만 영향을 미치므로 사이트 전체 정책을 적용할 수는 없다.
|
1. 사용자는 종종 `kubectl`을 사용하여 쿠버네티스 API와 상호 작용한다. [Kubectl 플러그인](/ko/docs/tasks/extend-kubectl/kubectl-plugins/)은 kubectl 바이너리를 확장한다. 개별 사용자의 로컬 환경에만 영향을 미치므로 사이트 전체 정책을 적용할 수는 없다.
|
||||||
2. apiserver는 모든 요청을 처리한다. apiserver의 여러 유형의 익스텐션 포인트는 요청을 인증하거나, 콘텐츠를 기반으로 요청을 차단하거나, 콘텐츠를 편집하고, 삭제 처리를 허용한다. 이 내용은 [API 접근 익스텐션](#api-접근-익스텐션) 섹션에 설명되어 있다.
|
2. apiserver는 모든 요청을 처리한다. apiserver의 여러 유형의 익스텐션 포인트는 요청을 인증하거나, 콘텐츠를 기반으로 요청을 차단하거나, 콘텐츠를 편집하고, 삭제 처리를 허용한다. 이 내용은 [API 접근 익스텐션](#api-접근-익스텐션) 섹션에 설명되어 있다.
|
||||||
3. apiserver는 다양한 종류의 *리소스* 를 제공한다. `pods`와 같은 *빌트인 리소스 종류* 는 쿠버네티스 프로젝트에 의해 정의되며 변경할 수 없다. 직접 정의한 리소스를 추가할 수도 있고, [커스텀 리소스](#사용자-정의-유형) 섹션에 설명된 대로 *커스텀 리소스* 라고 부르는 다른 프로젝트에서 정의한 리소스를 추가할 수도 있다. 커스텀 리소스는 종종 API 접근 익스텐션과 함께 사용된다.
|
3. apiserver는 다양한 종류의 *리소스* 를 제공한다. `pods`와 같은 *빌트인 리소스 종류* 는 쿠버네티스 프로젝트에 의해 정의되며 변경할 수 없다. 직접 정의한 리소스를 추가할 수도 있고, [커스텀 리소스](#사용자-정의-유형) 섹션에 설명된 대로 *커스텀 리소스* 라고 부르는 다른 프로젝트에서 정의한 리소스를 추가할 수도 있다. 커스텀 리소스는 종종 API 접근 익스텐션과 함께 사용된다.
|
||||||
@@ -99,11 +102,10 @@ kubectl에서
|
|||||||
|
|
||||||
어디서부터 시작해야 할지 모르겠다면, 이 플로우 차트가 도움이 될 수 있다. 일부 솔루션에는 여러 유형의 익스텐션이 포함될 수 있다.
|
어디서부터 시작해야 할지 모르겠다면, 이 플로우 차트가 도움이 될 수 있다. 일부 솔루션에는 여러 유형의 익스텐션이 포함될 수 있다.
|
||||||
|
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vRWXNNIVWFDqzDY0CsKZJY3AR8sDeFDXItdc5awYxVH8s0OLherMlEPVUpxPIB1CSUu7GPk7B2fEnzM/pub?w=1440&h=1080">
|
|
||||||
|
|
||||||
<!-- image source drawing: https://docs.google.com/drawings/d/1sdviU6lDz4BpnzJNHfNpQrqI9F19QZ07KnhnxVrp2yg/edit -->
|
<!-- image source drawing: https://docs.google.com/drawings/d/1sdviU6lDz4BpnzJNHfNpQrqI9F19QZ07KnhnxVrp2yg/edit -->
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## API 익스텐션
|
## API 익스텐션
|
||||||
### 사용자 정의 유형
|
### 사용자 정의 유형
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
@@ -1,201 +0,0 @@
|
|||||||
---
|
|
||||||
title: 쿠버네티스 클러스터 확장
|
|
||||||
content_type: concept
|
|
||||||
weight: 10
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- overview -->
|
|
||||||
|
|
||||||
쿠버네티스는 매우 유연하게 구성할 수 있고 확장 가능하다. 결과적으로
|
|
||||||
쿠버네티스 프로젝트를 포크하거나 코드에 패치를 제출할 필요가
|
|
||||||
거의 없다.
|
|
||||||
|
|
||||||
이 가이드는 쿠버네티스 클러스터를 사용자 정의하기 위한 옵션을 설명한다.
|
|
||||||
쿠버네티스 클러스터를 업무 환경의 요구에 맞게
|
|
||||||
조정하는 방법을 이해하려는 {{< glossary_tooltip text="클러스터 운영자" term_id="cluster-operator" >}}를
|
|
||||||
대상으로 한다.
|
|
||||||
잠재적인 {{< glossary_tooltip text="플랫폼 개발자" term_id="platform-developer" >}} 또는
|
|
||||||
쿠버네티스 프로젝트 {{< glossary_tooltip text="컨트리뷰터" term_id="contributor" >}}인 개발자에게도
|
|
||||||
어떤 익스텐션 포인트와 패턴이 있는지,
|
|
||||||
그리고 그것들의 트레이드오프와 제약에 대한 소개 자료로 유용할 것이다.
|
|
||||||
|
|
||||||
|
|
||||||
<!-- body -->
|
|
||||||
|
|
||||||
## 개요
|
|
||||||
|
|
||||||
사용자 정의 방식은 크게 플래그, 로컬 구성 파일 또는 API 리소스 변경만 포함하는 *구성* 과 추가 프로그램이나 서비스 실행과 관련된 *익스텐션* 으로 나눌 수 있다. 이 문서는 주로 익스텐션에 관한 것이다.
|
|
||||||
|
|
||||||
## 구성
|
|
||||||
|
|
||||||
*구성 파일* 및 *플래그* 는 온라인 문서의 레퍼런스 섹션에 각 바이너리 별로 문서화되어 있다.
|
|
||||||
|
|
||||||
* [kubelet](/docs/reference/command-line-tools-reference/kubelet/)
|
|
||||||
* [kube-apiserver](/docs/reference/command-line-tools-reference/kube-apiserver/)
|
|
||||||
* [kube-controller-manager](/docs/reference/command-line-tools-reference/kube-controller-manager/)
|
|
||||||
* [kube-scheduler](/docs/reference/command-line-tools-reference/kube-scheduler/).
|
|
||||||
|
|
||||||
호스팅된 쿠버네티스 서비스 또는 매니지드 설치 환경의 배포판에서 플래그 및 구성 파일을 항상 변경할 수 있는 것은 아니다. 변경 가능한 경우 일반적으로 클러스터 관리자만 변경할 수 있다. 또한 향후 쿠버네티스 버전에서 변경될 수 있으며, 이를 설정하려면 프로세스를 다시 시작해야 할 수도 있다. 이러한 이유로 다른 옵션이 없는 경우에만 사용해야 한다.
|
|
||||||
|
|
||||||
[리소스쿼터](/ko/docs/concepts/policy/resource-quotas/), [PodSecurityPolicy](/ko/docs/concepts/policy/pod-security-policy/), [네트워크폴리시](/ko/docs/concepts/services-networking/network-policies/) 및 역할 기반 접근 제어([RBAC](/docs/reference/access-authn-authz/rbac/))와 같은 *빌트인 정책 API(built-in Policy API)* 는 기본적으로 제공되는 쿠버네티스 API이다. API는 일반적으로 호스팅된 쿠버네티스 서비스 및 매니지드 쿠버네티스 설치 환경과 함께 사용된다. 그것들은 선언적이며 파드와 같은 다른 쿠버네티스 리소스와 동일한 규칙을 사용하므로, 새로운 클러스터 구성을 반복할 수 있고 애플리케이션과 동일한 방식으로 관리할 수 있다. 또한, 이들 API가 안정적인 경우, 다른 쿠버네티스 API와 같이 [정의된 지원 정책](/docs/reference/using-api/deprecation-policy/)을 사용할 수 있다. 이러한 이유로 인해 구성 파일과 플래그보다 선호된다.
|
|
||||||
|
|
||||||
## 익스텐션(Extension) {#익스텐션}
|
|
||||||
|
|
||||||
익스텐션은 쿠버네티스를 확장하고 쿠버네티스와 긴밀하게 통합되는 소프트웨어 컴포넌트이다.
|
|
||||||
이들 컴포넌트는 쿠버네티스가 새로운 유형과 새로운 종류의 하드웨어를 지원할 수 있게 해준다.
|
|
||||||
|
|
||||||
대부분의 클러스터 관리자는 쿠버네티스의 호스팅 또는 배포판 인스턴스를 사용한다.
|
|
||||||
결과적으로 대부분의 쿠버네티스 사용자는 익스텐션 기능을 설치할 필요가 없고
|
|
||||||
새로운 익스텐션 기능을 작성할 필요가 있는 사람은 더 적다.
|
|
||||||
|
|
||||||
## 익스텐션 패턴
|
|
||||||
|
|
||||||
쿠버네티스는 클라이언트 프로그램을 작성하여 자동화 되도록 설계되었다.
|
|
||||||
쿠버네티스 API를 읽고 쓰는 프로그램은 유용한 자동화를 제공할 수 있다.
|
|
||||||
*자동화* 는 클러스터 상에서 또는 클러스터 밖에서 실행할 수 있다. 이 문서의 지침에 따라
|
|
||||||
고가용성과 강력한 자동화를 작성할 수 있다.
|
|
||||||
자동화는 일반적으로 호스트 클러스터 및 매니지드 설치 환경을 포함한 모든
|
|
||||||
쿠버네티스 클러스터에서 작동한다.
|
|
||||||
|
|
||||||
쿠버네티스와 잘 작동하는 클라이언트 프로그램을 작성하기 위한 특정 패턴은 *컨트롤러* 패턴이라고 한다.
|
|
||||||
컨트롤러는 일반적으로 오브젝트의 `.spec`을 읽고, 가능한 경우 수행한 다음
|
|
||||||
오브젝트의 `.status`를 업데이트 한다.
|
|
||||||
|
|
||||||
컨트롤러는 쿠버네티스의 클라이언트이다. 쿠버네티스가 클라이언트이고
|
|
||||||
원격 서비스를 호출할 때 이를 *웹훅(Webhook)* 이라고 한다. 원격 서비스를
|
|
||||||
*웹훅 백엔드* 라고 한다. 컨트롤러와 마찬가지로 웹훅은 장애 지점을
|
|
||||||
추가한다.
|
|
||||||
|
|
||||||
웹훅 모델에서 쿠버네티스는 원격 서비스에 네트워크 요청을 한다.
|
|
||||||
*바이너리 플러그인* 모델에서 쿠버네티스는 바이너리(프로그램)를 실행한다.
|
|
||||||
바이너리 플러그인은 kubelet(예:
|
|
||||||
[Flex 볼륨 플러그인](/ko/docs/concepts/storage/volumes/#flexvolume)과
|
|
||||||
[네트워크 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/))과
|
|
||||||
kubectl에서
|
|
||||||
사용한다.
|
|
||||||
|
|
||||||
아래는 익스텐션 포인트가 쿠버네티스 컨트롤 플레인과 상호 작용하는 방법을
|
|
||||||
보여주는 다이어그램이다.
|
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vQBRWyXLVUlQPlp7BvxvV9S1mxyXSM6rAc_cbLANvKlu6kCCf-kGTporTMIeG5GZtUdxXz1xowN7RmL/pub?w=960&h=720">
|
|
||||||
|
|
||||||
<!-- image source drawing https://docs.google.com/drawings/d/1muJ7Oxuj_7Gtv7HV9-2zJbOnkQJnjxq-v1ym_kZfB-4/edit?ts=5a01e054 -->
|
|
||||||
|
|
||||||
|
|
||||||
## 익스텐션 포인트
|
|
||||||
|
|
||||||
이 다이어그램은 쿠버네티스 시스템의 익스텐션 포인트를 보여준다.
|
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vSH5ZWUO2jH9f34YHenhnCd14baEb4vT-pzfxeFC7NzdNqRDgdz4DDAVqArtH4onOGqh0bhwMX0zGBb/pub?w=425&h=809">
|
|
||||||
|
|
||||||
<!-- image source diagrams: https://docs.google.com/drawings/d/1k2YdJgNTtNfW7_A8moIIkij-DmVgEhNrn3y2OODwqQQ/view -->
|
|
||||||
|
|
||||||
1. 사용자는 종종 `kubectl`을 사용하여 쿠버네티스 API와 상호 작용한다. [Kubectl 플러그인](/ko/docs/tasks/extend-kubectl/kubectl-plugins/)은 kubectl 바이너리를 확장한다. 개별 사용자의 로컬 환경에만 영향을 미치므로 사이트 전체 정책을 적용할 수는 없다.
|
|
||||||
2. apiserver는 모든 요청을 처리한다. apiserver의 여러 유형의 익스텐션 포인트는 요청을 인증하거나, 콘텐츠를 기반으로 요청을 차단하거나, 콘텐츠를 편집하고, 삭제 처리를 허용한다. 이 내용은 [API 접근 익스텐션](/ko/docs/concepts/extend-kubernetes/extend-cluster/#api-접근-익스텐션) 섹션에 설명되어 있다.
|
|
||||||
3. apiserver는 다양한 종류의 *리소스* 를 제공한다. `pods`와 같은 *빌트인 리소스 종류* 는 쿠버네티스 프로젝트에 의해 정의되며 변경할 수 없다. 직접 정의한 리소스를 추가할 수도 있고, [커스텀 리소스](/ko/docs/concepts/extend-kubernetes/extend-cluster/#사용자-정의-유형) 섹션에 설명된 대로 *커스텀 리소스* 라고 부르는 다른 프로젝트에서 정의한 리소스를 추가할 수도 있다. 커스텀 리소스는 종종 API 접근 익스텐션과 함께 사용된다.
|
|
||||||
4. 쿠버네티스 스케줄러는 파드를 배치할 노드를 결정한다. 스케줄링을 확장하는 몇 가지 방법이 있다. 이들은 [스케줄러 익스텐션](/ko/docs/concepts/extend-kubernetes/#스케줄러-익스텐션) 섹션에 설명되어 있다.
|
|
||||||
5. 쿠버네티스의 많은 동작은 API-Server의 클라이언트인 컨트롤러(Controller)라는 프로그램으로 구현된다. 컨트롤러는 종종 커스텀 리소스와 함께 사용된다.
|
|
||||||
6. kubelet은 서버에서 실행되며 파드가 클러스터 네트워크에서 자체 IP를 가진 가상 서버처럼 보이도록 한다. [네트워크 플러그인](/ko/docs/concepts/extend-kubernetes/extend-cluster/#네트워크-플러그인)을 사용하면 다양한 파드 네트워킹 구현이 가능하다.
|
|
||||||
7. kubelet은 컨테이너의 볼륨을 마운트 및 마운트 해제한다. 새로운 유형의 스토리지는 [스토리지 플러그인](/ko/docs/concepts/extend-kubernetes/extend-cluster/#스토리지-플러그인)을 통해 지원될 수 있다.
|
|
||||||
|
|
||||||
어디서부터 시작해야 할지 모르겠다면, 이 플로우 차트가 도움이 될 수 있다. 일부 솔루션에는 여러 유형의 익스텐션이 포함될 수 있다.
|
|
||||||
|
|
||||||
|
|
||||||
<img src="https://docs.google.com/drawings/d/e/2PACX-1vRWXNNIVWFDqzDY0CsKZJY3AR8sDeFDXItdc5awYxVH8s0OLherMlEPVUpxPIB1CSUu7GPk7B2fEnzM/pub?w=1440&h=1080">
|
|
||||||
|
|
||||||
<!-- image source drawing: https://docs.google.com/drawings/d/1sdviU6lDz4BpnzJNHfNpQrqI9F19QZ07KnhnxVrp2yg/edit -->
|
|
||||||
|
|
||||||
## API 익스텐션
|
|
||||||
### 사용자 정의 유형
|
|
||||||
|
|
||||||
새 컨트롤러, 애플리케이션 구성 오브젝트 또는 기타 선언적 API를 정의하고 `kubectl`과 같은 쿠버네티스 도구를 사용하여 관리하려면 쿠버네티스에 커스텀 리소스를 추가하자.
|
|
||||||
|
|
||||||
애플리케이션, 사용자 또는 모니터링 데이터의 데이터 저장소로 커스텀 리소스를 사용하지 않는다.
|
|
||||||
|
|
||||||
커스텀 리소스에 대한 자세한 내용은 [커스텀 리소스 개념 가이드](/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources/)를 참고하길 바란다.
|
|
||||||
|
|
||||||
|
|
||||||
### 새로운 API와 자동화의 결합
|
|
||||||
|
|
||||||
사용자 정의 리소스 API와 컨트롤 루프의 조합을 [오퍼레이터(operator) 패턴](/ko/docs/concepts/extend-kubernetes/operator/)이라고 한다. 오퍼레이터 패턴은 특정 애플리케이션, 일반적으로 스테이트풀(stateful) 애플리케이션을 관리하는 데 사용된다. 이러한 사용자 정의 API 및 컨트롤 루프를 사용하여 스토리지나 정책과 같은 다른 리소스를 제어할 수도 있다.
|
|
||||||
|
|
||||||
### 빌트인 리소스 변경
|
|
||||||
|
|
||||||
사용자 정의 리소스를 추가하여 쿠버네티스 API를 확장하면 추가된 리소스는 항상 새로운 API 그룹에 속한다. 기존 API 그룹을 바꾸거나 변경할 수 없다.
|
|
||||||
API를 추가해도 기존 API(예: 파드)의 동작에 직접 영향을 미치지는 않지만 API 접근 익스텐션은 영향을 준다.
|
|
||||||
|
|
||||||
|
|
||||||
### API 접근 익스텐션
|
|
||||||
|
|
||||||
요청이 쿠버네티스 API 서버에 도달하면 먼저 인증이 되고, 그런 다음 승인된 후 다양한 유형의 어드미션 컨트롤이 적용된다. 이 흐름에 대한 자세한 내용은 [쿠버네티스 API에 대한 접근 제어](/ko/docs/concepts/security/controlling-access/)를 참고하길 바란다.
|
|
||||||
|
|
||||||
이러한 각 단계는 익스텐션 포인트를 제공한다.
|
|
||||||
|
|
||||||
쿠버네티스에는 이를 지원하는 몇 가지 빌트인 인증 방법이 있다. 또한 인증 프록시 뒤에 있을 수 있으며 인증 헤더에서 원격 서비스로 토큰을 전송하여 확인할 수 있다(웹훅). 이러한 방법은 모두 [인증 설명서](/docs/reference/access-authn-authz/authentication/)에 설명되어 있다.
|
|
||||||
|
|
||||||
### 인증
|
|
||||||
|
|
||||||
[인증](/docs/reference/access-authn-authz/authentication/)은 모든 요청의 헤더 또는 인증서를 요청하는 클라이언트의 사용자 이름에 매핑한다.
|
|
||||||
|
|
||||||
쿠버네티스는 몇 가지 빌트인 인증 방법과 필요에 맞지 않는 경우 [인증 웹훅](/docs/reference/access-authn-authz/authentication/#webhook-token-authentication) 방법을 제공한다.
|
|
||||||
|
|
||||||
|
|
||||||
### 승인
|
|
||||||
|
|
||||||
[승인](/docs/reference/access-authn-authz/webhook/)은 특정 사용자가 API 리소스에서 읽고, 쓰고, 다른 작업을 수행할 수 있는지를 결정한다. 전체 리소스 레벨에서 작동하며 임의의 오브젝트 필드를 기준으로 구별하지 않는다. 빌트인 인증 옵션이 사용자의 요구를 충족시키지 못하면 [인증 웹훅](/docs/reference/access-authn-authz/webhook/)을 통해 사용자가 제공한 코드를 호출하여 인증 결정을 내릴 수 있다.
|
|
||||||
|
|
||||||
|
|
||||||
### 동적 어드미션 컨트롤
|
|
||||||
|
|
||||||
요청이 승인된 후, 쓰기 작업인 경우 [어드미션 컨트롤](/docs/reference/access-authn-authz/admission-controllers/) 단계도 수행된다. 빌트인 단계 외에도 몇 가지 익스텐션이 있다.
|
|
||||||
|
|
||||||
* [이미지 정책 웹훅](/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook)은 컨테이너에서 실행할 수 있는 이미지를 제한한다.
|
|
||||||
* 임의의 어드미션 컨트롤 결정을 내리기 위해 일반적인 [어드미션 웹훅](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks)을 사용할 수 있다. 어드미션 웹훅은 생성 또는 업데이트를 거부할 수 있다.
|
|
||||||
|
|
||||||
## 인프라스트럭처 익스텐션
|
|
||||||
|
|
||||||
|
|
||||||
### 스토리지 플러그인
|
|
||||||
|
|
||||||
[Flex 볼륨](/ko/docs/concepts/storage/volumes/#flexvolume)을 사용하면
|
|
||||||
Kubelet이 바이너리 플러그인을 호출하여 볼륨을 마운트하도록 함으로써
|
|
||||||
빌트인 지원 없이 볼륨 유형을 마운트 할 수 있다.
|
|
||||||
|
|
||||||
|
|
||||||
### 장치 플러그인
|
|
||||||
|
|
||||||
장치 플러그인은 노드가 [장치 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)을
|
|
||||||
통해 새로운 노드 리소스(CPU 및 메모리와 같은 빌트인 자원 외에)를
|
|
||||||
발견할 수 있게 해준다.
|
|
||||||
|
|
||||||
### 네트워크 플러그인
|
|
||||||
|
|
||||||
노드-레벨의 [네트워크 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)을 통해
|
|
||||||
다양한 네트워킹 패브릭을 지원할 수 있다.
|
|
||||||
|
|
||||||
### 스케줄러 익스텐션
|
|
||||||
|
|
||||||
스케줄러는 파드를 감시하고 파드를 노드에 할당하는 특수한 유형의
|
|
||||||
컨트롤러이다. 다른 쿠버네티스 컴포넌트를 계속 사용하면서
|
|
||||||
기본 스케줄러를 완전히 교체하거나,
|
|
||||||
[여러 스케줄러](/docs/tasks/extend-kubernetes/configure-multiple-schedulers/)를
|
|
||||||
동시에 실행할 수 있다.
|
|
||||||
|
|
||||||
이것은 중요한 부분이며, 거의 모든 쿠버네티스 사용자는 스케줄러를 수정할
|
|
||||||
필요가 없다는 것을 알게 된다.
|
|
||||||
|
|
||||||
스케줄러는 또한 웹훅 백엔드(스케줄러 익스텐션)가
|
|
||||||
파드에 대해 선택된 노드를 필터링하고 우선 순위를 지정할 수 있도록 하는
|
|
||||||
[웹훅](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md)을
|
|
||||||
지원한다.
|
|
||||||
|
|
||||||
|
|
||||||
## {{% heading "whatsnext" %}}
|
|
||||||
|
|
||||||
* [커스텀 리소스](/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources/)에 대해 더 알아보기
|
|
||||||
* [동적 어드미션 컨트롤](/docs/reference/access-authn-authz/extensible-admission-controllers/)에 대해 알아보기
|
|
||||||
* 인프라스트럭처 익스텐션에 대해 더 알아보기
|
|
||||||
* [네트워크 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/)
|
|
||||||
* [장치 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)
|
|
||||||
* [kubectl 플러그인](/ko/docs/tasks/extend-kubectl/kubectl-plugins/)에 대해 알아보기
|
|
||||||
* [오퍼레이터 패턴](/ko/docs/concepts/extend-kubernetes/operator/)에 대해 알아보기
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
@@ -53,9 +53,9 @@ _레이블_ 은 키와 값의 쌍이다. 유효한 레이블 키에는 슬래시
|
|||||||
`kubernetes.io/`와 `k8s.io/` 접두사는 쿠버네티스의 핵심 컴포넌트로 예약되어있다.
|
`kubernetes.io/`와 `k8s.io/` 접두사는 쿠버네티스의 핵심 컴포넌트로 예약되어있다.
|
||||||
|
|
||||||
유효한 레이블 값은 다음과 같다.
|
유효한 레이블 값은 다음과 같다.
|
||||||
* 63 자 이하 여야 하고(공백이면 안 됨),
|
* 63 자 이하여야 하고 (공백일 수도 있음),
|
||||||
* 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며,
|
* (공백이 아니라면) 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며,
|
||||||
* 알파벳과 숫자, 대시(`-`), 밑줄(`_`), 점(`.`)를 중간에 포함할 수 있다.
|
* 알파벳과 숫자, 대시(`-`), 밑줄(`_`), 점(`.`)을 중간에 포함할 수 있다.
|
||||||
|
|
||||||
유효한 레이블 값은 63자 미만 또는 공백이며 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며, 대시(`-`), 밑줄(`_`), 점(`.`)과 함께 사용할 수 있다.
|
유효한 레이블 값은 63자 미만 또는 공백이며 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며, 대시(`-`), 밑줄(`_`), 점(`.`)과 함께 사용할 수 있다.
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ spec:
|
|||||||
## 넘어가기 전에: 내장 노드 레이블들 {#built-in-node-labels}
|
## 넘어가기 전에: 내장 노드 레이블들 {#built-in-node-labels}
|
||||||
|
|
||||||
[붙인](#1-단계-노드에-레이블-붙이기) 레이블뿐만 아니라, 노드에는
|
[붙인](#1-단계-노드에-레이블-붙이기) 레이블뿐만 아니라, 노드에는
|
||||||
표준 레이블 셋이 미리 채워져 있다. 이들 목록은 [잘 알려진 레이블, 어노테이션 및 테인트](/docs/reference/kubernetes-api/labels-annotations-taints/)를 참고한다.
|
표준 레이블 셋이 미리 채워져 있다. 이들 목록은 [잘 알려진 레이블, 어노테이션 및 테인트](/docs/reference/labels-annotations-taints/)를 참고한다.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
이 레이블들의 값은 클라우드 공급자에 따라 다르고 신뢰성이 보장되지 않는다.
|
이 레이블들의 값은 클라우드 공급자에 따라 다르고 신뢰성이 보장되지 않는다.
|
||||||
|
|||||||
@@ -206,9 +206,9 @@ tolerations:
|
|||||||
`Ready` 가 "`False`"로 됨에 해당한다.
|
`Ready` 가 "`False`"로 됨에 해당한다.
|
||||||
* `node.kubernetes.io/unreachable`: 노드가 노드 컨트롤러에서 도달할 수 없다. 이는
|
* `node.kubernetes.io/unreachable`: 노드가 노드 컨트롤러에서 도달할 수 없다. 이는
|
||||||
NodeCondition `Ready` 가 "`Unknown`"로 됨에 해당한다.
|
NodeCondition `Ready` 가 "`Unknown`"로 됨에 해당한다.
|
||||||
* `node.kubernetes.io/out-of-disk`: 노드에 디스크가 부족하다.
|
|
||||||
* `node.kubernetes.io/memory-pressure`: 노드에 메모리 할당 압박이 있다.
|
* `node.kubernetes.io/memory-pressure`: 노드에 메모리 할당 압박이 있다.
|
||||||
* `node.kubernetes.io/disk-pressure`: 노드에 디스크 할당 압박이 있다.
|
* `node.kubernetes.io/disk-pressure`: 노드에 디스크 할당 압박이 있다.
|
||||||
|
* `node.kubernetes.io/pid-pressure`: 노드에 PID 할당 압박이 있다.
|
||||||
* `node.kubernetes.io/network-unavailable`: 노드의 네트워크를 사용할 수 없다.
|
* `node.kubernetes.io/network-unavailable`: 노드의 네트워크를 사용할 수 없다.
|
||||||
* `node.kubernetes.io/unschedulable`: 노드를 스케줄할 수 없다.
|
* `node.kubernetes.io/unschedulable`: 노드를 스케줄할 수 없다.
|
||||||
* `node.cloudprovider.kubernetes.io/uninitialized`: "외부" 클라우드 공급자로
|
* `node.cloudprovider.kubernetes.io/uninitialized`: "외부" 클라우드 공급자로
|
||||||
@@ -271,7 +271,7 @@ tolerations:
|
|||||||
|
|
||||||
* `node.kubernetes.io/memory-pressure`
|
* `node.kubernetes.io/memory-pressure`
|
||||||
* `node.kubernetes.io/disk-pressure`
|
* `node.kubernetes.io/disk-pressure`
|
||||||
* `node.kubernetes.io/out-of-disk` (*중요한 파드에만 해당*)
|
* `node.kubernetes.io/pid-pressure` (1.14 이상)
|
||||||
* `node.kubernetes.io/unschedulable` (1.10 이상)
|
* `node.kubernetes.io/unschedulable` (1.10 이상)
|
||||||
* `node.kubernetes.io/network-unavailable` (*호스트 네트워크만 해당*)
|
* `node.kubernetes.io/network-unavailable` (*호스트 네트워크만 해당*)
|
||||||
|
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ A 또는 AAAA 레코드만 생성할 수 있다. (`default-subdomain.my-namespac
|
|||||||
또한 서비스에서 `publishNotReadyAddresses=True` 를 설정하지 않았다면, 파드가 준비 상태가 되어야 레코드를 가질 수 있다.
|
또한 서비스에서 `publishNotReadyAddresses=True` 를 설정하지 않았다면, 파드가 준비 상태가 되어야 레코드를 가질 수 있다.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### 파드의 setHostnameAsFQDN 필드 {# pod-sethostnameasfqdn-field}
|
### 파드의 setHostnameAsFQDN 필드 {#pod-sethostnameasfqdn-field}
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.20" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.20" state="beta" >}}
|
||||||
|
|
||||||
|
|||||||
@@ -935,11 +935,18 @@ Classic ELB의 연결 드레이닝은
|
|||||||
# 값 보다 작아야한다. 기본값은 5이며, 2와 60 사이여야 한다.
|
# 값 보다 작아야한다. 기본값은 5이며, 2와 60 사이여야 한다.
|
||||||
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f"
|
service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f"
|
||||||
# 생성된 ELB에 추가할 기존 보안 그룹 목록.
|
# 생성된 ELB에 설정할 기존 보안 그룹(security group) 목록.
|
||||||
# service.beta.kubernetes.io/aws-load-balancer-extra-security-groups 어노테이션과 달리, 이는 이전에 ELB에 할당된 다른 모든 보안 그룹을 대체한다.
|
# service.beta.kubernetes.io/aws-load-balancer-extra-security-groups 어노테이션과 달리, 이는 이전에 ELB에 할당된 다른 모든 보안 그룹을 대체하며,
|
||||||
|
# '해당 ELB를 위한 고유 보안 그룹 생성'을 오버라이드한다.
|
||||||
|
# 목록의 첫 번째 보안 그룹 ID는 인바운드 트래픽(서비스 트래픽과 헬스 체크)이 워커 노드로 향하도록 하는 규칙으로 사용된다.
|
||||||
|
# 여러 ELB가 하나의 보안 그룹 ID와 연결되면, 1줄의 허가 규칙만이 워커 노드 보안 그룹에 추가된다.
|
||||||
|
# 즉, 만약 여러 ELB 중 하나를 지우면, 1줄의 허가 규칙이 삭제되어, 같은 보안 그룹 ID와 연결된 모든 ELB에 대한 접속이 막힌다.
|
||||||
|
# 적절하게 사용되지 않으면 이는 다수의 서비스가 중단되는 상황을 유발할 수 있다.
|
||||||
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e"
|
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e"
|
||||||
# ELB에 추가될 추가 보안 그룹(security group) 목록
|
# 생성된 ELB에 추가할 추가 보안 그룹 목록
|
||||||
|
# 이 방법을 사용하면 이전에 생성된 고유 보안 그룹이 그대로 유지되므로, 각 ELB가 고유 보안 그룹 ID와 그에 매칭되는 허가 규칙 라인을 소유하여
|
||||||
|
# 트래픽(서비스 트래픽과 헬스 체크)이 워커 노드로 향할 수 있도록 한다. 여기에 기재되는 보안 그룹은 여러 서비스 간 공유될 수 있다.
|
||||||
|
|
||||||
service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "ingress-gw,gw-name=public-api"
|
service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "ingress-gw,gw-name=public-api"
|
||||||
# 로드 밸런서의 대상 노드를 선택하는 데
|
# 로드 밸런서의 대상 노드를 선택하는 데
|
||||||
|
|||||||
@@ -29,10 +29,9 @@ weight: 10
|
|||||||
쿠버네티스는 다양한 유형의 볼륨을 지원한다. {{< glossary_tooltip term_id="pod" text="파드" >}}는
|
쿠버네티스는 다양한 유형의 볼륨을 지원한다. {{< glossary_tooltip term_id="pod" text="파드" >}}는
|
||||||
여러 볼륨 유형을 동시에 사용할 수 있다.
|
여러 볼륨 유형을 동시에 사용할 수 있다.
|
||||||
임시 볼륨 유형은 파드의 수명을 갖지만, 퍼시스턴트 볼륨은
|
임시 볼륨 유형은 파드의 수명을 갖지만, 퍼시스턴트 볼륨은
|
||||||
파드의 수명을 넘어 존재한다. 결과적으로, 볼륨은 파드 내에서
|
파드의 수명을 넘어 존재한다. 파드가 더 이상 존재하지 않으면, 쿠버네티스는 임시(ephemeral) 볼륨을 삭제하지만,
|
||||||
실행되는 모든 컨테이너보다 오래 지속되며, 컨테이너를 다시 시작해도 데이터가 보존된다. 파드가
|
|
||||||
더 이상 존재하지 않으면, 쿠버네티스는 임시(ephemeral) 볼륨을 삭제하지만,
|
|
||||||
퍼시스턴트(persistent) 볼륨은 삭제하지 않는다.
|
퍼시스턴트(persistent) 볼륨은 삭제하지 않는다.
|
||||||
|
볼륨의 종류와 상관없이, 파드 내의 컨테이너가 재시작되어도 데이터는 보존된다.
|
||||||
|
|
||||||
기본적으로 볼륨은 디렉터리이며, 일부 데이터가 있을 수 있으며, 파드
|
기본적으로 볼륨은 디렉터리이며, 일부 데이터가 있을 수 있으며, 파드
|
||||||
내 컨테이너에서 접근할 수 있다. 디렉터리의 생성 방식, 이를 지원하는
|
내 컨테이너에서 접근할 수 있다. 디렉터리의 생성 방식, 이를 지원하는
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ PDB는 [비자발적 중단](#자발적-중단과-비자발적-중단)이 발생
|
|||||||
|
|
||||||
Eviction API를 사용하여 파드를 축출하면,
|
Eviction API를 사용하여 파드를 축출하면,
|
||||||
[PodSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)의
|
[PodSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)의
|
||||||
`terminationGracePeriodSeconds` 설정을 준수하여 정상적으로 [종료됨](/ko/docs/concepts/workloads/pods/pod-lifecycle/#파드의-종료) 상태가 된다.)
|
`terminationGracePeriodSeconds` 설정을 준수하여 정상적으로 [종료됨](/ko/docs/concepts/workloads/pods/pod-lifecycle/#파드의-종료) 상태가 된다.
|
||||||
|
|
||||||
## PodDisruptionBudget 예시 {#pdb-example}
|
## PodDisruptionBudget 예시 {#pdb-example}
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ graph TB
|
|||||||
class zoneA,zoneB cluster;
|
class zoneA,zoneB cluster;
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
|
|
||||||
레이블을 수동으로 적용하는 대신에, 사용자는 대부분의 클러스터에서 자동으로 생성되고 채워지는 [잘-알려진 레이블](/docs/reference/kubernetes-api/labels-annotations-taints/)을 재사용할 수 있다.
|
레이블을 수동으로 적용하는 대신에, 사용자는 대부분의 클러스터에서 자동으로 생성되고 채워지는 [잘-알려진 레이블](/docs/reference/labels-annotations-taints/)을 재사용할 수 있다.
|
||||||
|
|
||||||
## 파드의 분배 제약 조건
|
## 파드의 분배 제약 조건
|
||||||
|
|
||||||
|
|||||||
@@ -123,8 +123,8 @@ git에 익숙하거나, 변경 사항이 몇 줄보다 클 경우,
|
|||||||
```bash
|
```bash
|
||||||
origin git@github.com:<github_username>/website.git (fetch)
|
origin git@github.com:<github_username>/website.git (fetch)
|
||||||
origin git@github.com:<github_username>/website.git (push)
|
origin git@github.com:<github_username>/website.git (push)
|
||||||
upstream https://github.com/kubernetes/website (fetch)
|
upstream https://github.com/kubernetes/website.git (fetch)
|
||||||
upstream https://github.com/kubernetes/website (push)
|
upstream https://github.com/kubernetes/website.git (push)
|
||||||
```
|
```
|
||||||
|
|
||||||
6. 포크의 `origin/master` 와 `kubernetes/website` 의 `upstream/master` 에서 커밋을 가져온다.
|
6. 포크의 `origin/master` 와 `kubernetes/website` 의 `upstream/master` 에서 커밋을 가져온다.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ no_list: true
|
|||||||
* [쿠버네티스 {{< param "version" >}}용 원페이지(One-page) API 레퍼런스](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
* [쿠버네티스 {{< param "version" >}}용 원페이지(One-page) API 레퍼런스](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
||||||
* [쿠버네티스 API 사용](/ko/docs/reference/using-api/) - 쿠버네티스 API에 대한 개요
|
* [쿠버네티스 API 사용](/ko/docs/reference/using-api/) - 쿠버네티스 API에 대한 개요
|
||||||
* [API 접근 제어](/ko/docs/reference/access-authn-authz/) - 쿠버네티스가 API 접근을 제어하는 방법에 대한 세부사항
|
* [API 접근 제어](/ko/docs/reference/access-authn-authz/) - 쿠버네티스가 API 접근을 제어하는 방법에 대한 세부사항
|
||||||
* [잘 알려진 레이블, 어노테이션과 테인트](/docs/reference/kubernetes-api/labels-annotations-taints/)
|
* [잘 알려진 레이블, 어노테이션과 테인트](/docs/reference/labels-annotations-taints/)
|
||||||
|
|
||||||
## 공식적으로 지원되는 클라이언트 라이브러리
|
## 공식적으로 지원되는 클라이언트 라이브러리
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,15 @@ weight: 50
|
|||||||
---
|
---
|
||||||
|
|
||||||
<!-- overview -->
|
<!-- overview -->
|
||||||
|
|
||||||
이것은 서비스 어카운트에 대한 클러스터 관리자 안내서다.
|
이것은 서비스 어카운트에 대한 클러스터 관리자 안내서다.
|
||||||
독자는 [쿠버네티스 서비스 어카운트 설정](/docs/tasks/configure-pod-container/configure-service-account/)에 익숙하다고 가정한다.
|
독자는 [쿠버네티스 서비스 어카운트 설정](/docs/tasks/configure-pod-container/configure-service-account/)에 익숙하다고 가정한다.
|
||||||
|
|
||||||
인증 및 사용자 어카운트에 대한 지원은 아직 준비 중이다.
|
인증 및 사용자 어카운트에 대한 지원은 아직 준비 중이다.
|
||||||
가끔은 서비스 어카운트를 더 잘 설명하기 위해 준비 중인 기능을 참조한다.
|
서비스 어카운트를 더 잘 설명하기 위해, 때때로 미완성 기능이 언급될 수 있다.
|
||||||
|
|
||||||
|
|
||||||
<!-- body -->
|
<!-- body -->
|
||||||
|
|
||||||
## 사용자 어카운트와 서비스 어카운트 비교
|
## 사용자 어카운트와 서비스 어카운트 비교
|
||||||
|
|
||||||
쿠버네티스는 여러 가지 이유로 사용자 어카운트와 서비스 어카운트의 개념을
|
쿠버네티스는 여러 가지 이유로 사용자 어카운트와 서비스 어카운트의 개념을
|
||||||
@@ -48,37 +49,51 @@ weight: 50
|
|||||||
파드가 생성되거나 수정될 때 파드를 수정하기 위해 동기적으로 동작한다.
|
파드가 생성되거나 수정될 때 파드를 수정하기 위해 동기적으로 동작한다.
|
||||||
이 플러그인이 활성 상태(대부분의 배포에서 기본값)인 경우 파드 생성 또는 수정 시 다음 작업을 수행한다.
|
이 플러그인이 활성 상태(대부분의 배포에서 기본값)인 경우 파드 생성 또는 수정 시 다음 작업을 수행한다.
|
||||||
|
|
||||||
1. 파드에 `ServiceAccount` 가 없다면, `ServiceAccount` 를 `default` 로 설정한다.
|
1. 파드에 `ServiceAccount` 가 없다면, `ServiceAccount` 를 `default` 로 설정한다.
|
||||||
1. 파드에 참조되는 `ServiceAccount` 가 있도록 하고, 그렇지 않으면 이를 거부한다.
|
1. 이전 단계는 파드에 참조되는 `ServiceAccount` 가 있도록 하고, 그렇지 않으면 이를 거부한다.
|
||||||
1. 파드에 `ImagePullSecrets` 이 없는 경우, `ServiceAccount` 의 `ImagePullSecrets` 이 파드에 추가된다.
|
1. 서비스어카운트 `automountServiceAccountToken` 와 파드의 `automountServiceAccountToken` 중 어느 것도 `false` 로 설정되어 있지 않다면, API 접근을 위한 토큰이 포함된 `volume` 을 파드에 추가한다.
|
||||||
1. 파드에 API 접근을 위한 토큰이 포함된 `volume` 을 추가한다.
|
1. 이전 단계에서 서비스어카운트 토큰을 위한 볼륨이 만들어졌다면, `/var/run/secrets/kubernetes.io/serviceaccount` 에 마운트된 파드의 각 컨테이너에 `volumeSource` 를 추가한다.
|
||||||
1. `/var/run/secrets/kubernetes.io/serviceaccount` 에 마운트된 파드의 각 컨테이너에 `volumeSource` 를 추가한다.
|
1. 파드에 `ImagePullSecrets` 이 없는 경우, `ServiceAccount` 의 `ImagePullSecrets` 이 파드에 추가된다.
|
||||||
|
|
||||||
#### 바인딩된 서비스 어카운트 토큰 볼륨
|
#### 바인딩된 서비스 어카운트 토큰 볼륨
|
||||||
|
|
||||||
{{< feature-state for_k8s_version="v1.21" state="beta" >}}
|
{{< feature-state for_k8s_version="v1.21" state="beta" >}}
|
||||||
|
|
||||||
`BoundServiceAccountTokenVolume` [기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)가 활성화되면, 서비스 어카운트 어드미션 컨트롤러가
|
`BoundServiceAccountTokenVolume` [기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)가 활성화되면,
|
||||||
시크릿 볼륨 대신 프로젝티드 서비스 어카운트 토큰 볼륨을 추가한다. 서비스 어카운트 토큰은 기본적으로 1시간 후에 만료되거나 파드가 삭제된다. [프로젝티드 볼륨](/docs/tasks/configure-pod-container/configure-projected-volume-storage/)에 대한 자세한 내용을 참고한다.
|
토큰 컨트롤러에 의해 생성된 무기한 서비스 어카운트 토큰을 위해, 서비스 어카운트 어드미션 컨트롤러가 시크릿 기반 볼륨 대신 다음과 같은 프로젝티드 볼륨을 추가한다.
|
||||||
|
|
||||||
이 기능은 모든 네임스페이스에 "kube-root-ca.crt" 컨피그맵을 게시하는 활성화된 `RootCAConfigMap` 기능 게이트에 따라 다르다. 이 컨피그맵에는 kube-apiserver에 대한 연결을 확인하는 데 사용되는 CA 번들이 포함되어 있다.
|
```yaml
|
||||||
|
- name: kube-api-access-<random-suffix>
|
||||||
|
projected:
|
||||||
|
defaultMode: 420 # 0644
|
||||||
|
sources:
|
||||||
|
- serviceAccountToken:
|
||||||
|
expirationSeconds: 3600
|
||||||
|
path: token
|
||||||
|
- configMap:
|
||||||
|
items:
|
||||||
|
- key: ca.crt
|
||||||
|
path: ca.crt
|
||||||
|
name: kube-root-ca.crt
|
||||||
|
- downwardAPI:
|
||||||
|
items:
|
||||||
|
- fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
path: namespace
|
||||||
|
```
|
||||||
|
|
||||||
1. 파드에 `serviceAccountName`가 없다면, `serviceAccountName`를
|
프로젝티드 볼륨은 세 가지로 구성된다.
|
||||||
`default`로 설정한다.
|
|
||||||
1. 파드에 참조되는 `serviceAccountName`가 있도록 하고, 그렇지 않으면
|
|
||||||
이를 거부한다.
|
|
||||||
1. 파드에 `imagePullSecrets`이 없는 경우, 서비스어카운트의
|
|
||||||
`imagePullSecrets`이 파드에 추가된다.
|
|
||||||
1. 서비스어카운트 `automountServiceAccountToken` 또는 파드의
|
|
||||||
`automountServiceAccountToken` 이 `false` 로 설정되지 않은 경우
|
|
||||||
파드에 API 접근 토큰이 포함된 `volume`을 추가한다.
|
|
||||||
1. 이전 단계에서 서비스어카운트 토큰에 대한 볼륨을 생성한 경우,
|
|
||||||
`/var/run/secrets/kubernetes.io/serviceaccount`에 마운트된
|
|
||||||
파드의 각 컨테이너에 `volumeSource`를 추가한다.
|
|
||||||
|
|
||||||
`BoundServiceAccountTokenVolume` 기능 게이트가 활성화되면 서비스 어카운트 볼륨을 프로젝티드 볼륨으로 마이그레이션할 수 있다.
|
1. kube-apiserver로부터 TokenRequest API를 통해 얻은 서비스어카운트토큰(ServiceAccountToken). 서비스어카운트토큰은 기본적으로 1시간 뒤에, 또는 파드가 삭제될 때 만료된다. 서비스어카운트토큰은 파드에 연결되며 kube-apiserver를 위해 존재한다.
|
||||||
서비스 어카운트 토큰은 1시간 후에 만료되거나 파드가 삭제된다.
|
1. kube-apiserver에 대한 연결을 확인하는 데 사용되는 CA 번들을 포함하는 컨피그맵(ConfigMap). 이 기능은 모든 네임스페이스에 "kube-root-ca.crt" 컨피그맵을 게시하는 기능 게이트인 `RootCAConfigMap`이 활성화되어 있어야 동작한다. `RootCAConfigMap`은 1.20에서 기본적으로 활성화되어 있으며, 1.21 이상에서는 항상 활성화된 상태이다.
|
||||||
[프로젝티드 볼륨](/docs/tasks/configure-pod-container/configure-projected-volume-storage/)에 대한
|
1. 파드의 네임스페이스를 참조하는 DownwardAPI.
|
||||||
자세한 내용을 참조한다.
|
|
||||||
|
상세 사항은 [프로젝티드 볼륨](/docs/tasks/configure-pod-container/configure-projected-volume-storage/)을 참고한다.
|
||||||
|
|
||||||
|
`BoundServiceAccountTokenVolume` 기능 게이트가 활성화되어 있지 않은 경우,
|
||||||
|
위의 프로젝티드 볼륨을 파드 스펙에 추가하여 시크릿 기반 서비스 어카운트 볼륨을 프로젝티드 볼륨으로 수동으로 옮길 수 있다.
|
||||||
|
그러나, `RootCAConfigMap`은 활성화되어 있어야 한다.
|
||||||
|
|
||||||
### 토큰 컨트롤러
|
### 토큰 컨트롤러
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `APIPriorityAndFairness` | `false` | 알파 | 1.17 | 1.19 |
|
| `APIPriorityAndFairness` | `false` | 알파 | 1.17 | 1.19 |
|
||||||
| `APIPriorityAndFairness` | `true` | 베타 | 1.20 | |
|
| `APIPriorityAndFairness` | `true` | 베타 | 1.20 | |
|
||||||
| `APIResponseCompression` | `false` | 알파 | 1.7 | 1.15 |
|
| `APIResponseCompression` | `false` | 알파 | 1.7 | 1.15 |
|
||||||
| `APIResponseCompression` | `false` | 베타 | 1.16 | |
|
| `APIResponseCompression` | `true` | 베타 | 1.16 | |
|
||||||
| `APIServerIdentity` | `false` | 알파 | 1.20 | |
|
| `APIServerIdentity` | `false` | 알파 | 1.20 | |
|
||||||
| `AllowInsecureBackendProxy` | `true` | 베타 | 1.17 | |
|
| `AllowInsecureBackendProxy` | `true` | 베타 | 1.17 | |
|
||||||
| `AnyVolumeDataSource` | `false` | 알파 | 1.18 | |
|
| `AnyVolumeDataSource` | `false` | 알파 | 1.18 | |
|
||||||
@@ -90,6 +90,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `CSIStorageCapacity` | `true` | 베타 | 1.21 | |
|
| `CSIStorageCapacity` | `true` | 베타 | 1.21 | |
|
||||||
| `CSIVolumeFSGroupPolicy` | `false` | 알파 | 1.19 | 1.19 |
|
| `CSIVolumeFSGroupPolicy` | `false` | 알파 | 1.19 | 1.19 |
|
||||||
| `CSIVolumeFSGroupPolicy` | `true` | 베타 | 1.20 | |
|
| `CSIVolumeFSGroupPolicy` | `true` | 베타 | 1.20 | |
|
||||||
|
| `CSIVolumeHealth` | `false` | 알파 | 1.21 | |
|
||||||
| `ConfigurableFSGroupPolicy` | `false` | 알파 | 1.18 | 1.19 |
|
| `ConfigurableFSGroupPolicy` | `false` | 알파 | 1.18 | 1.19 |
|
||||||
| `ConfigurableFSGroupPolicy` | `true` | 베타 | 1.20 | |
|
| `ConfigurableFSGroupPolicy` | `true` | 베타 | 1.20 | |
|
||||||
| `CronJobControllerV2` | `false` | 알파 | 1.20 | 1.20 |
|
| `CronJobControllerV2` | `false` | 알파 | 1.20 | 1.20 |
|
||||||
@@ -125,14 +126,13 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `HPAScaleToZero` | `false` | 알파 | 1.16 | |
|
| `HPAScaleToZero` | `false` | 알파 | 1.16 | |
|
||||||
| `HugePageStorageMediumSize` | `false` | 알파 | 1.18 | 1.18 |
|
| `HugePageStorageMediumSize` | `false` | 알파 | 1.18 | 1.18 |
|
||||||
| `HugePageStorageMediumSize` | `true` | 베타 | 1.19 | |
|
| `HugePageStorageMediumSize` | `true` | 베타 | 1.19 | |
|
||||||
|
| `IndexedJob` | `false` | 알파 | 1.21 | |
|
||||||
| `IngressClassNamespacedParams` | `false` | 알파 | 1.21 | |
|
| `IngressClassNamespacedParams` | `false` | 알파 | 1.21 | |
|
||||||
| `IPv6DualStack` | `false` | 알파 | 1.15 | 1.20 |
|
| `IPv6DualStack` | `false` | 알파 | 1.15 | 1.20 |
|
||||||
| `IPv6DualStack` | `true` | 베타 | 1.21 | |
|
| `IPv6DualStack` | `true` | 베타 | 1.21 | |
|
||||||
| `KubeletCredentialProviders` | `false` | 알파 | 1.20 | |
|
| `KubeletCredentialProviders` | `false` | 알파 | 1.20 | |
|
||||||
| `KubeletPodResources` | `true` | 알파 | 1.13 | 1.14 |
|
|
||||||
| `KubeletPodResources` | `true` | 베타 | 1.15 | |
|
|
||||||
| `LegacyNodeRoleBehavior` | `false` | 알파 | 1.16 | 1.18 |
|
| `LegacyNodeRoleBehavior` | `false` | 알파 | 1.16 | 1.18 |
|
||||||
| `LegacyNodeRoleBehavior` | `true` | True | 1.19 | |
|
| `LegacyNodeRoleBehavior` | `true` | 베타 | 1.19 | |
|
||||||
| `LocalStorageCapacityIsolation` | `false` | 알파 | 1.7 | 1.9 |
|
| `LocalStorageCapacityIsolation` | `false` | 알파 | 1.7 | 1.9 |
|
||||||
| `LocalStorageCapacityIsolation` | `true` | 베타 | 1.10 | |
|
| `LocalStorageCapacityIsolation` | `true` | 베타 | 1.10 | |
|
||||||
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | 알파 | 1.15 | |
|
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | 알파 | 1.15 | |
|
||||||
@@ -158,8 +158,6 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `RotateKubeletServerCertificate` | `false` | 알파 | 1.7 | 1.11 |
|
| `RotateKubeletServerCertificate` | `false` | 알파 | 1.7 | 1.11 |
|
||||||
| `RotateKubeletServerCertificate` | `true` | 베타 | 1.12 | |
|
| `RotateKubeletServerCertificate` | `true` | 베타 | 1.12 | |
|
||||||
| `RunAsGroup` | `true` | 베타 | 1.14 | |
|
| `RunAsGroup` | `true` | 베타 | 1.14 | |
|
||||||
| `SCTPSupport` | `false` | 알파 | 1.12 | 1.18 |
|
|
||||||
| `SCTPSupport` | `true` | 베타 | 1.19 | |
|
|
||||||
| `ServerSideApply` | `false` | 알파 | 1.14 | 1.15 |
|
| `ServerSideApply` | `false` | 알파 | 1.14 | 1.15 |
|
||||||
| `ServerSideApply` | `true` | 베타 | 1.16 | |
|
| `ServerSideApply` | `true` | 베타 | 1.16 | |
|
||||||
| `ServiceInternalTrafficPolicy` | `false` | 알파 | 1.21 | |
|
| `ServiceInternalTrafficPolicy` | `false` | 알파 | 1.21 | |
|
||||||
@@ -181,12 +179,13 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `TopologyManager` | `true` | 베타 | 1.18 | |
|
| `TopologyManager` | `true` | 베타 | 1.18 | |
|
||||||
| `ValidateProxyRedirects` | `false` | 알파 | 1.12 | 1.13 |
|
| `ValidateProxyRedirects` | `false` | 알파 | 1.12 | 1.13 |
|
||||||
| `ValidateProxyRedirects` | `true` | 베타 | 1.14 | |
|
| `ValidateProxyRedirects` | `true` | 베타 | 1.14 | |
|
||||||
|
| `VolumeCapacityPriority` | `false` | 알파 | 1.21 | - |
|
||||||
| `WarningHeaders` | `true` | 베타 | 1.19 | |
|
| `WarningHeaders` | `true` | 베타 | 1.19 | |
|
||||||
| `WinDSR` | `false` | 알파 | 1.14 | |
|
| `WinDSR` | `false` | 알파 | 1.14 | |
|
||||||
| `WinOverlay` | `false` | 알파 | 1.14 | 1.19 |
|
| `WinOverlay` | `false` | 알파 | 1.14 | 1.19 |
|
||||||
| `WinOverlay` | `true` | 베타 | 1.20 | |
|
| `WinOverlay` | `true` | 베타 | 1.20 | |
|
||||||
| `WindowsEndpointSliceProxying` | `false` | 알파 | 1.19 | 1.20 |
|
| `WindowsEndpointSliceProxying` | `false` | 알파 | 1.19 | 1.20 |
|
||||||
| `WindowsEndpointSliceProxying` | `true` | beta | 1.21 | |
|
| `WindowsEndpointSliceProxying` | `true` | 베타 | 1.21 | |
|
||||||
{{< /table >}}
|
{{< /table >}}
|
||||||
|
|
||||||
### GA 또는 사용 중단된 기능을 위한 기능 게이트
|
### GA 또는 사용 중단된 기능을 위한 기능 게이트
|
||||||
@@ -225,7 +224,6 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `CSIPersistentVolume` | `false` | 알파 | 1.9 | 1.9 |
|
| `CSIPersistentVolume` | `false` | 알파 | 1.9 | 1.9 |
|
||||||
| `CSIPersistentVolume` | `true` | 베타 | 1.10 | 1.12 |
|
| `CSIPersistentVolume` | `true` | 베타 | 1.10 | 1.12 |
|
||||||
| `CSIPersistentVolume` | `true` | GA | 1.13 | - |
|
| `CSIPersistentVolume` | `true` | GA | 1.13 | - |
|
||||||
| `CSIVolumeHealth` | `false` | 알파 | 1.21 | - |
|
|
||||||
| `CustomPodDNS` | `false` | 알파 | 1.9 | 1.9 |
|
| `CustomPodDNS` | `false` | 알파 | 1.9 | 1.9 |
|
||||||
| `CustomPodDNS` | `true` | 베타| 1.10 | 1.13 |
|
| `CustomPodDNS` | `true` | 베타| 1.10 | 1.13 |
|
||||||
| `CustomPodDNS` | `true` | GA | 1.14 | - |
|
| `CustomPodDNS` | `true` | GA | 1.14 | - |
|
||||||
@@ -258,9 +256,9 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `EnableEquivalenceClassCache` | - | 사용중단 | 1.15 | - |
|
| `EnableEquivalenceClassCache` | - | 사용중단 | 1.15 | - |
|
||||||
| `EndpointSlice` | `false` | 알파 | 1.16 | 1.16 |
|
| `EndpointSlice` | `false` | 알파 | 1.16 | 1.16 |
|
||||||
| `EndpointSlice` | `false` | 베타 | 1.17 | 1.17 |
|
| `EndpointSlice` | `false` | 베타 | 1.17 | 1.17 |
|
||||||
| `EndpointSlice` | `true` | 베타 | 1.18 | 1.21 |
|
| `EndpointSlice` | `true` | 베타 | 1.18 | 1.20 |
|
||||||
| `EndpointSlice` | `true` | GA | 1.21 | - |
|
| `EndpointSlice` | `true` | GA | 1.21 | - |
|
||||||
| `EndpointSliceNodeName` | `false` | 알파 | 1.20 | 1.21 |
|
| `EndpointSliceNodeName` | `false` | 알파 | 1.20 | 1.20 |
|
||||||
| `EndpointSliceNodeName` | `true` | GA | 1.21 | - |
|
| `EndpointSliceNodeName` | `true` | GA | 1.21 | - |
|
||||||
| `ExperimentalCriticalPodAnnotation` | `false` | 알파 | 1.5 | 1.12 |
|
| `ExperimentalCriticalPodAnnotation` | `false` | 알파 | 1.5 | 1.12 |
|
||||||
| `ExperimentalCriticalPodAnnotation` | `false` | 사용중단 | 1.13 | - |
|
| `ExperimentalCriticalPodAnnotation` | `false` | 사용중단 | 1.13 | - |
|
||||||
@@ -278,7 +276,6 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `ImmutableEphemeralVolumes` | `false` | 알파 | 1.18 | 1.18 |
|
| `ImmutableEphemeralVolumes` | `false` | 알파 | 1.18 | 1.18 |
|
||||||
| `ImmutableEphemeralVolumes` | `true` | 베타 | 1.19 | 1.20 |
|
| `ImmutableEphemeralVolumes` | `true` | 베타 | 1.19 | 1.20 |
|
||||||
| `ImmutableEphemeralVolumes` | `true` | GA | 1.21 | |
|
| `ImmutableEphemeralVolumes` | `true` | GA | 1.21 | |
|
||||||
| `IndexedJob` | `false` | 알파 | 1.21 | |
|
|
||||||
| `Initializers` | `false` | 알파 | 1.7 | 1.13 |
|
| `Initializers` | `false` | 알파 | 1.7 | 1.13 |
|
||||||
| `Initializers` | - | 사용중단 | 1.14 | - |
|
| `Initializers` | - | 사용중단 | 1.14 | - |
|
||||||
| `KubeletConfigFile` | `false` | 알파 | 1.8 | 1.9 |
|
| `KubeletConfigFile` | `false` | 알파 | 1.8 | 1.9 |
|
||||||
@@ -315,6 +312,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `PodShareProcessNamespace` | `true` | 베타 | 1.12 | 1.16 |
|
| `PodShareProcessNamespace` | `true` | 베타 | 1.12 | 1.16 |
|
||||||
| `PodShareProcessNamespace` | `true` | GA | 1.17 | - |
|
| `PodShareProcessNamespace` | `true` | GA | 1.17 | - |
|
||||||
| `RequestManagement` | `false` | 알파 | 1.15 | 1.16 |
|
| `RequestManagement` | `false` | 알파 | 1.15 | 1.16 |
|
||||||
|
| `RequestManagement` | - | 사용중단 | 1.17 | - |
|
||||||
| `ResourceLimitsPriorityFunction` | `false` | 알파 | 1.9 | 1.18 |
|
| `ResourceLimitsPriorityFunction` | `false` | 알파 | 1.9 | 1.18 |
|
||||||
| `ResourceLimitsPriorityFunction` | - | 사용중단 | 1.19 | - |
|
| `ResourceLimitsPriorityFunction` | - | 사용중단 | 1.19 | - |
|
||||||
| `ResourceQuotaScopeSelectors` | `false` | 알파 | 1.11 | 1.11 |
|
| `ResourceQuotaScopeSelectors` | `false` | 알파 | 1.11 | 1.11 |
|
||||||
@@ -338,7 +336,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `ServiceAccountIssuerDiscovery` | `true` | 베타 | 1.20 | 1.20 |
|
| `ServiceAccountIssuerDiscovery` | `true` | 베타 | 1.20 | 1.20 |
|
||||||
| `ServiceAccountIssuerDiscovery` | `true` | GA | 1.21 | - |
|
| `ServiceAccountIssuerDiscovery` | `true` | GA | 1.21 | - |
|
||||||
| `ServiceAppProtocol` | `false` | 알파 | 1.18 | 1.18 |
|
| `ServiceAppProtocol` | `false` | 알파 | 1.18 | 1.18 |
|
||||||
| `ServiceAppProtocol` | `true` | 베타 | 1.19 | |
|
| `ServiceAppProtocol` | `true` | 베타 | 1.19 | 1.19 |
|
||||||
| `ServiceAppProtocol` | `true` | GA | 1.20 | - |
|
| `ServiceAppProtocol` | `true` | GA | 1.20 | - |
|
||||||
| `ServiceLoadBalancerFinalizer` | `false` | 알파 | 1.15 | 1.15 |
|
| `ServiceLoadBalancerFinalizer` | `false` | 알파 | 1.15 | 1.15 |
|
||||||
| `ServiceLoadBalancerFinalizer` | `true` | 베타 | 1.16 | 1.16 |
|
| `ServiceLoadBalancerFinalizer` | `true` | 베타 | 1.16 | 1.16 |
|
||||||
@@ -350,7 +348,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `StorageObjectInUseProtection` | `true` | GA | 1.11 | - |
|
| `StorageObjectInUseProtection` | `true` | GA | 1.11 | - |
|
||||||
| `StreamingProxyRedirects` | `false` | 베타 | 1.5 | 1.5 |
|
| `StreamingProxyRedirects` | `false` | 베타 | 1.5 | 1.5 |
|
||||||
| `StreamingProxyRedirects` | `true` | 베타 | 1.6 | 1.18 |
|
| `StreamingProxyRedirects` | `true` | 베타 | 1.6 | 1.18 |
|
||||||
| `StreamingProxyRedirects` | - | 사용중단| 1.19 | - |
|
| `StreamingProxyRedirects` | - | GA | 1.19 | - |
|
||||||
| `SupportIPVSProxyMode` | `false` | 알파 | 1.8 | 1.8 |
|
| `SupportIPVSProxyMode` | `false` | 알파 | 1.8 | 1.8 |
|
||||||
| `SupportIPVSProxyMode` | `false` | 베타 | 1.9 | 1.9 |
|
| `SupportIPVSProxyMode` | `false` | 베타 | 1.9 | 1.9 |
|
||||||
| `SupportIPVSProxyMode` | `true` | 베타 | 1.10 | 1.10 |
|
| `SupportIPVSProxyMode` | `true` | 베타 | 1.10 | 1.10 |
|
||||||
@@ -376,15 +374,15 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
| `TokenRequestProjection` | `true` | 베타 | 1.12 | 1.19 |
|
| `TokenRequestProjection` | `true` | 베타 | 1.12 | 1.19 |
|
||||||
| `TokenRequestProjection` | `true` | GA | 1.20 | - |
|
| `TokenRequestProjection` | `true` | GA | 1.20 | - |
|
||||||
| `VolumeCapacityPriority` | `false` | 알파 | 1.21 | - |
|
| `VolumeCapacityPriority` | `false` | 알파 | 1.21 | - |
|
||||||
| `VolumeSnapshotDataSource` | `false` | 알파 | 1.12 | 1.16 |
|
|
||||||
| `VolumeSnapshotDataSource` | `true` | 베타 | 1.17 | 1.19 |
|
|
||||||
| `VolumeSnapshotDataSource` | `true` | GA | 1.20 | - |
|
|
||||||
| `VolumePVCDataSource` | `false` | 알파 | 1.15 | 1.15 |
|
| `VolumePVCDataSource` | `false` | 알파 | 1.15 | 1.15 |
|
||||||
| `VolumePVCDataSource` | `true` | 베타 | 1.16 | 1.17 |
|
| `VolumePVCDataSource` | `true` | 베타 | 1.16 | 1.17 |
|
||||||
| `VolumePVCDataSource` | `true` | GA | 1.18 | - |
|
| `VolumePVCDataSource` | `true` | GA | 1.18 | - |
|
||||||
| `VolumeScheduling` | `false` | 알파 | 1.9 | 1.9 |
|
| `VolumeScheduling` | `false` | 알파 | 1.9 | 1.9 |
|
||||||
| `VolumeScheduling` | `true` | 베타 | 1.10 | 1.12 |
|
| `VolumeScheduling` | `true` | 베타 | 1.10 | 1.12 |
|
||||||
| `VolumeScheduling` | `true` | GA | 1.13 | - |
|
| `VolumeScheduling` | `true` | GA | 1.13 | - |
|
||||||
|
| `VolumeSnapshotDataSource` | `false` | 알파 | 1.12 | 1.16 |
|
||||||
|
| `VolumeSnapshotDataSource` | `true` | 베타 | 1.17 | 1.19 |
|
||||||
|
| `VolumeSnapshotDataSource` | `true` | GA | 1.20 | - |
|
||||||
| `VolumeSubpath` | `true` | GA | 1.10 | - |
|
| `VolumeSubpath` | `true` | GA | 1.10 | - |
|
||||||
| `VolumeSubpathEnvExpansion` | `false` | 알파 | 1.14 | 1.14 |
|
| `VolumeSubpathEnvExpansion` | `false` | 알파 | 1.14 | 1.14 |
|
||||||
| `VolumeSubpathEnvExpansion` | `true` | 베타 | 1.15 | 1.16 |
|
| `VolumeSubpathEnvExpansion` | `true` | 베타 | 1.15 | 1.16 |
|
||||||
@@ -451,7 +449,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
- `APIServerIdentity`: 클러스터의 각 API 서버에 ID를 할당한다.
|
- `APIServerIdentity`: 클러스터의 각 API 서버에 ID를 할당한다.
|
||||||
- `Accelerators`: 도커 사용 시 Nvidia GPU 지원 활성화한다.
|
- `Accelerators`: 도커 사용 시 Nvidia GPU 지원 활성화한다.
|
||||||
- `AdvancedAuditing`: [고급 감사](/docs/tasks/debug-application-cluster/audit/#advanced-audit) 기능을 활성화한다.
|
- `AdvancedAuditing`: [고급 감사](/docs/tasks/debug-application-cluster/audit/#advanced-audit) 기능을 활성화한다.
|
||||||
- `AffinityInAnnotations`(*사용 중단됨*): [파드 어피니티 또는 안티-어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#어피니티-affinity-와-안티-어피니티-anti-affinity)
|
- `AffinityInAnnotations`: [파드 어피니티 또는 안티-어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#어피니티-affinity-와-안티-어피니티-anti-affinity)
|
||||||
설정을 활성화한다.
|
설정을 활성화한다.
|
||||||
- `AllowExtTrafficLocalEndpoints`: 서비스가 외부 요청을 노드의 로컬 엔드포인트로 라우팅할 수 있도록 한다.
|
- `AllowExtTrafficLocalEndpoints`: 서비스가 외부 요청을 노드의 로컬 엔드포인트로 라우팅할 수 있도록 한다.
|
||||||
- `AllowInsecureBackendProxy`: 사용자가 파드 로그 요청에서 kubelet의
|
- `AllowInsecureBackendProxy`: 사용자가 파드 로그 요청에서 kubelet의
|
||||||
@@ -592,18 +590,18 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
hugepages 사용을 활성화한다.
|
hugepages 사용을 활성화한다.
|
||||||
- `DryRun`: 서버 측의 [dry run](/docs/reference/using-api/api-concepts/#dry-run) 요청을
|
- `DryRun`: 서버 측의 [dry run](/docs/reference/using-api/api-concepts/#dry-run) 요청을
|
||||||
요청을 활성화하여 커밋하지 않고 유효성 검사, 병합 및 변화를 테스트할 수 있다.
|
요청을 활성화하여 커밋하지 않고 유효성 검사, 병합 및 변화를 테스트할 수 있다.
|
||||||
- `DynamicAuditing`(*사용 중단됨*): v1.19 이전의 버전에서 동적 감사를 활성화하는 데 사용된다.
|
- `DynamicAuditing`: v1.19 이전의 버전에서 동적 감사를 활성화하는 데 사용된다.
|
||||||
- `DynamicKubeletConfig`: kubelet의 동적 구성을 활성화한다.
|
- `DynamicKubeletConfig`: kubelet의 동적 구성을 활성화한다.
|
||||||
[kubelet 재구성](/docs/tasks/administer-cluster/reconfigure-kubelet/)을 참고한다.
|
[kubelet 재구성](/docs/tasks/administer-cluster/reconfigure-kubelet/)을 참고한다.
|
||||||
- `DynamicProvisioningScheduling`: 볼륨 토폴로지를 인식하고 PV 프로비저닝을 처리하도록
|
- `DynamicProvisioningScheduling`: 볼륨 토폴로지를 인식하고 PV 프로비저닝을 처리하도록
|
||||||
기본 스케줄러를 확장한다.
|
기본 스케줄러를 확장한다.
|
||||||
이 기능은 v1.12의 `VolumeScheduling` 기능으로 대체되었다.
|
이 기능은 v1.12의 `VolumeScheduling` 기능으로 대체되었다.
|
||||||
- `DynamicVolumeProvisioning`(*사용 중단됨*): 파드에 퍼시스턴트 볼륨의
|
- `DynamicVolumeProvisioning`: 파드에 퍼시스턴트 볼륨의
|
||||||
[동적 프로비저닝](/ko/docs/concepts/storage/dynamic-provisioning/)을 활성화한다.
|
[동적 프로비저닝](/ko/docs/concepts/storage/dynamic-provisioning/)을 활성화한다.
|
||||||
- `EfficientWatchResumption`: 스토리지에서 생성된 북마크(진행
|
- `EfficientWatchResumption`: 스토리지에서 생성된 북마크(진행
|
||||||
알림) 이벤트를 사용자에게 전달할 수 있다. 이것은 감시 작업에만
|
알림) 이벤트를 사용자에게 전달할 수 있다. 이것은 감시 작업에만
|
||||||
적용된다.
|
적용된다.
|
||||||
- `EnableAggregatedDiscoveryTimeout` (*사용 중단됨*): 수집된 검색 호출에서 5초
|
- `EnableAggregatedDiscoveryTimeout`: 수집된 검색 호출에서 5초
|
||||||
시간 초과를 활성화한다.
|
시간 초과를 활성화한다.
|
||||||
- `EnableEquivalenceClassCache`: 스케줄러가 파드를 스케줄링할 때 노드의
|
- `EnableEquivalenceClassCache`: 스케줄러가 파드를 스케줄링할 때 노드의
|
||||||
동등성을 캐시할 수 있게 한다.
|
동등성을 캐시할 수 있게 한다.
|
||||||
@@ -666,6 +664,8 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
- `IngressClassNamespacedParams`: `IngressClass` 리소스가 네임스페이스 범위로
|
- `IngressClassNamespacedParams`: `IngressClass` 리소스가 네임스페이스 범위로
|
||||||
한정된 파라미터를 이용할 수 있도록 한다. 이 기능은 `IngressClass.spec.parameters` 에
|
한정된 파라미터를 이용할 수 있도록 한다. 이 기능은 `IngressClass.spec.parameters` 에
|
||||||
`Scope` 와 `Namespace` 2개의 필드를 추가한다.
|
`Scope` 와 `Namespace` 2개의 필드를 추가한다.
|
||||||
|
- `Initializers`: Initializers 어드미션 플러그인을 사용하여 오브젝트 생성의
|
||||||
|
비동기 조정을 허용한다.
|
||||||
- `IPv6DualStack`: IPv6을 위한 [이중 스택](/ko/docs/concepts/services-networking/dual-stack/)
|
- `IPv6DualStack`: IPv6을 위한 [이중 스택](/ko/docs/concepts/services-networking/dual-stack/)
|
||||||
기능을 활성화한다.
|
기능을 활성화한다.
|
||||||
- `KubeletConfigFile`: 구성 파일을 사용하여 지정된 파일에서
|
- `KubeletConfigFile`: 구성 파일을 사용하여 지정된 파일에서
|
||||||
@@ -699,8 +699,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
축출할 파드를 반-랜덤하게 선택하는 기법을 활성화한다.
|
축출할 파드를 반-랜덤하게 선택하는 기법을 활성화한다.
|
||||||
- `MixedProtocolLBService`: 동일한 로드밸런서 유형 서비스 인스턴스에서 다른 프로토콜
|
- `MixedProtocolLBService`: 동일한 로드밸런서 유형 서비스 인스턴스에서 다른 프로토콜
|
||||||
사용을 활성화한다.
|
사용을 활성화한다.
|
||||||
- `MountContainers` (*사용 중단됨*): 호스트의 유틸리티 컨테이너를 볼륨 마운터로
|
- `MountContainers`: 호스트의 유틸리티 컨테이너를 볼륨 마운터로 사용할 수 있다.
|
||||||
사용할 수 있다.
|
|
||||||
- `MountPropagation`: 한 컨테이너에서 다른 컨테이너 또는 파드로 마운트된 볼륨을 공유할 수 있다.
|
- `MountPropagation`: 한 컨테이너에서 다른 컨테이너 또는 파드로 마운트된 볼륨을 공유할 수 있다.
|
||||||
자세한 내용은 [마운트 전파(propagation)](/ko/docs/concepts/storage/volumes/#마운트-전파-propagation)을 참고한다.
|
자세한 내용은 [마운트 전파(propagation)](/ko/docs/concepts/storage/volumes/#마운트-전파-propagation)을 참고한다.
|
||||||
- `NamespaceDefaultLabelName`: API 서버로 하여금 모든 네임스페이스에 대해 변경할 수 없는 (immutable)
|
- `NamespaceDefaultLabelName`: API 서버로 하여금 모든 네임스페이스에 대해 변경할 수 없는 (immutable)
|
||||||
@@ -742,7 +741,9 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
응답에서 남은 항목 수를 표시하도록 허용한다.
|
응답에서 남은 항목 수를 표시하도록 허용한다.
|
||||||
- `RemoveSelfLink`: ObjectMeta 및 ListMeta에서 `selfLink` 를 사용하지 않고
|
- `RemoveSelfLink`: ObjectMeta 및 ListMeta에서 `selfLink` 를 사용하지 않고
|
||||||
제거한다.
|
제거한다.
|
||||||
- `ResourceLimitsPriorityFunction` (*사용 중단됨*): 입력 파드의 CPU 및 메모리 한도 중
|
- `RequestManagement`: 각 API 서버에서 우선 순위 및 공정성으로 요청 동시성을
|
||||||
|
관리할 수 있다. 1.17 이후 `APIPriorityAndFairness` 에서 사용 중단되었다.
|
||||||
|
- `ResourceLimitsPriorityFunction`: 입력 파드의 CPU 및 메모리 한도 중
|
||||||
하나 이상을 만족하는 노드에 가능한 최저 점수 1을 할당하는
|
하나 이상을 만족하는 노드에 가능한 최저 점수 1을 할당하는
|
||||||
스케줄러 우선 순위 기능을 활성화한다. 의도는 동일한 점수를 가진
|
스케줄러 우선 순위 기능을 활성화한다. 의도는 동일한 점수를 가진
|
||||||
노드 사이의 관계를 끊는 것이다.
|
노드 사이의 관계를 끊는 것이다.
|
||||||
@@ -770,11 +771,11 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
JWKS URL)를 활성화한다. 자세한 내용은
|
JWKS URL)를 활성화한다. 자세한 내용은
|
||||||
[파드의 서비스 어카운트 구성](/docs/tasks/configure-pod-container/configure-service-account/#service-account-issuer-discovery)을
|
[파드의 서비스 어카운트 구성](/docs/tasks/configure-pod-container/configure-service-account/#service-account-issuer-discovery)을
|
||||||
참고한다.
|
참고한다.
|
||||||
- `ServiceAppProtocol`: 서비스와 엔드포인트에서 `AppProtocol` 필드를 활성화한다.
|
- `ServiceAppProtocol`: 서비스와 엔드포인트에서 `appProtocol` 필드를 활성화한다.
|
||||||
- `ServiceInternalTrafficPolicy`: 서비스에서 `InternalTrafficPolicy` 필드를 활성화한다.
|
- `ServiceInternalTrafficPolicy`: 서비스에서 `internalTrafficPolicy` 필드를 활성화한다.
|
||||||
- `ServiceLBNodePortControl`: 서비스에서`spec.allocateLoadBalancerNodePorts` 필드를
|
- `ServiceLBNodePortControl`: 서비스에서 `allocateLoadBalancerNodePorts` 필드를 활성화한다.
|
||||||
활성화한다.
|
- `ServiceLoadBalancerClass`: 서비스에서 `loadBalancerClass` 필드를 활성화한다. 자세한 내용은
|
||||||
- `ServiceLoadBalancerClass`: 서비스에서 `LoadBalancerClass` 필드를 활성화한다. 자세한 내용은 [로드밸런서 구현체의 종류 확인하기](/ko/docs/concepts/services-networking/service/#load-balancer-class)를 참고한다.
|
[로드밸런서 구현체의 종류 확인하기](/ko/docs/concepts/services-networking/service/#load-balancer-class)를 참고한다.
|
||||||
- `ServiceLoadBalancerFinalizer`: 서비스 로드 밸런서에 대한 Finalizer 보호를 활성화한다.
|
- `ServiceLoadBalancerFinalizer`: 서비스 로드 밸런서에 대한 Finalizer 보호를 활성화한다.
|
||||||
- `ServiceNodeExclusion`: 클라우드 제공자가 생성한 로드 밸런서에서 노드를
|
- `ServiceNodeExclusion`: 클라우드 제공자가 생성한 로드 밸런서에서 노드를
|
||||||
제외할 수 있다. "`node.kubernetes.io/exclude-from-external-load-balancers`"로
|
제외할 수 있다. "`node.kubernetes.io/exclude-from-external-load-balancers`"로
|
||||||
@@ -785,7 +786,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
참고한다.
|
참고한다.
|
||||||
- `SetHostnameAsFQDN`: 전체 주소 도메인 이름(FQDN)을 파드의 호스트 이름으로
|
- `SetHostnameAsFQDN`: 전체 주소 도메인 이름(FQDN)을 파드의 호스트 이름으로
|
||||||
설정하는 기능을 활성화한다.
|
설정하는 기능을 활성화한다.
|
||||||
[파드의 `setHostnameAsFQDN` 필드](/ko/docs/concepts/services-networking/dns-pod-service/#파드의-sethostnameasfqdn-필드)를 참고한다.
|
[파드의 `setHostnameAsFQDN` 필드](/ko/docs/concepts/services-networking/dns-pod-service/#pod-sethostnameasfqdn-field)를 참고한다.
|
||||||
- `StartupProbe`: kubelet에서
|
- `StartupProbe`: kubelet에서
|
||||||
[스타트업](/ko/docs/concepts/workloads/pods/pod-lifecycle/#언제-스타트업-프로브를-사용해야-하는가)
|
[스타트업](/ko/docs/concepts/workloads/pods/pod-lifecycle/#언제-스타트업-프로브를-사용해야-하는가)
|
||||||
프로브를 활성화한다.
|
프로브를 활성화한다.
|
||||||
@@ -800,12 +801,12 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
스트리밍 요청의 예로는 `exec`, `attach` 및 `port-forward` 요청이 있다.
|
스트리밍 요청의 예로는 `exec`, `attach` 및 `port-forward` 요청이 있다.
|
||||||
- `SupportIPVSProxyMode`: IPVS를 사용하여 클러스터 내 서비스 로드 밸런싱을 제공한다.
|
- `SupportIPVSProxyMode`: IPVS를 사용하여 클러스터 내 서비스 로드 밸런싱을 제공한다.
|
||||||
자세한 내용은 [서비스 프록시](/ko/docs/concepts/services-networking/service/#가상-ip와-서비스-프록시)를 참고한다.
|
자세한 내용은 [서비스 프록시](/ko/docs/concepts/services-networking/service/#가상-ip와-서비스-프록시)를 참고한다.
|
||||||
- `SupportPodPidsLimit`: 파드의 PID 제한을 지원한다.
|
|
||||||
- `SupportNodePidsLimit`: 노드에서 PID 제한 지원을 활성화한다.
|
- `SupportNodePidsLimit`: 노드에서 PID 제한 지원을 활성화한다.
|
||||||
`--system-reserved` 및 `--kube-reserved` 옵션의 `pid=<number>`
|
`--system-reserved` 및 `--kube-reserved` 옵션의 `pid=<number>`
|
||||||
파라미터를 지정하여 지정된 수의 프로세스 ID가
|
파라미터를 지정하여 지정된 수의 프로세스 ID가
|
||||||
시스템 전체와 각각 쿠버네티스 시스템 데몬에 대해 예약되도록
|
시스템 전체와 각각 쿠버네티스 시스템 데몬에 대해 예약되도록
|
||||||
할 수 있다.
|
할 수 있다.
|
||||||
|
- `SupportPodPidsLimit`: 파드의 PID 제한에 대한 지원을 활성화한다.
|
||||||
- `SuspendJob`: 잡 중지/재시작 기능을 활성화한다.
|
- `SuspendJob`: 잡 중지/재시작 기능을 활성화한다.
|
||||||
자세한 내용은 [잡 문서](/ko/docs/concepts/workloads/controllers/job/)를
|
자세한 내용은 [잡 문서](/ko/docs/concepts/workloads/controllers/job/)를
|
||||||
참고한다.
|
참고한다.
|
||||||
@@ -831,6 +832,9 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
- `TopologyManager`: 쿠버네티스의 다른 컴포넌트에 대한 세분화된 하드웨어 리소스
|
- `TopologyManager`: 쿠버네티스의 다른 컴포넌트에 대한 세분화된 하드웨어 리소스
|
||||||
할당을 조정하는 메커니즘을 활성화한다.
|
할당을 조정하는 메커니즘을 활성화한다.
|
||||||
[노드의 토폴로지 관리 정책 제어](/docs/tasks/administer-cluster/topology-manager/)를 참고한다.
|
[노드의 토폴로지 관리 정책 제어](/docs/tasks/administer-cluster/topology-manager/)를 참고한다.
|
||||||
|
- `ValidateProxyRedirects`: 이 플래그는 API 서버가 동일한 호스트로만 리디렉션되는가를
|
||||||
|
확인해야 하는지 여부를 제어한다. `StreamingProxyRedirects`
|
||||||
|
플래그가 활성화된 경우에만 사용된다.
|
||||||
- `VolumeCapacityPriority`: 가용 PV 용량을 기반으로
|
- `VolumeCapacityPriority`: 가용 PV 용량을 기반으로
|
||||||
여러 토폴로지에 있는 노드들의 우선순위를 정하는 기능을 활성화한다.
|
여러 토폴로지에 있는 노드들의 우선순위를 정하는 기능을 활성화한다.
|
||||||
- `VolumePVCDataSource`: 기존 PVC를 데이터 소스로 지정하는 기능을 지원한다.
|
- `VolumePVCDataSource`: 기존 PVC를 데이터 소스로 지정하는 기능을 지원한다.
|
||||||
@@ -839,6 +843,7 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능
|
|||||||
`PersistentLocalVolumes` 기능 게이트와 함께 사용될 때
|
`PersistentLocalVolumes` 기능 게이트와 함께 사용될 때
|
||||||
[`local`](/ko/docs/concepts/storage/volumes/#local) 볼륨 유형을 사용할 수 있다.
|
[`local`](/ko/docs/concepts/storage/volumes/#local) 볼륨 유형을 사용할 수 있다.
|
||||||
- `VolumeSnapshotDataSource`: 볼륨 스냅샷 데이터 소스 지원을 활성화한다.
|
- `VolumeSnapshotDataSource`: 볼륨 스냅샷 데이터 소스 지원을 활성화한다.
|
||||||
|
- `VolumeSubpath`: 컨테이너에 볼륨의 하위 경로(subpath)를 마운트할 수 있다.
|
||||||
- `VolumeSubpathEnvExpansion`: 환경 변수를 `subPath`로 확장하기 위해
|
- `VolumeSubpathEnvExpansion`: 환경 변수를 `subPath`로 확장하기 위해
|
||||||
`subPathExpr` 필드를 활성화한다.
|
`subPathExpr` 필드를 활성화한다.
|
||||||
- `WarningHeaders`: API 응답에서 경고 헤더를 보낼 수 있다.
|
- `WarningHeaders`: API 응답에서 경고 헤더를 보낼 수 있다.
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -28,12 +28,12 @@ API 호출 또는 요청/응답 타입을 직접 구현할 필요는 없다.
|
|||||||
|
|
||||||
| 언어 | 클라이언트 라이브러리 | 예제 프로그램 |
|
| 언어 | 클라이언트 라이브러리 | 예제 프로그램 |
|
||||||
|----------|----------------|-----------------|
|
|----------|----------------|-----------------|
|
||||||
| Go | [github.com/kubernetes/client-go/](https://github.com/kubernetes/client-go/) | [둘러보기](https://github.com/kubernetes/client-go/tree/master/examples)
|
|
||||||
| Python | [github.com/kubernetes-client/python/](https://github.com/kubernetes-client/python/) | [둘러보기](https://github.com/kubernetes-client/python/tree/master/examples)
|
|
||||||
| Java | [github.com/kubernetes-client/java](https://github.com/kubernetes-client/java/) | [둘러보기](https://github.com/kubernetes-client/java#installation)
|
|
||||||
| dotnet | [github.com/kubernetes-client/csharp](https://github.com/kubernetes-client/csharp) | [둘러보기](https://github.com/kubernetes-client/csharp/tree/master/examples/simple)
|
| dotnet | [github.com/kubernetes-client/csharp](https://github.com/kubernetes-client/csharp) | [둘러보기](https://github.com/kubernetes-client/csharp/tree/master/examples/simple)
|
||||||
| JavaScript | [github.com/kubernetes-client/javascript](https://github.com/kubernetes-client/javascript) | [둘러보기](https://github.com/kubernetes-client/javascript/tree/master/examples)
|
| Go | [github.com/kubernetes/client-go/](https://github.com/kubernetes/client-go/) | [둘러보기](https://github.com/kubernetes/client-go/tree/master/examples)
|
||||||
| Haskell | [github.com/kubernetes-client/haskell](https://github.com/kubernetes-client/haskell) | [둘러보기](https://github.com/kubernetes-client/haskell/tree/master/kubernetes-client/example)
|
| Haskell | [github.com/kubernetes-client/haskell](https://github.com/kubernetes-client/haskell) | [둘러보기](https://github.com/kubernetes-client/haskell/tree/master/kubernetes-client/example)
|
||||||
|
| Java | [github.com/kubernetes-client/java](https://github.com/kubernetes-client/java/) | [둘러보기](https://github.com/kubernetes-client/java#installation)
|
||||||
|
| JavaScript | [github.com/kubernetes-client/javascript](https://github.com/kubernetes-client/javascript) | [둘러보기](https://github.com/kubernetes-client/javascript/tree/master/examples)
|
||||||
|
| Python | [github.com/kubernetes-client/python/](https://github.com/kubernetes-client/python/) | [둘러보기](https://github.com/kubernetes-client/python/tree/master/examples)
|
||||||
|
|
||||||
|
|
||||||
## 커뮤니티에 의해 관리되는 클라이언트 라이브러리
|
## 커뮤니티에 의해 관리되는 클라이언트 라이브러리
|
||||||
@@ -46,6 +46,10 @@ API 호출 또는 요청/응답 타입을 직접 구현할 필요는 없다.
|
|||||||
| 언어 | 클라이언트 라이브러리 |
|
| 언어 | 클라이언트 라이브러리 |
|
||||||
| -------------------- | ---------------------------------------- |
|
| -------------------- | ---------------------------------------- |
|
||||||
| Clojure | [github.com/yanatan16/clj-kubernetes-api](https://github.com/yanatan16/clj-kubernetes-api) |
|
| Clojure | [github.com/yanatan16/clj-kubernetes-api](https://github.com/yanatan16/clj-kubernetes-api) |
|
||||||
|
| DotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) |
|
||||||
|
| DotNet (RestSharp) | [github.com/masroorhasan/Kubernetes.DotNet](https://github.com/masroorhasan/Kubernetes.DotNet) |
|
||||||
|
| Elixir | [github.com/obmarg/kazan](https://github.com/obmarg/kazan/) |
|
||||||
|
| Elixir | [github.com/coryodaniel/k8s](https://github.com/coryodaniel/k8s) |
|
||||||
| Go | [github.com/ericchiang/k8s](https://github.com/ericchiang/k8s) |
|
| Go | [github.com/ericchiang/k8s](https://github.com/ericchiang/k8s) |
|
||||||
| Java (OSGi) | [bitbucket.org/amdatulabs/amdatu-kubernetes](https://bitbucket.org/amdatulabs/amdatu-kubernetes) |
|
| Java (OSGi) | [bitbucket.org/amdatulabs/amdatu-kubernetes](https://bitbucket.org/amdatulabs/amdatu-kubernetes) |
|
||||||
| Java (Fabric8, OSGi) | [github.com/fabric8io/kubernetes-client](https://github.com/fabric8io/kubernetes-client) |
|
| Java (Fabric8, OSGi) | [github.com/fabric8io/kubernetes-client](https://github.com/fabric8io/kubernetes-client) |
|
||||||
@@ -68,13 +72,10 @@ API 호출 또는 요청/응답 타입을 직접 구현할 필요는 없다.
|
|||||||
| Python | [github.com/Frankkkkk/pykorm](https://github.com/Frankkkkk/pykorm) |
|
| Python | [github.com/Frankkkkk/pykorm](https://github.com/Frankkkkk/pykorm) |
|
||||||
| Ruby | [github.com/abonas/kubeclient](https://github.com/abonas/kubeclient) |
|
| Ruby | [github.com/abonas/kubeclient](https://github.com/abonas/kubeclient) |
|
||||||
| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) |
|
| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) |
|
||||||
|
| Ruby | [github.com/k8s-ruby/k8s-ruby](https://github.com/k8s-ruby/k8s-ruby) |
|
||||||
| Ruby | [github.com/kontena/k8s-client](https://github.com/kontena/k8s-client) |
|
| Ruby | [github.com/kontena/k8s-client](https://github.com/kontena/k8s-client) |
|
||||||
| Rust | [github.com/clux/kube-rs](https://github.com/clux/kube-rs) |
|
| Rust | [github.com/clux/kube-rs](https://github.com/clux/kube-rs) |
|
||||||
| Rust | [github.com/ynqa/kubernetes-rust](https://github.com/ynqa/kubernetes-rust) |
|
| Rust | [github.com/ynqa/kubernetes-rust](https://github.com/ynqa/kubernetes-rust) |
|
||||||
| Scala | [github.com/hagay3/skuber](https://github.com/hagay3/skuber) |
|
| Scala | [github.com/hagay3/skuber](https://github.com/hagay3/skuber) |
|
||||||
| Scala | [github.com/joan38/kubernetes-client](https://github.com/joan38/kubernetes-client) |
|
| Scala | [github.com/joan38/kubernetes-client](https://github.com/joan38/kubernetes-client) |
|
||||||
| DotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) |
|
|
||||||
| Swift | [github.com/swiftkube/client](https://github.com/swiftkube/client) |
|
| Swift | [github.com/swiftkube/client](https://github.com/swiftkube/client) |
|
||||||
| DotNet (RestSharp) | [github.com/masroorhasan/Kubernetes.DotNet](https://github.com/masroorhasan/Kubernetes.DotNet) |
|
|
||||||
| Elixir | [github.com/obmarg/kazan](https://github.com/obmarg/kazan/) |
|
|
||||||
| Elixir | [github.com/coryodaniel/k8s](https://github.com/coryodaniel/k8s) |
|
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://
|
|||||||
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
|
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
|
||||||
```
|
```
|
||||||
|
|
||||||
예를 들어 kops 버전을 v1.15.0을 다운로드 하려면 다음을 입력한다.
|
예를 들어 kops 버전을 v1.20.0을 다운로드 하려면 다음을 입력한다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -LO https://github.com/kubernetes/kops/releases/download/1.15.0/kops-darwin-amd64
|
curl -LO https://github.com/kubernetes/kops/releases/download/v1.20.0/kops-darwin-amd64
|
||||||
```
|
```
|
||||||
|
|
||||||
kops 바이너리를 실행 가능하게 만든다.
|
kops 바이너리를 실행 가능하게 만든다.
|
||||||
@@ -94,10 +94,10 @@ curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://
|
|||||||
```shell
|
```shell
|
||||||
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
|
$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)
|
||||||
```
|
```
|
||||||
예를 들어 kops 버전을 v1.15.0을 다운로드 하려면 다음을 입력한다.
|
예를 들어 kops 버전을 v1.20.0을 다운로드 하려면 다음을 입력한다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -LO https://github.com/kubernetes/kops/releases/download/1.15.0/kops-linux-amd64
|
curl -LO https://github.com/kubernetes/kops/releases/download/v1.20.0/kops-linux-amd64
|
||||||
```
|
```
|
||||||
|
|
||||||
kops 바이너리를 실행 가능하게 만든다.
|
kops 바이너리를 실행 가능하게 만든다.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Kubespray는 환경에 맞는 프로비저닝을 돕기 위해 아래와 같은
|
|||||||
|
|
||||||
### (2/5) 인벤토리 파일 구성하기
|
### (2/5) 인벤토리 파일 구성하기
|
||||||
|
|
||||||
서버들을 프로비저닝 한 후, [Ansible의 인벤토리 파일](https://docs.ansible.com/ansible/intro_inventory.html)을 만들어야 한다. 수동으로 만들 수도 있고, 동적인 인벤토리 스크립트를 통해 만들 수도 있다. 더 많이 알고싶다면 " [나만의 인벤토리 만들기](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/getting-started.md#building-your-own-inventory)" 글을 확인하자.
|
서버들을 프로비저닝 한 후, [Ansible의 인벤토리 파일](https://docs.ansible.com/ansible/latest/network/getting_started/first_inventory.html)을 만들어야 한다. 수동으로 만들 수도 있고, 동적인 인벤토리 스크립트를 통해 만들 수도 있다. 더 많이 알고싶다면 " [나만의 인벤토리 만들기](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/getting-started.md#building-your-own-inventory)" 글을 확인하자.
|
||||||
|
|
||||||
### (3/5) 클러스터 디플로이먼트 계획하기
|
### (3/5) 클러스터 디플로이먼트 계획하기
|
||||||
|
|
||||||
|
|||||||
@@ -210,10 +210,11 @@ CSI 노드 플러그인(특히 블록 디바이스 또는 공유 파일시스템
|
|||||||
{{< table caption="윈도우 서비스 구성" >}}
|
{{< table caption="윈도우 서비스 구성" >}}
|
||||||
| 기능 | 설명 | 지원되는 쿠버네티스 버전 | 지원되는 윈도우 OS 빌드 | 활성화하는 방법 |
|
| 기능 | 설명 | 지원되는 쿠버네티스 버전 | 지원되는 윈도우 OS 빌드 | 활성화하는 방법 |
|
||||||
| ------- | ----------- | ----------------------------- | -------------------------- | ------------- |
|
| ------- | ----------- | ----------------------------- | -------------------------- | ------------- |
|
||||||
| 세션 어피니티 | 특정 클라이언트의 연결이 매번 동일한 파드로 전달되도록 한다. | v1.19 이상 | [윈도우 서버 vNext Insider Preview Build 19551](https://blogs.windows.com/windowsexperience/2020/01/28/announcing-windows-server-vnext-insider-preview-build-19551/) 이상 | `service.spec.sessionAffinity`를 "ClientIP"로 설정 |
|
| 세션 어피니티 | 특정 클라이언트의 연결이 매번 동일한 파드로 전달되도록 한다. | v1.20 이상 | [윈도우 서버 vNext Insider Preview Build 19551](https://blogs.windows.com/windowsexperience/2020/01/28/announcing-windows-server-vnext-insider-preview-build-19551/) 이상 | `service.spec.sessionAffinity`를 "ClientIP"로 설정 |
|
||||||
| 직접 서버 반환 | IP 주소 수정 및 LBNAT가 컨테이너 vSwitch 포트에서 직접 발생하는 로드 밸런싱 모드. 서비스 트래픽은 소스 IP가 원래 파드 IP로 설정된 상태로 도착한다. 낮은 지연 시간과 확장성을 약속한다. | v1.15 이상 | 윈도우 서버, 버전 2004 | kube-proxy에서 다음 플래그를 설정한다. `--feature-gates="WinDSR=true" --enable-dsr=true` |
|
| 직접 서버 반환 (DSR) | IP 주소 수정 및 LBNAT가 컨테이너 vSwitch 포트에서 직접 발생하는 로드 밸런싱 모드. 서비스 트래픽은 소스 IP가 원래 파드 IP로 설정된 상태로 도착한다. | v1.20 이상 | 윈도우 서버 2019 | kube-proxy에서 다음 플래그를 설정한다. `--feature-gates="WinDSR=true" --enable-dsr=true` |
|
||||||
| 대상 보존(Preserve-Destination) | 서비스 트래픽의 DNAT를 스킵하여, 백엔드 파드에 도달하는 패킷에서 대상 서비스의 가상 IP를 보존한다. 이 설정은 또한 수신 패킷의 클라이언트 IP가 보존되도록 한다. | v1.15 이상 | 윈도우 서버, 버전 1903 (이상) | 서비스 어느테이션에서 `"preserve-destination": "true"`를 설정하고 kube-proxy에서 DSR 플래그를 활성화한다. |
|
| 대상 보존(Preserve-Destination) | 서비스 트래픽의 DNAT를 스킵하여, 백엔드 파드에 도달하는 패킷에서 대상 서비스의 가상 IP를 보존한다. 또한 노드-노드 전달을 비활성화한다. | v1.20 이상 | 윈도우 서버, 버전 1903 (또는 그 이상) | 서비스 어노테이션에서 `"preserve-destination": "true"`를 설정하고 kube-proxy에서 DSR을 활성화한다. |
|
||||||
| IPv4/IPv6 이중 스택 네트워킹 | 클러스터 내/외부 기본 IPv4-to-IPv4 통신과 함께 IPv6-to-IPv6 통신 | v1.19 이상 | 윈도우 서버 vNext Insider Preview Build 19603(또는 그 이상) | [IPv4/IPv6 이중 스택](#ipv4ipv6-이중-스택)을 참고한다. |
|
| IPv4/IPv6 이중 스택 네트워킹 | 클러스터 내/외부 기본 IPv4-to-IPv4 통신과 함께 IPv6-to-IPv6 통신 | v1.19 이상 | 윈도우 서버, 버전 2004 (또는 그 이상) | [IPv4/IPv6 이중 스택](#ipv4ipv6-이중-스택)을 참고한다. |
|
||||||
|
| 클라이언트 IP 보존 | 인그레스 트래픽의 소스 IP가 유지되도록 한다. 또한 노드-노드 전달을 비활성화한다. | v1.20 이상 | 윈도우 서버, 버전 2019 (또는 그 이상) | `service.spec.externalTrafficPolicy` 를 "Local"로 설정하고 kube-proxy에서 DSR을 활성화한다. |
|
||||||
{{< /table >}}
|
{{< /table >}}
|
||||||
|
|
||||||
#### IPv4/IPv6 이중 스택
|
#### IPv4/IPv6 이중 스택
|
||||||
@@ -308,9 +309,9 @@ kubelet 파라미터 `--kubelet-reserve` 를 사용하여 CPU 사용량을 합
|
|||||||
* 노드 자체에서 로컬 NodePort 접근은 실패한다. (다른 노드 또는 외부 클라이언트에서는 가능)
|
* 노드 자체에서 로컬 NodePort 접근은 실패한다. (다른 노드 또는 외부 클라이언트에서는 가능)
|
||||||
* 노드에서 서비스 VIP에 접근하는 것은 향후 윈도우 서버 릴리스에서 사용할 수 있다.
|
* 노드에서 서비스 VIP에 접근하는 것은 향후 윈도우 서버 릴리스에서 사용할 수 있다.
|
||||||
* 한 서비스는 최대 64개의 백엔드 파드 또는 고유한 목적지 IP를 지원할 수 있다.
|
* 한 서비스는 최대 64개의 백엔드 파드 또는 고유한 목적지 IP를 지원할 수 있다.
|
||||||
* kube-proxy의 오버레이 네트워킹 지원은 알파 릴리스이다. 또한 윈도우 서버 2019에 [KB4482887](https://support.microsoft.com/ko-kr/help/4482887/windows-10-update-kb4482887)을 설치해야 한다.
|
* kube-proxy의 오버레이 네트워킹 지원은 베타 기능이다. 또한 윈도우 서버 2019에 [KB4482887](https://support.microsoft.com/ko-kr/help/4482887/windows-10-update-kb4482887)을 설치해야 한다.
|
||||||
* 로컬 트래픽 정책 및 DSR 모드
|
* 비-DSR 모드의 로컬 트래픽 정책
|
||||||
* l2bridge, l2tunnel 또는 오버레이 네트워크에 연결된 윈도우 컨테이너는 IPv6 스택을 통한 통신을 지원하지 않는다. 이러한 네트워크 드라이버가 IPv6 주소를 사용하고 kubelet, kube-proxy 및 CNI 플러그인에서 후속 쿠버네티스 작업을 사용할 수 있도록 하는데 필요한 뛰어난 윈도우 플랫폼 작업이 있다.
|
* 오버레이 네트워크에 연결된 윈도우 컨테이너는 IPv6 스택을 통한 통신을 지원하지 않는다. 이 네트워크 드라이버가 IPv6 주소를 사용하고 kubelet, kube-proxy 및 CNI 플러그인에서 후속 쿠버네티스 작업을 사용할 수 있도록 하는데 필요한 뛰어난 윈도우 플랫폼 작업이 있다.
|
||||||
* win-overlay, win-bridge, Azure-CNI 플러그인을 통해 ICMP 프로토콜을 사용하는 아웃바운드 통신. 특히, 윈도우 데이터 플레인([VFP](https://www.microsoft.com/en-us/research/project/azure-virtual-filtering-platform/))은 ICMP 패킷 치환을 지원하지 않는다. 이것은 다음을 의미한다.
|
* win-overlay, win-bridge, Azure-CNI 플러그인을 통해 ICMP 프로토콜을 사용하는 아웃바운드 통신. 특히, 윈도우 데이터 플레인([VFP](https://www.microsoft.com/en-us/research/project/azure-virtual-filtering-platform/))은 ICMP 패킷 치환을 지원하지 않는다. 이것은 다음을 의미한다.
|
||||||
* 동일한 네트워크(예: ping을 통한 파드 간 통신) 내의 목적지로 전달되는 ICMP 패킷은 예상대로 제한 없이 작동한다.
|
* 동일한 네트워크(예: ping을 통한 파드 간 통신) 내의 목적지로 전달되는 ICMP 패킷은 예상대로 제한 없이 작동한다.
|
||||||
* TCP/UDP 패킷은 예상대로 제한 없이 작동한다.
|
* TCP/UDP 패킷은 예상대로 제한 없이 작동한다.
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ card:
|
|||||||
|
|
||||||
## v1.21.0 다운로드
|
## v1.21.0 다운로드
|
||||||
|
|
||||||
|
### 소스 코드
|
||||||
|
|
||||||
파일명 | sha512 해시
|
파일명 | sha512 해시
|
||||||
-------- | -----------
|
-------- | -----------
|
||||||
[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes.tar.gz) | `19bb76a3fa5ce4b9f043b2a3a77c32365ab1fcb902d8dd6678427fb8be8f49f64a5a03dc46aaef9c7dadee05501cf83412eda46f0edacbb8fc1ed0bf5fb79142`
|
[kubernetes.tar.gz](https://dl.k8s.io/v1.21.0/kubernetes.tar.gz) | `19bb76a3fa5ce4b9f043b2a3a77c32365ab1fcb902d8dd6678427fb8be8f49f64a5a03dc46aaef9c7dadee05501cf83412eda46f0edacbb8fc1ed0bf5fb79142`
|
||||||
@@ -62,12 +64,6 @@ card:
|
|||||||
|
|
||||||
## v1.20.0 이후 변경로그 (Changelog)
|
## v1.20.0 이후 변경로그 (Changelog)
|
||||||
|
|
||||||
# v1.21.0-rc.0 릴리스 노트
|
|
||||||
|
|
||||||
[문서](https://docs.k8s.io/docs/home)
|
|
||||||
|
|
||||||
# v1.20.0 이후 변경로그 (Changelog)
|
|
||||||
|
|
||||||
## 새로운 소식 (주요 테마)
|
## 새로운 소식 (주요 테마)
|
||||||
|
|
||||||
### Deprecation of PodSecurityPolicy
|
### Deprecation of PodSecurityPolicy
|
||||||
@@ -554,91 +550,6 @@ The feature gate currently falls back to the default behavior in most cases. Ena
|
|||||||
- sigs.k8s.io/kustomize: v2.0.3+incompatible
|
- sigs.k8s.io/kustomize: v2.0.3+incompatible
|
||||||
|
|
||||||
|
|
||||||
## 의존성
|
|
||||||
|
|
||||||
### 추가
|
|
||||||
- github.com/go-errors/errors: [v1.0.1](https://github.com/go-errors/errors/tree/v1.0.1)
|
|
||||||
- github.com/gobuffalo/here: [v0.6.0](https://github.com/gobuffalo/here/tree/v0.6.0)
|
|
||||||
- github.com/google/shlex: [e7afc7f](https://github.com/google/shlex/tree/e7afc7f)
|
|
||||||
- github.com/markbates/pkger: [v0.17.1](https://github.com/markbates/pkger/tree/v0.17.1)
|
|
||||||
- github.com/moby/spdystream: [v0.2.0](https://github.com/moby/spdystream/tree/v0.2.0)
|
|
||||||
- github.com/monochromegane/go-gitignore: [205db1a](https://github.com/monochromegane/go-gitignore/tree/205db1a)
|
|
||||||
- github.com/niemeyer/pretty: [a10e7ca](https://github.com/niemeyer/pretty/tree/a10e7ca)
|
|
||||||
- github.com/xlab/treeprint: [a009c39](https://github.com/xlab/treeprint/tree/a009c39)
|
|
||||||
- go.starlark.net: 8dd3e2e
|
|
||||||
- golang.org/x/term: 6a3ed07
|
|
||||||
- sigs.k8s.io/kustomize/api: v0.8.5
|
|
||||||
- sigs.k8s.io/kustomize/cmd/config: v0.9.7
|
|
||||||
- sigs.k8s.io/kustomize/kustomize/v4: v4.0.5
|
|
||||||
- sigs.k8s.io/kustomize/kyaml: v0.10.15
|
|
||||||
|
|
||||||
### 변경
|
|
||||||
- dmitri.shuralyov.com/gpu/mtl: 666a987 → 28db891
|
|
||||||
- github.com/Azure/go-autorest/autorest: [v0.11.1 → v0.11.12](https://github.com/Azure/go-autorest/autorest/compare/v0.11.1...v0.11.12)
|
|
||||||
- github.com/NYTimes/gziphandler: [56545f4 → v1.1.1](https://github.com/NYTimes/gziphandler/compare/56545f4...v1.1.1)
|
|
||||||
- github.com/cilium/ebpf: [1c8d4c9 → v0.2.0](https://github.com/cilium/ebpf/compare/1c8d4c9...v0.2.0)
|
|
||||||
- github.com/container-storage-interface/spec: [v1.2.0 → v1.3.0](https://github.com/container-storage-interface/spec/compare/v1.2.0...v1.3.0)
|
|
||||||
- github.com/containerd/console: [v1.0.0 → v1.0.1](https://github.com/containerd/console/compare/v1.0.0...v1.0.1)
|
|
||||||
- github.com/containerd/containerd: [v1.4.1 → v1.4.4](https://github.com/containerd/containerd/compare/v1.4.1...v1.4.4)
|
|
||||||
- github.com/coredns/corefile-migration: [v1.0.10 → v1.0.11](https://github.com/coredns/corefile-migration/compare/v1.0.10...v1.0.11)
|
|
||||||
- github.com/creack/pty: [v1.1.7 → v1.1.11](https://github.com/creack/pty/compare/v1.1.7...v1.1.11)
|
|
||||||
- github.com/docker/docker: [bd33bbf → v20.10.2+incompatible](https://github.com/docker/docker/compare/bd33bbf...v20.10.2)
|
|
||||||
- github.com/go-logr/logr: [v0.2.0 → v0.4.0](https://github.com/go-logr/logr/compare/v0.2.0...v0.4.0)
|
|
||||||
- github.com/go-openapi/spec: [v0.19.3 → v0.19.5](https://github.com/go-openapi/spec/compare/v0.19.3...v0.19.5)
|
|
||||||
- github.com/go-openapi/strfmt: [v0.19.3 → v0.19.5](https://github.com/go-openapi/strfmt/compare/v0.19.3...v0.19.5)
|
|
||||||
- github.com/go-openapi/validate: [v0.19.5 → v0.19.8](https://github.com/go-openapi/validate/compare/v0.19.5...v0.19.8)
|
|
||||||
- github.com/gogo/protobuf: [v1.3.1 → v1.3.2](https://github.com/gogo/protobuf/compare/v1.3.1...v1.3.2)
|
|
||||||
- github.com/golang/mock: [v1.4.1 → v1.4.4](https://github.com/golang/mock/compare/v1.4.1...v1.4.4)
|
|
||||||
- github.com/google/cadvisor: [v0.38.5 → v0.39.0](https://github.com/google/cadvisor/compare/v0.38.5...v0.39.0)
|
|
||||||
- github.com/heketi/heketi: [c2e2a4a → v10.2.0+incompatible](https://github.com/heketi/heketi/compare/c2e2a4a...v10.2.0)
|
|
||||||
- github.com/kisielk/errcheck: [v1.2.0 → v1.5.0](https://github.com/kisielk/errcheck/compare/v1.2.0...v1.5.0)
|
|
||||||
- github.com/konsorten/go-windows-terminal-sequences: [v1.0.3 → v1.0.2](https://github.com/konsorten/go-windows-terminal-sequences/compare/v1.0.3...v1.0.2)
|
|
||||||
- github.com/kr/text: [v0.1.0 → v0.2.0](https://github.com/kr/text/compare/v0.1.0...v0.2.0)
|
|
||||||
- github.com/mattn/go-runewidth: [v0.0.2 → v0.0.7](https://github.com/mattn/go-runewidth/compare/v0.0.2...v0.0.7)
|
|
||||||
- github.com/miekg/dns: [v1.1.4 → v1.1.35](https://github.com/miekg/dns/compare/v1.1.4...v1.1.35)
|
|
||||||
- github.com/moby/sys/mountinfo: [v0.1.3 → v0.4.0](https://github.com/moby/sys/mountinfo/compare/v0.1.3...v0.4.0)
|
|
||||||
- github.com/moby/term: [672ec06 → df9cb8a](https://github.com/moby/term/compare/672ec06...df9cb8a)
|
|
||||||
- github.com/mrunalp/fileutils: [abd8a0e → v0.5.0](https://github.com/mrunalp/fileutils/compare/abd8a0e...v0.5.0)
|
|
||||||
- github.com/olekukonko/tablewriter: [a0225b3 → v0.0.4](https://github.com/olekukonko/tablewriter/compare/a0225b3...v0.0.4)
|
|
||||||
- github.com/opencontainers/runc: [v1.0.0-rc92 → v1.0.0-rc93](https://github.com/opencontainers/runc/compare/v1.0.0-rc92...v1.0.0-rc93)
|
|
||||||
- github.com/opencontainers/runtime-spec: [4d89ac9 → e6143ca](https://github.com/opencontainers/runtime-spec/compare/4d89ac9...e6143ca)
|
|
||||||
- github.com/opencontainers/selinux: [v1.6.0 → v1.8.0](https://github.com/opencontainers/selinux/compare/v1.6.0...v1.8.0)
|
|
||||||
- github.com/sergi/go-diff: [v1.0.0 → v1.1.0](https://github.com/sergi/go-diff/compare/v1.0.0...v1.1.0)
|
|
||||||
- github.com/sirupsen/logrus: [v1.6.0 → v1.7.0](https://github.com/sirupsen/logrus/compare/v1.6.0...v1.7.0)
|
|
||||||
- github.com/syndtr/gocapability: [d983527 → 42c35b4](https://github.com/syndtr/gocapability/compare/d983527...42c35b4)
|
|
||||||
- github.com/willf/bitset: [d5bec33 → v1.1.11](https://github.com/willf/bitset/compare/d5bec33...v1.1.11)
|
|
||||||
- github.com/yuin/goldmark: [v1.1.27 → v1.2.1](https://github.com/yuin/goldmark/compare/v1.1.27...v1.2.1)
|
|
||||||
- golang.org/x/crypto: 7f63de1 → 5ea612d
|
|
||||||
- golang.org/x/exp: 6cc2880 → 85be41e
|
|
||||||
- golang.org/x/mobile: d2bd2a2 → e6ae53a
|
|
||||||
- golang.org/x/mod: v0.3.0 → ce943fd
|
|
||||||
- golang.org/x/net: 69a7880 → 3d97a24
|
|
||||||
- golang.org/x/sync: cd5d95a → 67f06af
|
|
||||||
- golang.org/x/sys: 5cba982 → a50acf3
|
|
||||||
- golang.org/x/time: 3af7569 → f8bda1e
|
|
||||||
- golang.org/x/tools: c1934b7 → v0.1.0
|
|
||||||
- gopkg.in/check.v1: 41f04d3 → 8fa4692
|
|
||||||
- gopkg.in/yaml.v2: v2.2.8 → v2.4.0
|
|
||||||
- gotest.tools/v3: v3.0.2 → v3.0.3
|
|
||||||
- k8s.io/gengo: 83324d8 → b6c5ce2
|
|
||||||
- k8s.io/klog/v2: v2.4.0 → v2.8.0
|
|
||||||
- k8s.io/kube-openapi: d219536 → 591a79e
|
|
||||||
- k8s.io/system-validators: v1.2.0 → v1.4.0
|
|
||||||
- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.14 → v0.0.15
|
|
||||||
- sigs.k8s.io/structured-merge-diff/v4: v4.0.2 → v4.1.0
|
|
||||||
|
|
||||||
### 제거
|
|
||||||
- github.com/codegangsta/negroni: [v1.0.0](https://github.com/codegangsta/negroni/tree/v1.0.0)
|
|
||||||
- github.com/docker/spdystream: [449fdfc](https://github.com/docker/spdystream/tree/449fdfc)
|
|
||||||
- github.com/golangplus/bytes: [45c989f](https://github.com/golangplus/bytes/tree/45c989f)
|
|
||||||
- github.com/golangplus/fmt: [2a5d6d7](https://github.com/golangplus/fmt/tree/2a5d6d7)
|
|
||||||
- github.com/gorilla/context: [v1.1.1](https://github.com/gorilla/context/tree/v1.1.1)
|
|
||||||
- github.com/kr/pty: [v1.1.5](https://github.com/kr/pty/tree/v1.1.5)
|
|
||||||
- rsc.io/quote/v3: v3.1.0
|
|
||||||
- rsc.io/sampler: v1.3.0
|
|
||||||
- sigs.k8s.io/kustomize: v2.0.3+incompatible
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# v1.21.0-rc.0
|
# v1.21.0-rc.0
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
title: 네트워크 폴리시(Network Policy) 선언하기
|
title: 네트워크 폴리시(Network Policy) 선언하기
|
||||||
min-kubernetes-server-version: v1.8
|
min-kubernetes-server-version: v1.8
|
||||||
content_type: task
|
content_type: task
|
||||||
@@ -13,8 +16,9 @@ content_type: task
|
|||||||
|
|
||||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||||
|
|
||||||
네트워크 폴리시를 지원하는 네트워크 제공자를 구성하였는지 확인해야 한다. 다음과 같이 네트워크폴리시를 제공하는 많은 네트워크 제공자들이 있다.
|
네트워크 폴리시를 지원하는 네트워크 제공자를 구성하였는지 확인해야 한다. 다음과 같이 네트워크폴리시를 지원하는 많은 네트워크 제공자들이 있다.
|
||||||
|
|
||||||
|
* [Antrea](/docs/tasks/administer-cluster/network-policy-provider/antrea-network-policy/)
|
||||||
* [캘리코(Calico)](/ko/docs/tasks/administer-cluster/network-policy-provider/calico-network-policy/)
|
* [캘리코(Calico)](/ko/docs/tasks/administer-cluster/network-policy-provider/calico-network-policy/)
|
||||||
* [실리움(Cilium)](/ko/docs/tasks/administer-cluster/network-policy-provider/cilium-network-policy/)
|
* [실리움(Cilium)](/ko/docs/tasks/administer-cluster/network-policy-provider/cilium-network-policy/)
|
||||||
* [Kube-router](/ko/docs/tasks/administer-cluster/network-policy-provider/kube-router-network-policy/)
|
* [Kube-router](/ko/docs/tasks/administer-cluster/network-policy-provider/kube-router-network-policy/)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
title: kubeadm을 사용한 인증서 관리
|
title: kubeadm을 사용한 인증서 관리
|
||||||
content_type: task
|
content_type: task
|
||||||
weight: 10
|
weight: 10
|
||||||
@@ -190,11 +192,13 @@ CSR과 함께 제공되는 개인 키가 모두 출력된다.
|
|||||||
`kubeadm init` 과 마찬가지로 출력 디렉터리를 `--csr-dir` 플래그로 지정할 수 있다.
|
`kubeadm init` 과 마찬가지로 출력 디렉터리를 `--csr-dir` 플래그로 지정할 수 있다.
|
||||||
|
|
||||||
CSR에는 인증서 이름, 도메인 및 IP가 포함되지만, 용도를 지정하지는 않는다.
|
CSR에는 인증서 이름, 도메인 및 IP가 포함되지만, 용도를 지정하지는 않는다.
|
||||||
인증서를 발행할 때 [올바른 인증서 용도](/ko/docs/setup/best-practices/certificates/#모든-인증서)를 지정하는 것은 CA의 책임이다.
|
인증서를 발행할 때 [올바른 인증서 용도](/ko/docs/setup/best-practices/certificates/#모든-인증서)를
|
||||||
|
지정하는 것은 CA의 책임이다.
|
||||||
|
|
||||||
* `openssl` 의 경우
|
* `openssl` 의 경우
|
||||||
[`openssl ca` 명령](https://superuser.com/questions/738612/openssl-ca-keyusage-extension)으로 수행한다.
|
[`openssl ca` 명령](https://superuser.com/questions/738612/openssl-ca-keyusage-extension)으로 수행한다.
|
||||||
* `cfssl` 의 경우 [설정 파일에 용도](https://github.com/cloudflare/cfssl/blob/master/doc/cmd/cfssl.txt#L170)를 지정한다.
|
* `cfssl` 의 경우
|
||||||
|
[설정 파일에 용도](https://github.com/cloudflare/cfssl/blob/master/doc/cmd/cfssl.txt#L170)를 지정한다.
|
||||||
|
|
||||||
선호하는 방법으로 인증서에 서명한 후, 인증서와 개인 키를 PKI 디렉터리(기본적으로 `/etc/kubernetes/pki`)에 복사해야 한다.
|
선호하는 방법으로 인증서에 서명한 후, 인증서와 개인 키를 PKI 디렉터리(기본적으로 `/etc/kubernetes/pki`)에 복사해야 한다.
|
||||||
|
|
||||||
@@ -203,3 +207,71 @@ CSR에는 인증서 이름, 도메인 및 IP가 포함되지만, 용도를 지
|
|||||||
Kubeadm은 CA 인증서의 순환이나 교체 기능을 기본적으로 지원하지 않는다.
|
Kubeadm은 CA 인증서의 순환이나 교체 기능을 기본적으로 지원하지 않는다.
|
||||||
|
|
||||||
CA의 수동 순환이나 교체에 대한 보다 상세한 정보는 [CA 인증서 수동 순환](/docs/tasks/tls/manual-rotation-of-ca-certificates/) 문서를 참조한다.
|
CA의 수동 순환이나 교체에 대한 보다 상세한 정보는 [CA 인증서 수동 순환](/docs/tasks/tls/manual-rotation-of-ca-certificates/) 문서를 참조한다.
|
||||||
|
|
||||||
|
## 서명된 kubelet 인증서 활성화하기 {#kubelet-serving-certs}
|
||||||
|
|
||||||
|
기본적으로 kubeadm에 의해서 배포된 kubelet 인증서는 자가 서명된(self-signed) 것이다.
|
||||||
|
이것은 [metrics-server](https://github.com/kubernetes-sigs/metrics-server)와
|
||||||
|
같은 외부 서비스의 kubelet에 대한 연결은
|
||||||
|
TLS로 보안되지 않음을 의미한다.
|
||||||
|
|
||||||
|
제대로 서명된 인증서를 얻기 위해서 신규 kubeadm 클러스터의 kubelet을 구성하려면
|
||||||
|
다음의 최소 구성을 `kubeadm init` 에 전달해야 한다.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: kubeadm.k8s.io/v1beta2
|
||||||
|
kind: ClusterConfiguration
|
||||||
|
---
|
||||||
|
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||||
|
kind: KubeletConfiguration
|
||||||
|
serverTLSBootstrap: true
|
||||||
|
```
|
||||||
|
|
||||||
|
만약 이미 클러스터를 생성했다면 다음을 따라 이를 조정해야 한다.
|
||||||
|
- `kube-system` 네임스페이스에서 `kubelet-config-{{< skew latestVersion >}}` 컨피그맵을 찾아서 수정한다.
|
||||||
|
해당 컨피그맵에는 `config` 키가
|
||||||
|
[KubeletConfiguration](/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration)
|
||||||
|
문서를 값으로 가진다. `serverTLSBootstrap: true` 가 되도록 KubeletConfiguration 문서를 수정한다.
|
||||||
|
- 각 노드에서, `serverTLSBootstrap: true` 필드를 `/var/lib/kubelet/config.yaml` 에 추가한다.
|
||||||
|
그리고 `systemctl restart kubelet` 로 kubelet을 재시작한다.
|
||||||
|
|
||||||
|
`serverTLSBootstrap: true` 필드는 kubelet 인증서를 이용한 부트스트랩을
|
||||||
|
`certificates.k8s.io` API에 요청함으로써 활성화할 것이다. 한 가지 알려진 제약은
|
||||||
|
이 인증서들에 대한 CSR(인증서 서명 요청)들이 kube-controller-manager -
|
||||||
|
[`kubernetes.io/kubelet-serving`](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers)의
|
||||||
|
기본 서명자(default signer)에 의해서 자동으로 승인될 수 없다는 점이다.
|
||||||
|
이것은 사용자나 제 3의 컨트롤러의 액션을 필요로 할 것이다.
|
||||||
|
|
||||||
|
이 CSR들은 다음을 통해 볼 수 있다.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl get csr
|
||||||
|
NAME AGE SIGNERNAME REQUESTOR CONDITION
|
||||||
|
csr-9wvgt 112s kubernetes.io/kubelet-serving system:node:worker-1 Pending
|
||||||
|
csr-lz97v 1m58s kubernetes.io/kubelet-serving system:node:control-plane-1 Pending
|
||||||
|
```
|
||||||
|
|
||||||
|
이를 승인하기 위해서는 다음을 수행한다.
|
||||||
|
```shell
|
||||||
|
kubectl certificate approve <CSR-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
기본적으로, 이 인증서는 1년 후에 만기될 것이다. Kubeadm은
|
||||||
|
`KubeletConfiguration` 필드의 `rotateCertificates` 를 `true` 로 설정한다. 이것은 만기가
|
||||||
|
다가오면 인증서를 위한 신규 CSR 세트가 생성되는 것을 의미하며,
|
||||||
|
해당 순환(rotation)을 완료하기 위해서는 승인이 되어야 한다는 것을 의미한다. 더 상세한 이해를 위해서는
|
||||||
|
[인증서 순환](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/#certificate-rotation)를 확인한다.
|
||||||
|
|
||||||
|
만약 이 CSR들의 자동 승인을 위한 솔루션을 찾고 있다면 클라우드 제공자와
|
||||||
|
연락하여 대역 외 메커니즘(out of band mechanism)을 통해 노드의 신분을 검증할 수 있는
|
||||||
|
CSR 서명자를 가지고 있는지 문의하는 것을 추천한다.
|
||||||
|
|
||||||
|
{{% thirdparty-content %}}
|
||||||
|
|
||||||
|
제 3 자 커스텀 컨트롤러도 사용될 수 있다.
|
||||||
|
- [kubelet-rubber-stamp](https://github.com/kontena/kubelet-rubber-stamp)
|
||||||
|
|
||||||
|
이러한 컨트롤러는 CSR의 CommonName과 요청된 IPs 및 도메인 네임을
|
||||||
|
모두 검증하지 않는 한, 보안이 되는 메커니즘이 아니다. 이것을 통해 악의적 행위자가
|
||||||
|
kubelet 인증서(클라이언트 인증)를 사용하여 아무 IP나 도메인 네임에 대해 인증서를
|
||||||
|
요청하는 CSR의 생성을 방지할 수 있을 것이다.
|
||||||
|
|||||||
@@ -47,12 +47,12 @@ Kustomize는 쿠버네티스 구성을 사용자 정의화하는 도구이다.
|
|||||||
|
|
||||||
### 리소스 생성
|
### 리소스 생성
|
||||||
|
|
||||||
컨피그 맵과 시크릿은 파드와 같은 다른 쿠버네티스 오브젝트에서 사용되는 설정이나 민감한 데이터를 가지고 있다. 컨피그 맵이나 시크릿의 실질적인 소스는 일반적으로 `.properties` 파일이나 ssh key 파일과 같은 것들은 클러스터 외부에 있다.
|
컨피그맵과 시크릿은 파드와 같은 다른 쿠버네티스 오브젝트에서 사용되는 설정이나 민감한 데이터를 가지고 있다. 컨피그맵이나 시크릿의 실질적인 소스는 일반적으로 `.properties` 파일이나 ssh key 파일과 같은 것들은 클러스터 외부에 있다.
|
||||||
Kustomize는 시크릿과 컨피그 맵을 파일이나 문자열에서 생성하는 `secretGenerator`와 `configMapGenerator`를 가지고 있다.
|
Kustomize는 시크릿과 컨피그맵을 파일이나 문자열에서 생성하는 `secretGenerator`와 `configMapGenerator`를 가지고 있다.
|
||||||
|
|
||||||
#### configMapGenerator
|
#### configMapGenerator
|
||||||
|
|
||||||
파일에서 컨피그 맵을 생성하려면 `configMapGenerator` 내의 `files` 리스트에 항목을 추가한다. 다음은 하나의 `.properties` 파일에서 데이터 항목으로 컨피그 맵을 생성하는 예제이다.
|
파일에서 컨피그맵을 생성하려면 `configMapGenerator` 내의 `files` 리스트에 항목을 추가한다. 다음은 하나의 `.properties` 파일에서 데이터 항목으로 컨피그맵을 생성하는 예제이다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# application.properties 파일을 생성
|
# application.properties 파일을 생성
|
||||||
@@ -68,13 +68,13 @@ configMapGenerator:
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
생성된 컨피그 맵은 다음 명령어로 검사할 수 있다.
|
생성된 컨피그맵은 다음 명령어로 검사할 수 있다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl kustomize ./
|
kubectl kustomize ./
|
||||||
```
|
```
|
||||||
|
|
||||||
생성된 컨피그 맵은 다음과 같다.
|
생성된 컨피그맵은 다음과 같다.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -86,7 +86,7 @@ metadata:
|
|||||||
name: example-configmap-1-8mbdf7882g
|
name: example-configmap-1-8mbdf7882g
|
||||||
```
|
```
|
||||||
|
|
||||||
컨피그 맵은 문자로된 키-값 쌍들로도 생성할 수 있다. 문자로된 키-값 쌍에서 컨피그 맵을 생성하려면, configMapGenerator 내의 `literals` 리스트에 항목을 추가한다. 다음은 키-값 쌍을 데이터 항목으로 받는 컨피그 맵을 생성하는 예제이다.
|
컨피그맵은 문자로된 키-값 쌍들로도 생성할 수 있다. 문자로된 키-값 쌍에서 컨피그맵을 생성하려면, configMapGenerator 내의 `literals` 리스트에 항목을 추가한다. 다음은 키-값 쌍을 데이터 항목으로 받는 컨피그맵을 생성하는 예제이다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cat <<EOF >./kustomization.yaml
|
cat <<EOF >./kustomization.yaml
|
||||||
@@ -97,13 +97,13 @@ configMapGenerator:
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
생성된 컨피그 맵은 다음 명령어로 확인할 수 있다.
|
생성된 컨피그맵은 다음 명령어로 확인할 수 있다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl kustomize ./
|
kubectl kustomize ./
|
||||||
```
|
```
|
||||||
|
|
||||||
생성된 컨피그 맵은 다음과 같다.
|
생성된 컨피그맵은 다음과 같다.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -114,6 +114,98 @@ metadata:
|
|||||||
name: example-configmap-2-g2hdhfc6tk
|
name: example-configmap-2-g2hdhfc6tk
|
||||||
```
|
```
|
||||||
|
|
||||||
|
디플로이먼트에서 생성된 컨피그맵을 사용하기 위해서는, configMapGenerator의 이름을 참조한다. Kustomize는 자동으로 해당 이름을 생성된 이름으로 교체할 것이다.
|
||||||
|
|
||||||
|
다음은 생성된 컨피그맵을 사용하는 디플로이먼트의 예시다.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# application.properties 파일을 생성한다.
|
||||||
|
cat <<EOF >application.properties
|
||||||
|
FOO=Bar
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: my-app
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: my-app
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: app
|
||||||
|
image: my-app
|
||||||
|
volumeMount:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: example-configmap-1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >./kustomization.yaml
|
||||||
|
resources:
|
||||||
|
- deployment.yaml
|
||||||
|
configMapGenerator:
|
||||||
|
- name: example-configmap-1
|
||||||
|
files:
|
||||||
|
- application.properties
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
컨피그맵과 디플로이먼트를 생성한다.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl kustomize ./
|
||||||
|
```
|
||||||
|
|
||||||
|
생성된 디플로이먼트는 이름을 통해서 생성된 컨피그맵을 참조한다.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
application.properties: |
|
||||||
|
FOO=Bar
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: example-configmap-1-g4hk9g2ff8
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
name: my-app
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: my-app
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: my-app
|
||||||
|
name: app
|
||||||
|
volumeMount:
|
||||||
|
- mountPath: /config
|
||||||
|
name: config
|
||||||
|
volumes:
|
||||||
|
- configMap:
|
||||||
|
name: example-configmap-1-g4hk9g2ff8
|
||||||
|
name: config
|
||||||
|
```
|
||||||
|
|
||||||
#### secretGenerator
|
#### secretGenerator
|
||||||
|
|
||||||
파일 또는 문자로된 키-값 쌍들로 시크릿을 생성할 수 있다. 파일에서 시크릿을 생성하려면 `secretGenerator` 내의 `files` 리스트에 항목을 추가한다. 다음은 파일을 데이터 항목으로 받는 시크릿을 생성하는 예제이다.
|
파일 또는 문자로된 키-값 쌍들로 시크릿을 생성할 수 있다. 파일에서 시크릿을 생성하려면 `secretGenerator` 내의 `files` 리스트에 항목을 추가한다. 다음은 파일을 데이터 항목으로 받는 시크릿을 생성하는 예제이다.
|
||||||
@@ -170,9 +262,56 @@ metadata:
|
|||||||
type: Opaque
|
type: Opaque
|
||||||
```
|
```
|
||||||
|
|
||||||
|
컨피그맵과 유사하게, 생성된 시크릿도 secretGenerator의 이름을 참조함으로써 디플로이먼트에서 사용될 수 있다.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# password.txt 파일을 생성한다.
|
||||||
|
cat <<EOF >./password.txt
|
||||||
|
username=admin
|
||||||
|
password=secret
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: my-app
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: my-app
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: my-app
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: app
|
||||||
|
image: my-app
|
||||||
|
volumeMount:
|
||||||
|
- name: password
|
||||||
|
mountPath: /secrets
|
||||||
|
volumes:
|
||||||
|
- name: password
|
||||||
|
secret:
|
||||||
|
secretName: example-secret-1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >./kustomization.yaml
|
||||||
|
resources:
|
||||||
|
- deployment.yaml
|
||||||
|
secretGenerator:
|
||||||
|
- name: example-secret-1
|
||||||
|
files:
|
||||||
|
- password.txt
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
#### generatorOptions
|
#### generatorOptions
|
||||||
|
|
||||||
생성된 컨피그 맵과 시크릿은 콘텐츠 해시 접미사가 추가된다. 이는 콘텐츠가 변경될 때 새로운 컨피그 맵 이나 시크릿이 생성되는 것을 보장한다. 접미사를 추가하는 동작을 비활성화하는 방법으로 `generatorOptions`를 사용할 수 있다. 그밖에, 생성된 컨피그 맵과 시크릿에 교차 편집 옵션들을 지정해주는 것도 가능하다.
|
생성된 컨피그맵과 시크릿은 콘텐츠 해시 접미사가 추가된다. 이는 콘텐츠가 변경될 때 새로운 컨피그맵 이나 시크릿이 생성되는 것을 보장한다. 접미사를 추가하는 동작을 비활성화하는 방법으로 `generatorOptions`를 사용할 수 있다. 그밖에, 생성된 컨피그맵과 시크릿에 교차 편집 옵션들을 지정해주는 것도 가능하다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cat <<EOF >./kustomization.yaml
|
cat <<EOF >./kustomization.yaml
|
||||||
@@ -189,7 +328,7 @@ generatorOptions:
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
생성된 컨피그 맵을 보려면 `kubectl kustomize ./`를 실행한다.
|
생성된 컨피그맵을 보려면 `kubectl kustomize ./`를 실행한다.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -814,17 +953,17 @@ deployment.apps "dev-my-nginx" deleted
|
|||||||
| nameSuffix | string | 모든 리소스 네임에 이 필드의 값이 접미사로 추가된다 |
|
| nameSuffix | string | 모든 리소스 네임에 이 필드의 값이 접미사로 추가된다 |
|
||||||
| commonLabels | map[string]string | 모든 리소스와 셀렉터에 추가될 레이블 |
|
| commonLabels | map[string]string | 모든 리소스와 셀렉터에 추가될 레이블 |
|
||||||
| commonAnnotations | map[string]string | 모든 리소스에 추가될 어노테이션 |
|
| commonAnnotations | map[string]string | 모든 리소스에 추가될 어노테이션 |
|
||||||
| resources | []string | 이 리스트 내 각각의 항목은 반드시 존재하는 리소스 구성 파일로 해석되어져야 한다 |
|
| resources | []string | 이 리스트 내 각각의 항목은 반드시 존재하는 리소스 구성 파일로 해석되어야 한다. |
|
||||||
| configmapGenerator | [][ConfigMapArgs](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L99) | 이 리스트 내 각각의 항목은 컨피그 맵을 생성한다 |
|
| configMapGenerator | [][ConfigMapArgs](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/configmapargs.go#L7) | 이 리스트의 각 항목은 컨피그맵을 생성한다. |
|
||||||
| secretGenerator | [][SecretArgs](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L106) | 이 리스트 내 각각의 항목은 시크릿을 생성한다 |
|
| secretGenerator | [][SecretArgs](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/secretargs.go#L7) | 이 리스트의 각 항목은 시크릿을 생성한다. |
|
||||||
| generatorOptions | [GeneratorOptions](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L109) | 모든 configMapGenerator와 secretGenerator의 동작을 변경 |
|
| generatorOptions | [GeneratorOptions](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/generatoroptions.go#L7) | 모든 컨피그맵 및 시크릿 생성자(generator)의 동작을 수정한다. |
|
||||||
| bases | []string | 이 리스트 내 각각의 항목은 kustomization.yaml 파일을 가지는 디렉터리로 해석되어져야 한다 |
|
| bases | []string | 이 리스트 내 각각의 항목은 kustomization.yaml 파일을 가지는 디렉터리로 해석되어야 한다. |
|
||||||
| patchesStrategicMerge | []string | 이 리스트 내 각각의 항목은 쿠버네티스 오브젝트의 전략적 병합 패치로 해석되어져야 한다 |
|
| patchesStrategicMerge | []string | 이 리스트 내 각각의 항목은 쿠버네티스 오브젝트의 전략적 병합 패치로 해석되어야 한다. |
|
||||||
| patchesJson6902 | [][Json6902](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/patchjson6902.go#L8) | 이 리스트 내 각각의 항목은 쿠버네티스 오브젝트와 Json 패치로 해석되어져야 한다 |
|
| patchesJson6902 | [][Patch](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/patch.go#L10) | 이 리스트 내 각각의 항목은 쿠버네티스 오브젝트와 Json 패치로 해석되어야 한다. |
|
||||||
| vars | [][Var](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/var.go#L31) | 각각의 항목은 한 리소스의 필드에서 텍스트를 캡쳐한다 |
|
| vars | [][Var](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/var.go#L19) | 각각의 항목은 한 리소스의 필드에서 텍스트를 캡쳐한다. |
|
||||||
| images | [][Image](https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/image.go#L23) | 각각의 항목은 패치를 생성하지 않고 한 이미지의 name, tags 그리고/또는 digest를 수정한다 |
|
| images | [][Image](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/image.go#L8) | 각각의 항목은 패치를 생성하지 않고 하나의 이미지에 대한 name, tags 그리고/또는 digest를 수정한다. |
|
||||||
| configurations | []string | 이 리스트 내 각각의 항목은 [Kustomize 변환 설정](https://github.com/kubernetes-sigs/kustomize/tree/master/examples/transformerconfigs)을 포함하는 파일로 해석되어져야 한다 |
|
| configurations | []string | 이 리스트 내 각각의 항목은 [Kustomize 변환 설정](https://github.com/kubernetes-sigs/kustomize/tree/master/examples/transformerconfigs)을 포함하는 파일로 해석되어야 한다. |
|
||||||
| crds | []string | 이 리스트 내 각각의 항목은 쿠버네티스 타입에 대한 OpenAPI 정의 파일로 해석되어져야 한다 |
|
| crds | []string | 이 리스트 내 각각의 항목은 쿠버네티스 타입에 대한 OpenAPI 정의 파일로 해석되어야 한다. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -832,6 +971,6 @@ deployment.apps "dev-my-nginx" deleted
|
|||||||
|
|
||||||
|
|
||||||
* [Kustomize](https://github.com/kubernetes-sigs/kustomize)
|
* [Kustomize](https://github.com/kubernetes-sigs/kustomize)
|
||||||
* [Kubectl 북](https://kubectl.docs.kubernetes.io)
|
* [Kubectl 문서](https://kubectl.docs.kubernetes.io)
|
||||||
* [Kubectl 커맨드 참조](/docs/reference/generated/kubectl/kubectl-commands/)
|
* [Kubectl 커맨드 참조](/docs/reference/generated/kubectl/kubectl-commands/)
|
||||||
* [쿠버네티스 API 참조](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
* [쿠버네티스 API 참조](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
min-kubernetes-server-version: v1.20
|
min-kubernetes-server-version: v1.20
|
||||||
title: IPv4/IPv6 이중 스택 검증
|
title: IPv4/IPv6 이중 스택 검증
|
||||||
content_type: task
|
content_type: task
|
||||||
@@ -36,9 +40,10 @@ a00:100::/24
|
|||||||
```
|
```
|
||||||
단일 IPv4 블록과 단일 IPv6 블록이 할당되어야 한다.
|
단일 IPv4 블록과 단일 IPv6 블록이 할당되어야 한다.
|
||||||
|
|
||||||
노드가 IPv4 및 IPv6 인터페이스를 가지고 있는지 검증한다. (노드 이름을 클러스터의 검증된 노드로 대체한다. 본 예제에서 노드 이름은 k8s-linuxpool1-34450317-0) 이다.
|
노드가 IPv4 및 IPv6 인터페이스를 가지고 있는지 검증한다. 노드 이름을 클러스터의 검증된 노드로 대체한다. 본 예제에서 노드 이름은 `k8s-linuxpool1-34450317-0` 이다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl get nodes k8s-linuxpool1-34450317-0 -o go-template --template='{{range .status.addresses}}{{printf "%s: %s \n" .type .address}}{{end}}'
|
kubectl get nodes k8s-linuxpool1-34450317-0 -o go-template --template='{{range .status.addresses}}{{printf "%s: %s\n" .type .address}}{{end}}'
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
Hostname: k8s-linuxpool1-34450317-0
|
Hostname: k8s-linuxpool1-34450317-0
|
||||||
@@ -48,9 +53,10 @@ InternalIP: 2001:1234:5678:9abc::5
|
|||||||
|
|
||||||
### 파드 어드레싱 검증
|
### 파드 어드레싱 검증
|
||||||
|
|
||||||
파드가 IPv4 및 IPv6 주소를 할당받았는지 검증한다. (파드 이름을 클러스터에서 검증된 파드로 대체한다. 본 예제에서 파드 이름은 pod01 이다.)
|
파드가 IPv4 및 IPv6 주소를 할당받았는지 검증한다. 파드 이름을 클러스터에서 검증된 파드로 대체한다. 본 예제에서 파드 이름은 `pod01` 이다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl get pods pod01 -o go-template --template='{{range .status.podIPs}}{{printf "%s \n" .ip}}{{end}}'
|
kubectl get pods pod01 -o go-template --template='{{range .status.podIPs}}{{printf "%s\n" .ip}}{{end}}'
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
10.244.1.4
|
10.244.1.4
|
||||||
@@ -68,6 +74,7 @@ a00:100::4
|
|||||||
```
|
```
|
||||||
|
|
||||||
다음 커맨드는 컨테이너 내 `MY_POD_IPS` 환경 변수의 값을 출력한다. 해당 값은 파드의 IPv4 및 IPv6 주소를 나타내는 쉼표로 구분된 목록이다.
|
다음 커맨드는 컨테이너 내 `MY_POD_IPS` 환경 변수의 값을 출력한다. 해당 값은 파드의 IPv4 및 IPv6 주소를 나타내는 쉼표로 구분된 목록이다.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl exec -it pod01 -- set | grep MY_POD_IPS
|
kubectl exec -it pod01 -- set | grep MY_POD_IPS
|
||||||
```
|
```
|
||||||
@@ -225,3 +232,4 @@ kubectl get svc -l app=MyApp
|
|||||||
```shell
|
```shell
|
||||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||||
my-service LoadBalancer fd00::7ebc 2603:1030:805::5 80:30790/TCP 35s
|
my-service LoadBalancer fd00::7ebc 2603:1030:805::5 80:30790/TCP 35s
|
||||||
|
```
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ EOF
|
|||||||
|
|
||||||
여기서 `192.0.2.24`는 서비스의 클러스터 IP,
|
여기서 `192.0.2.24`는 서비스의 클러스터 IP,
|
||||||
`my-svc.my-namespace.svc.cluster.local`은 서비스의 DNS 이름,
|
`my-svc.my-namespace.svc.cluster.local`은 서비스의 DNS 이름,
|
||||||
`10.0.34.2`는 파드의 IP,`my-pod.my- namespace.pod.cluster.local`은
|
`10.0.34.2`는 파드의 IP,`my-pod.my-namespace.pod.cluster.local`은
|
||||||
파드의 DNS 이름이다. 다음 출력이 표시되어야 한다.
|
파드의 DNS 이름이다. 다음 출력이 표시되어야 한다.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -12,24 +12,17 @@ card:
|
|||||||
|
|
||||||
## {{% heading "prerequisites" %}}
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다.
|
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v{{< skew latestVersion >}} 클라이언트는 v{{< skew prevMinorVersion >}}, v{{< skew latestVersion >}}, v{{< skew nextMinorVersion >}}의 컨트롤 플레인과 연동될 수 있다.
|
||||||
예를 들어, v1.2 클라이언트는 v1.1, v1.2 및 v1.3의 마스터와 함께 작동해야 한다.
|
|
||||||
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
||||||
|
|
||||||
## 리눅스에 kubectl 설치
|
## 리눅스에 kubectl 설치
|
||||||
|
|
||||||
다음과 같은 방법으로 리눅스에 kubectl을 설치할 수 있다.
|
다음과 같은 방법으로 리눅스에 kubectl을 설치할 수 있다.
|
||||||
|
|
||||||
- [{{% heading "prerequisites" %}}](#시작하기-전에)
|
- [리눅스에 curl을 사용하여 kubectl 바이너리 설치](#install-kubectl-binary-with-curl-on-linux)
|
||||||
- [리눅스에 kubectl 설치](#리눅스에-kubectl-설치)
|
- [기본 패키지 관리 도구를 사용하여 설치](#install-using-native-package-management)
|
||||||
- [리눅스에서 curl을 사용하여 kubectl 바이너리 설치]{#install-kubectl-binary-with-curl-on-linux}
|
- [다른 패키지 관리 도구를 사용하여 설치](#install-using-other-package-management)
|
||||||
- [기본 패키지 관리 도구를 사용하여 설치]{#install-using-native-package-management}
|
- [리눅스에 Google Cloud SDK를 사용하여 설치](#install-on-linux-as-part-of-the-google-cloud-sdk)
|
||||||
- [다른 패키지 관리 도구를 사용하여 설치]{#install-using-other-package-management}
|
|
||||||
- [Google Cloud SDK를 사용하여 설치]{#install-on-linux-as-part-of-the-google-cloud-sdk}
|
|
||||||
- [kubectl 구성 확인](#kubectl-구성-확인)
|
|
||||||
- [선택적 kubectl 구성](#선택적-kubectl-구성)
|
|
||||||
- [셸 자동 완성 활성화](#셸-자동-완성-활성화)
|
|
||||||
- [{{% heading "whatsnext" %}}](#다음-내용)
|
|
||||||
|
|
||||||
### 리눅스에서 curl을 사용하여 kubectl 바이너리 설치 {#install-kubectl-binary-with-curl-on-linux}
|
### 리눅스에서 curl을 사용하여 kubectl 바이너리 설치 {#install-kubectl-binary-with-curl-on-linux}
|
||||||
|
|
||||||
@@ -158,7 +151,6 @@ yum install -y kubectl
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
snap install kubectl --classic
|
snap install kubectl --classic
|
||||||
|
|
||||||
kubectl version --client
|
kubectl version --client
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -169,7 +161,6 @@ kubectl version --client
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
brew install kubectl
|
brew install kubectl
|
||||||
|
|
||||||
kubectl version --client
|
kubectl version --client
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -177,7 +168,7 @@ kubectl version --client
|
|||||||
|
|
||||||
{{< /tabs >}}
|
{{< /tabs >}}
|
||||||
|
|
||||||
### Google Cloud SDK를 사용하여 설치 {#install-on-linux-as-part-of-the-google-cloud-sdk}
|
### 리눅스에 Google Cloud SDK를 사용하여 설치 {#install-on-linux-as-part-of-the-google-cloud-sdk}
|
||||||
|
|
||||||
{{< include "included/install-kubectl-gcloud.md" >}}
|
{{< include "included/install-kubectl-gcloud.md" >}}
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ card:
|
|||||||
|
|
||||||
## {{% heading "prerequisites" %}}
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다.
|
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v{{< skew latestVersion >}} 클라이언트는 v{{< skew prevMinorVersion >}}, v{{< skew latestVersion >}}, v{{< skew nextMinorVersion >}}의 컨트롤 플레인과 연동될 수 있다.
|
||||||
예를 들어, v1.2 클라이언트는 v1.1, v1.2 및 v1.3의 마스터와 함께 작동해야 한다.
|
|
||||||
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
||||||
|
|
||||||
## macOS에 kubectl 설치
|
## macOS에 kubectl 설치
|
||||||
@@ -29,17 +28,28 @@ card:
|
|||||||
|
|
||||||
1. 최신 릴리스를 다운로드한다.
|
1. 최신 릴리스를 다운로드한다.
|
||||||
|
|
||||||
```bash
|
{{< tabs name="download_binary_macos" >}}
|
||||||
|
{{< tab name="Intel" codelang="bash" >}}
|
||||||
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
|
||||||
```
|
{{< /tab >}}
|
||||||
|
{{< tab name="Apple Silicon" codelang="bash" >}}
|
||||||
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
특정 버전을 다운로드하려면, `$(curl -L -s https://dl.k8s.io/release/stable.txt)` 명령 부분을 특정 버전으로 바꾼다.
|
특정 버전을 다운로드하려면, `$(curl -L -s https://dl.k8s.io/release/stable.txt)` 명령 부분을 특정 버전으로 바꾼다.
|
||||||
|
|
||||||
예를 들어, macOS에서 버전 {{< param "fullversion" >}}을 다운로드하려면, 다음을 입력한다.
|
예를 들어, Intel macOS에 버전 {{< param "fullversion" >}}을 다운로드하려면, 다음을 입력한다.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl
|
curl -LO "https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl"
|
||||||
|
```
|
||||||
|
|
||||||
|
Apple Silicon의 macOS라면, 다음을 입력한다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -LO "https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/arm64/kubectl"
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
@@ -48,9 +58,14 @@ card:
|
|||||||
|
|
||||||
kubectl 체크섬 파일을 다운로드한다.
|
kubectl 체크섬 파일을 다운로드한다.
|
||||||
|
|
||||||
```bash
|
{{< tabs name="download_checksum_macos" >}}
|
||||||
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
|
{{< tab name="Intel" codelang="bash" >}}
|
||||||
```
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< tab name="Apple Silicon" codelang="bash" >}}
|
||||||
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
|
||||||
|
{{< /tab >}}
|
||||||
|
{{< /tabs >}}
|
||||||
|
|
||||||
kubectl 바이너리를 체크섬 파일을 통해 검증한다.
|
kubectl 바이너리를 체크섬 파일을 통해 검증한다.
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ card:
|
|||||||
|
|
||||||
## {{% heading "prerequisites" %}}
|
## {{% heading "prerequisites" %}}
|
||||||
|
|
||||||
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다.
|
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v{{< skew latestVersion >}} 클라이언트는 v{{< skew prevMinorVersion >}}, v{{< skew latestVersion >}}, v{{< skew nextMinorVersion >}}의 컨트롤 플레인과 연동될 수 있다.
|
||||||
예를 들어, v1.2 클라이언트는 v1.1, v1.2 및 v1.3의 마스터와 함께 작동해야 한다.
|
|
||||||
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
|
||||||
|
|
||||||
## 윈도우에 kubectl 설치
|
## 윈도우에 kubectl 설치
|
||||||
@@ -21,9 +20,8 @@ card:
|
|||||||
다음과 같은 방법으로 윈도우에 kubectl을 설치할 수 있다.
|
다음과 같은 방법으로 윈도우에 kubectl을 설치할 수 있다.
|
||||||
|
|
||||||
- [윈도우에서 curl을 사용하여 kubectl 바이너리 설치](#install-kubectl-binary-with-curl-on-windows)
|
- [윈도우에서 curl을 사용하여 kubectl 바이너리 설치](#install-kubectl-binary-with-curl-on-windows)
|
||||||
- [PSGallery에서 PowerShell로 설치](#install-with-powershell-from-psgallery)
|
|
||||||
- [Chocolatey 또는 Scoop을 사용하여 윈도우에 설치](#install-on-windows-using-chocolatey-or-scoop)
|
- [Chocolatey 또는 Scoop을 사용하여 윈도우에 설치](#install-on-windows-using-chocolatey-or-scoop)
|
||||||
- [Google Cloud SDK를 사용하여 설치](#install-on-windows-as-part-of-the-google-cloud-sdk)
|
- [윈도우에서 Google Cloud SDK를 사용하여 설치](#install-on-windows-as-part-of-the-google-cloud-sdk)
|
||||||
|
|
||||||
|
|
||||||
### 윈도우에서 curl을 사용하여 kubectl 바이너리 설치 {#install-kubectl-binary-with-curl-on-windows}
|
### 윈도우에서 curl을 사용하여 kubectl 바이너리 설치 {#install-kubectl-binary-with-curl-on-windows}
|
||||||
@@ -76,33 +74,6 @@ card:
|
|||||||
도커 데스크톱을 이전에 설치한 경우, 도커 데스크톱 설치 프로그램에서 추가한 `PATH` 항목 앞에 `PATH` 항목을 배치하거나 도커 데스크톱의 `kubectl` 을 제거해야 할 수도 있다.
|
도커 데스크톱을 이전에 설치한 경우, 도커 데스크톱 설치 프로그램에서 추가한 `PATH` 항목 앞에 `PATH` 항목을 배치하거나 도커 데스크톱의 `kubectl` 을 제거해야 할 수도 있다.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### PSGallery에서 PowerShell로 설치 {#install-with-powershell-from-psgallery}
|
|
||||||
|
|
||||||
윈도우에서 [Powershell Gallery](https://www.powershellgallery.com/) 패키지 관리자를 사용하는 경우, Powershell로 kubectl을 설치하고 업데이트할 수 있다.
|
|
||||||
|
|
||||||
1. 설치 명령을 실행한다(`DownloadLocation` 을 지정해야 한다).
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Install-Script -Name install-kubectl -Scope CurrentUser -Force
|
|
||||||
install-kubectl.ps1 [-DownloadLocation <path>]
|
|
||||||
```
|
|
||||||
|
|
||||||
{{< note >}}
|
|
||||||
`DownloadLocation` 을 지정하지 않으면, `kubectl` 은 사용자의 `temp` 디렉터리에 설치된다.
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
설치 프로그램은 `$HOME/.kube` 를 생성하고 구성 파일을 작성하도록 지시한다.
|
|
||||||
|
|
||||||
1. 설치한 버전이 최신 버전인지 확인한다.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
kubectl version --client
|
|
||||||
```
|
|
||||||
|
|
||||||
{{< note >}}
|
|
||||||
설치 업데이트는 1 단계에서 나열한 두 명령을 다시 실행하여 수행한다.
|
|
||||||
{{< /note >}}
|
|
||||||
|
|
||||||
### Chocolatey 또는 Scoop을 사용하여 윈도우에 설치 {#install-on-windows-using-chocolatey-or-scoop}
|
### Chocolatey 또는 Scoop을 사용하여 윈도우에 설치 {#install-on-windows-using-chocolatey-or-scoop}
|
||||||
|
|
||||||
1. 윈도우에 kubectl을 설치하기 위해서 [Chocolatey](https://chocolatey.org) 패키지 관리자나 [Scoop](https://scoop.sh) 커맨드 라인 설치 프로그램을 사용할 수 있다.
|
1. 윈도우에 kubectl을 설치하기 위해서 [Chocolatey](https://chocolatey.org) 패키지 관리자나 [Scoop](https://scoop.sh) 커맨드 라인 설치 프로그램을 사용할 수 있다.
|
||||||
@@ -156,7 +127,7 @@ card:
|
|||||||
메모장과 같은 텍스트 편집기를 선택하여 구성 파일을 편집한다.
|
메모장과 같은 텍스트 편집기를 선택하여 구성 파일을 편집한다.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
### Google Cloud SDK를 사용하여 설치 {#install-on-windows-as-part-of-the-google-cloud-sdk}
|
### 윈도우에서 Google Cloud SDK를 사용하여 설치 {#install-on-windows-as-part-of-the-google-cloud-sdk}
|
||||||
|
|
||||||
{{< include "included/install-kubectl-gcloud.md" >}}
|
{{< include "included/install-kubectl-gcloud.md" >}}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다.
|
|||||||
|
|
||||||
<!-- lessoncontent -->
|
<!-- lessoncontent -->
|
||||||
|
|
||||||
## minikubue 클러스터 만들기
|
## minikube 클러스터 만들기
|
||||||
|
|
||||||
1. **Launch Terminal** 을 클릭
|
1. **Launch Terminal** 을 클릭
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user