diff --git a/content/ko/_index.html b/content/ko/_index.html
index f932ba6c2ec66..f179c6576214a 100644
--- a/content/ko/_index.html
+++ b/content/ko/_index.html
@@ -3,6 +3,7 @@
abstract: "자동화된 컨테이너 배포, 스케일링과 관리"
cid: home
---
+{{< announcement >}}
{{< deprecationwarning >}}
diff --git a/content/ko/docs/concepts/architecture/cloud-controller.md b/content/ko/docs/concepts/architecture/cloud-controller.md
index effa7313a270a..bb6e199445264 100644
--- a/content/ko/docs/concepts/architecture/cloud-controller.md
+++ b/content/ko/docs/concepts/architecture/cloud-controller.md
@@ -223,13 +223,14 @@ rules:
다음은 클라우드 제공사업자들이 구현한 CCM들이다.
-* [Digital Ocean](https://github.com/digitalocean/digitalocean-cloud-controller-manager)
-* [Oracle](https://github.com/oracle/oci-cloud-controller-manager)
-* [Azure](https://github.com/kubernetes/cloud-provider-azure)
-* [GCP](https://github.com/kubernetes/cloud-provider-gcp)
* [AWS](https://github.com/kubernetes/cloud-provider-aws)
+* [Azure](https://github.com/kubernetes/cloud-provider-azure)
* [BaiduCloud](https://github.com/baidu/cloud-provider-baiducloud)
+* [Digital Ocean](https://github.com/digitalocean/digitalocean-cloud-controller-manager)
+* [GCP](https://github.com/kubernetes/cloud-provider-gcp)
* [Linode](https://github.com/linode/linode-cloud-controller-manager)
+* [OpenStack](https://github.com/kubernetes/cloud-provider-openstack)
+* [Oracle](https://github.com/oracle/oci-cloud-controller-manager)
## 클러스터 관리
diff --git a/content/ko/docs/concepts/architecture/nodes.md b/content/ko/docs/concepts/architecture/nodes.md
index 2028073489c89..ee8e2661b8815 100644
--- a/content/ko/docs/concepts/architecture/nodes.md
+++ b/content/ko/docs/concepts/architecture/nodes.md
@@ -190,9 +190,20 @@ DaemonSet 컨트롤러에 의해 생성된 파드는 쿠버네티스 스케줄
파드 형태가 아닌 프로세스에 대해 명시적으로 리소스를 확보하려면, [reserve resources for system daemons](/docs/tasks/administer-cluster/reserve-compute-resources/#system-reserved) 튜토리얼을 따른다.
+## 노드 토폴로지
+
+{{< feature-state state="alpha" >}}
+
+`TopologyManager`
+[기능 게이트(feature gate)](/docs/reference/command-line-tools-reference/feature-gates/)를
+활성화 시켜두면, kubelet이 리소스 할당 결정을 할 때 토폴로지 힌트를 사용할 수 있다.
## API 오브젝트
노드는 쿠버네티스 REST API 내 탑-레벨 리소스 이다. API 오브젝트에 대한 보다 자세한 내용은 [노드 API 오브젝트](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core)에서 확인할 수 있다.
{{% /capture %}}
+{{% capture whatsnext %}}
+* [노드 컴포넌트](https://kubernetes.io/docs/concepts/overview/components/#node-components)에 대해 읽기
+* 노드 수준 토폴로지에 대해 읽기: [노드의 토폴로지 정책 제어하기](/docs/tasks/administer-cluster/topology-manager/)
+{{% /capture %}}
diff --git a/content/ko/docs/concepts/containers/runtime-class.md b/content/ko/docs/concepts/containers/runtime-class.md
index 86dd09209c728..71995aa22cce3 100644
--- a/content/ko/docs/concepts/containers/runtime-class.md
+++ b/content/ko/docs/concepts/containers/runtime-class.md
@@ -54,10 +54,9 @@ RuntimeClass 특징 게이트가 활성화(기본값)를 확인한다.
연관된 문서를 통해서 확인한다([아래](#cri-configuration)).
{{< note >}}
-런타임 클래스는 클러스터 전체에 걸쳐 동질의 노드 설정
-(모든 노드가 컨테이너 런타임에 준하는 동일한 방식으로 설정되었음을 의미)을 가정한다. 어떠한 이질성(다양한
-설정)이라도 스케줄링 특징을 통해서 런타임 클래스와는 독립적으로 관리되어야 한다
-([파드를 노드에 할당하기](/docs/concepts/configuration/assign-pod-node/) 참고).
+런타임 클래스는 기본적으로 클러스터 전체에 걸쳐 동질의 노드 설정
+(모든 노드가 컨테이너 런타임에 준하는 동일한 방식으로 설정되었음을 의미)을 가정한다.
+이종의(heterogenous) 노드 설정을 지원하기 위해서는, 아래 [스케줄링](#scheduling)을 참고한다.
{{< /note >}}
해당 설정은 상응하는 `handler` 이름을 가지며, 이는 런타임 클래스에 의해서 참조된다.
@@ -144,6 +143,42 @@ https://github.com/containerd/cri/blob/master/docs/config.md
더 자세한 cri-o의 구성 문서를 살펴본다.
https://github.com/kubernetes-sigs/cri-o/blob/master/cmd/crio/config.go
+### 스케줄
+
+{{< feature-state for_k8s_version="v1.16" state="beta" >}}
+
+쿠버네티스 v1.16 부터, 런타임 클래스는 `scheduling` 필드를 통해 이종의 클러스터 지원을 포함한다.
+이 필드를 사용하면, 이 런타임 클래스를 갖는 파드가 이를 지원하는 노드로 스케줄된다는 것을 보장할 수 있다.
+이 스케줄링 기능을 사용하려면, 런타임 클래스 [어드미션(admission) 컨트롤러][]를 활성화(1.16 부터 기본 값)해야 한다.
+
+파드가 지정된 런타임 클래스를 지원하는 노드에 안착한다는 것을 보장하려면,
+해당 노드들은 `runtimeClass.scheduling.nodeSelector` 필드에서 선택되는 공통 레이블을 가져야한다.
+런타임 클래스의 nodeSelector는 파드의 nodeSelector와 어드미션 시 병합되어서, 실질적으로
+각각에 의해 선택된 노드의 교집합을 취한다. 충돌이 있는 경우, 파드는 거부된다.
+
+지원되는 노드가 테인트(taint)되어서 다른 런타임 클래스 파드가 노드에서 구동되는 것을 막고 있다면,
+`tolerations`를 런타임 클래스에 추가할 수 있다. `nodeSelector`를 사용하면, 어드미션 시
+해당 톨러레이션(toleration)이 파드의 톨러레이션과 병합되어, 실질적으로 각각에 의해 선택된
+노드의 합집합을 취한다.
+
+노드 셀렉터와 톨러레이션 설정에 대해 더 배우려면
+[노드에 파드 할당](/docs/concepts/configuration/assign-pod-node/)을 참고한다.
+
+[어드미션 컨트롤러]: /docs/reference/access-authn-authz/admission-controllers/
+
+### 파드 오버헤드
+
+{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
+
+쿠버네티스 v1.16 부터는, 런타임 클래스에는 구동 중인 파드와 관련된 오버헤드를
+지정할 수 있는 기능이 [`PodOverhead`](/docs/concepts/configuration/pod-overhead.md) 기능을 통해 지원된다.
+`PodOverhead`를 사용하려면, PodOverhead [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/)를
+활성화 시켜야 한다. (기본 값으로는 비활성화 되어 있다.)
+
+
+파드 오버헤드는 런타임 클래스에서 `Overhead` 필드를 통해 정의된다. 이 필드를 사용하면,
+해당 런타임 클래스를 사용해서 구동 중인 파드의 오버헤드를 특정할 수 있고 이 오버헤드가
+쿠버네티스 내에서 처리된다는 것을 보장할 수 있다.
### 런타임 클래스를 알파에서 베타로 업그레이드 {#upgrading-runtimeclass-from-alpha-to-beta}
@@ -172,4 +207,11 @@ https://github.com/kubernetes-sigs/cri-o/blob/master/cmd/crio/config.go
더 이상 올바르지 않으며, 반드시 올바른 핸들러 구성으로 이전헤야 한다
(위를 참조).
+### 더 읽기
+
+- [런타임 클래스 설계](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class.md)
+- [런타임 클래스 스케줄링 설계](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/runtime-class-scheduling.md)
+- [파드 오버헤드](/docs/concepts/configuration/pod-overhead/) 개념에 대해 읽기
+- [파드 오버헤드 기능 설계](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
+
{{% /capture %}}
diff --git a/content/ko/docs/concepts/workloads/controllers/deployment.md b/content/ko/docs/concepts/workloads/controllers/deployment.md
index bf373c8d2bb59..effb86d249f08 100644
--- a/content/ko/docs/concepts/workloads/controllers/deployment.md
+++ b/content/ko/docs/concepts/workloads/controllers/deployment.md
@@ -227,7 +227,7 @@ _디플로이먼트_ 컨트롤러는 [파드](/ko/docs/concepts/workloads/pods/p
다음에 이러한 파드를 업데이트 하려면 디플로이먼트의 파드 템플릿만 다시 업데이트 하면 된다.
디플로이먼트는 업데이트되는 동안 일정한 수의 파드만 중단되도록 보장한다. 기본적으로
- 적어도 의도한 파드 수의 25% 이상이 동작하도록 보장한다(최대 25% 이상 불가).
+ 적어도 의도한 파드 수의 75% 이상이 동작하도록 보장한다(최대 25% 불가).
또한 디플로이먼트는 의도한 파드 수 보다 더 많이 생성되는 파드의 수를 제한한다.
기본적으로, 의도한 파드의 수 기준 최대 25%까지만 추가 파드가 동작할 수 있도록 제한한다(최대 25% 까지).
diff --git a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md
index d565d7751ee9a..a0d3abedfb9ae 100644
--- a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md
+++ b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md
@@ -101,21 +101,29 @@ kubelet은 컨테이너에 의해서 구현된
* Failure: 컨테이너가 진단에 실패함.
* Unknown: 진단 자체가 실패하였으므로 아무런 액션도 수행되면 안됨.
-kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 두 가지 종류의 프로브를 수행하고
+kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 세 가지 종류의 프로브를 수행하고
그에 반응할 수 있다.
-* `livenessProbe`는 컨테이너가 동작 중인지 여부를 나타낸다. 만약
+* `livenessProbe`: 컨테이너가 동작 중인지 여부를 나타낸다. 만약
활성 프로브(liveness probe)에 실패한다면, kubelet은 컨테이너를 죽이고, 해당 컨테이너는
[재시작 정책](#재시작-정책)의 대상이 된다. 만약 컨테이너가
활성 프로브를 제공하지 않는 경우, 기본 상태는 `Success`이다.
-* `readinessProbe`는 컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타낸다.
+* `readinessProbe`: 컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타낸다.
만약 준비성 프로브(readiness probe)가 실패한다면, 엔드포인트 컨트롤러는
파드에 연관된 모든 서비스들의 엔드포인트에서 파드의 IP주소를 제거한다. 준비성 프로브의
초기 지연 이전의 기본 상태는 `Failure`이다. 만약 컨테이너가 준비성 프로브를
지원하지 않는다면, 기본 상태는 `Success`이다.
-### 언제 활성 또는 준비성 프로브를 사용해야 하는가?
+* `startupProbe`: 컨테이너 내의 애플리케이션이 시작되었는지를 나타낸다.
+ 스타트업 프로브(startup probe)가 주어진 경우, 성공할 때 까지 다른 나머지 프로브는
+ 활성화 되지 않는다. 만약 스타트업 프로브가 실패하면, kubelet이 컨테이너를 죽이고,
+ 컨테이너는 [재시작 정책](#재시작-정책)에 따라 처리된다. 컨테이너에 스타트업
+ 프로브가 없는 경우, 기본 상태는 `Success`이다.
+
+### 언제 활성 프로브를 사용해야 하는가?
+
+{{< feature-state for_k8s_version="v1.0" state="stable" >}}
만약 컨테이너 속 프로세스가 어떠한 이슈에 직면하거나 건강하지 못한
상태(unhealthy)가 되는 등 프로세스 자체의 문제로 중단될 수 있더라도, 활성 프로브가
@@ -125,6 +133,10 @@ kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 두 가지
프로브가 실패한 후 컨테이너가 종료되거나 재시작되길 원한다면, 활성 프로브를
지정하고, `restartPolicy`를 항상(Always) 또는 실패 시(OnFailure)로 지정한다.
+### 언제 준비성 프로브를 사용해야 하는가?
+
+{{< feature-state for_k8s_version="v1.0" state="stable" >}}
+
프로브가 성공한 경우에만 파드에 트래픽 전송을 시작하려고 한다면, 준비성 프로브를 지정하길 바란다.
이 경우에서는, 준비성 프로브가 활성 프로브와 유사해 보일 수도 있지만,
스팩에 준비성 프로브가 존재한다는 것은 파드가 트래픽을 받지 않는 상태에서
@@ -142,6 +154,13 @@ kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 두 가지
파드는 파드 내의 모든 컨테이너들이 중지될 때까지 준비되지 않은 상태로
남아있는다.
+### 언제 스타트업 프로브를 사용해야 하는가?
+
+{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
+
+컨테이너가 보통 `initialDelaySeconds + failureThreshold × periodSeconds` 이후에 기동된다면, 스타트업 프로브가 활성화 프로브와 같은 엔드포인트를 체크하도록 명시해야 한다. `periodSeconds`의 기본 값은 30s 이다.
+이 때 컨테이너가 활성화 프로브의 기본 값 변경 없이 기동되도록 하려면 `failureThreshold`를 충분히 높게 설정해주어야 한다. 그래야 데드락(deadlocks)을 방지하는데 도움이 된다.
+
활성 프로브 및 준비성 프로브를 설정하는 방법에 대한 추가적인 정보는,
[활성 프로브 및 준비성 프로브 설정하기](/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)를 참조하면 된다.
diff --git a/content/ko/docs/reference/_index.md b/content/ko/docs/reference/_index.md
index 8ca5921f15215..0df4d59fe1a7b 100644
--- a/content/ko/docs/reference/_index.md
+++ b/content/ko/docs/reference/_index.md
@@ -18,11 +18,11 @@ content_template: templates/concept
* [쿠버네티스 API 개요](/ko/docs/reference/using-api/api-overview/) - 쿠버네티스 API에 대한 개요
* 쿠버네티스 API 버전
+ * [1.16](/docs/reference/generated/kubernetes-api/v1.16/)
* [1.15](/docs/reference/generated/kubernetes-api/v1.15/)
* [1.14](/docs/reference/generated/kubernetes-api/v1.14/)
* [1.13](/docs/reference/generated/kubernetes-api/v1.13/)
* [1.12](/docs/reference/generated/kubernetes-api/v1.12/)
- * [1.11](/docs/reference/generated/kubernetes-api/v1.11/)
## API 클라이언트 라이브러리
diff --git a/content/ko/docs/reference/glossary/applications.md b/content/ko/docs/reference/glossary/applications.md
index 7719f0a1fca77..c8c7c0d029ca3 100644
--- a/content/ko/docs/reference/glossary/applications.md
+++ b/content/ko/docs/reference/glossary/applications.md
@@ -5,7 +5,6 @@ date: 2019-05-12
full_link:
short_description: >
컨테이너화된 다양한 애플리케이션들이 실행되는 레이어.
-
aka:
tags:
- fundamental
diff --git a/content/ko/docs/reference/glossary/static-pod.md b/content/ko/docs/reference/glossary/static-pod.md
index 6b80d40e24b17..19e1f4bbc689a 100755
--- a/content/ko/docs/reference/glossary/static-pod.md
+++ b/content/ko/docs/reference/glossary/static-pod.md
@@ -2,13 +2,17 @@
title: 스태틱 파드(Static Pod)
id: static-pod
date: 2019-02-12
-full_link: /docs/tasks/administer-cluster/static-pod/
+full_link: /docs/tasks/configure-pod-container/static-pod/
short_description: >
특정 노드의 Kubelet 데몬이 직접 관리하는 파드
-aka:
+aka:
tags:
- fundamental
---
- API 서버가 관찰하지 않고, 특정 노드의 Kubelet 데몬이
- 직접 관리하는 {{< glossary_tooltip text="파드" term_id="pod" >}}.
+
+특정 노드의 Kubelet 데몬이
+ 직접 관리하는 {{< glossary_tooltip text="파드" term_id="pod" >}}로,
+
+
+API 서버가 관찰하지 않는다.
\ No newline at end of file
diff --git a/content/ko/docs/reference/glossary/workload.md b/content/ko/docs/reference/glossary/workload.md
index 80aaa95d34c20..55dcc3167bcdc 100644
--- a/content/ko/docs/reference/glossary/workload.md
+++ b/content/ko/docs/reference/glossary/workload.md
@@ -9,20 +9,15 @@ short_description: >
aka:
tags:
- fundamental
-- core-object
-- workload
---
- 워크로드는 클러스터의 컨테이너를 동작시키고 관리하기 위해 사용하는 오브젝트이다.
+ 워크로드는 쿠버네티스에서 구동되는 애플리케이션이다.
-쿠버네티스는
-애플리케이션의 현재 상태에 따라 워크로드의 디플로이먼트와 업데이트를 수행한다.
-워크로드는 데몬셋, 디플로이먼트, 잡, 파드, 레플리카셋, 레플리케이션컨트롤러, 스테이트풀셋과 같은 오브젝트를 포함한다.
+데몬셋, 디플로이먼트, 잡, 레플리카셋, 그리고 스테이트풀셋 오브젝트를 포함해서
+서로 다른 워크로드의 유형이나 부분을 대표하는 다양한 핵심 오브젝트.
-예를 들어, 웹 요소와 데이터베이스 요소가 있는 워크로드는
-데이터베이스를 {{< glossary_tooltip text="파드" term_id="pod" >}}의 한
-{{< glossary_tooltip text="스테이트풀셋" term_id="StatefulSet" >}} 안에서 실행할 것이며,
-웹서버를 많은 웹 앱 {{< glossary_tooltip text="파드" term_id="pod" >}}로 구성된
-{{< glossary_tooltip text="디플로이먼트" term_id="Deployment" >}}를 통해 실행할 것이다.
+예를 들어, 웹 서버와 데이터베이스가 있는 워크로드는
+데이터베이스를 한 {{< glossary_tooltip text="스테이트풀셋" term_id="StatefulSet" >}} 안에서 실행할 것이며,
+웹서버를 {{< glossary_tooltip text="디플로이먼트" term_id="Deployment" >}}를 통해 실행할 것이다.
diff --git a/content/ko/docs/setup/_index.md b/content/ko/docs/setup/_index.md
index 3a036102991ff..2eca06d667563 100644
--- a/content/ko/docs/setup/_index.md
+++ b/content/ko/docs/setup/_index.md
@@ -78,7 +78,7 @@ card:
| [Docker Enterprise](https://www.docker.com/products/docker-enterprise) | |✔ | ✔ | | | ✔
| [Fedora (멀티 노드)](https://kubernetes.io/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | | | | | ✔ | ✔
| [Fedora (단일 노드)](https://kubernetes.io/docs/getting-started-guides/fedora/fedora_manual_config/) | | | | | | ✔
-| [Gardener](https://gardener.cloud/) | |✔ | | ✔ | |
+| [Gardener](https://gardener.cloud/) | ✔ | ✔ | ✔ (via OpenStack) | ✔ | |
| [Giant Swarm](https://giantswarm.io/) | ✔ | ✔ | ✔ | |
| [Google](https://cloud.google.com/) | [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine/) | [Google Compute Engine (GCE)](https://cloud.google.com/compute/)|[GKE On-Prem](https://cloud.google.com/gke-on-prem/) | | | | | | | |
| [IBM](https://www.ibm.com/in-en/cloud) | [IBM Cloud Kubernetes Service](https://cloud.ibm.com/kubernetes/catalog/cluster)| |[IBM Cloud Private](https://www.ibm.com/in-en/cloud/private) | |
@@ -105,5 +105,6 @@ card:
| [Tencent Cloud](https://intl.cloud.tencent.com/) | [Tencent Kubernetes Engine](https://intl.cloud.tencent.com/product/tke) | ✔ | ✔ | | | ✔ |
| [VEXXHOST](https://vexxhost.com/) | ✔ | ✔ | | | |
| [VMware](https://cloud.vmware.com/) | [VMware Cloud PKS](https://cloud.vmware.com/vmware-cloud-pks) |[VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Enterprise PKS](https://cloud.vmware.com/vmware-enterprise-pks) | [VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks) | |[VMware Essential PKS](https://cloud.vmware.com/vmware-essential-pks)
+| [Z.A.R.V.I.S.](https://zarvis.ai/) | ✔ | | | | | |
{{% /capture %}}
diff --git a/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md b/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md
index 12d213bb8fe3e..2520f1ed2d971 100644
--- a/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md
+++ b/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md
@@ -40,7 +40,7 @@ kubeadm의 `ClusterConfiguration` 오브젝트는 API 서버, 컨트롤러매니
```yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
-kubernetesVersion: v1.13.0
+kubernetesVersion: v1.16.0
apiServer:
extraArgs:
advertise-address: 192.168.0.103
@@ -57,7 +57,7 @@ apiServer:
```yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
-kubernetesVersion: v1.13.0
+kubernetesVersion: v1.16.0
controllerManager:
extraArgs:
cluster-signing-key-file: /home/johndoe/keys/ca.key
@@ -73,7 +73,7 @@ controllerManager:
```yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
-kubernetesVersion: v1.13.0
+kubernetesVersion: v1.16.0
scheduler:
extraArgs:
address: 0.0.0.0
diff --git a/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md
index af58c4965e105..deb5aadb72d15 100644
--- a/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md
+++ b/content/ko/docs/setup/production-environment/windows/user-guide-windows-containers.md
@@ -102,6 +102,10 @@ weight: 75
윈도우 컨테이너 호스트는 현재 윈도우 네트워킹 스택의 플랫폼 제한으로 인해, 그 안에서 스케줄링하는 서비스의 IP 주소로 접근할 수 없다. 윈도우 파드만 서비스 IP 주소로 접근할 수 있다.
{{< /note >}}
+## 설정 가능한 컨테이너 username 사용하기
+
+쿠버네티스 v1.16 부터, 윈도우 컨테이너는 이미지 기본 값과는 다른 username으로 엔트리포인트와 프로세스를 실행하도록 설정할 수 있다. 이 방식은 리눅스 컨테이너에서 지원되는 방식과는 조금 차이가 있다. [여기](/docs/tasks/configure-pod-container/configure-runasusername/)에서 이에 대해 추가적으로 배울 수 있다.
+
## 그룹 매니지드 서비스 어카운트를 이용하여 워크로드 신원 관리하기
쿠버네티스 v1.14부터 윈도우 컨테이너 워크로드는 그룹 매니지드 서비스 어카운트(GMSA, Group Managed Service Account)를 이용하여 구성할 수 있다. 그룹 매니지드 서비스 어카운트는 액티브 디렉터리 어카운트의 특정한 종류로 자동 암호 관리 기능, 단순화된 서비스 주체 이름(SPN, simplified service principal name), 여러 서버의 다른 관리자에게 관리를 위임하는 기능을 제공한다. GMSA로 구성한 컨테이너는 GMSA로 구성된 신원을 들고 있는 동안 외부 액티브 디렉터리 도메인 리소스를 접근할 수 있다. 윈도우 컨테이너를 위한 GMSA를 이용하고 구성하는 방법은 [여기](/docs/tasks/configure-pod-container/configure-gmsa/)에서 알아보자.
diff --git a/content/ko/docs/setup/production-environment/windows/user-guide-windows-nodes.md b/content/ko/docs/setup/production-environment/windows/user-guide-windows-nodes.md
index 6e60bffaa8d63..a96f183e58f0b 100644
--- a/content/ko/docs/setup/production-environment/windows/user-guide-windows-nodes.md
+++ b/content/ko/docs/setup/production-environment/windows/user-guide-windows-nodes.md
@@ -1,26 +1,35 @@
---
reviewers:
title: 쿠버네티스에서 윈도우 노드 추가 가이드
-content_template: templates/concept
+min-kubernetes-server-version: v1.14
+content_template: templates/tutorial
weight: 70
---
{{% capture overview %}}
-쿠버네티스 플랫폼은 이제 리눅스와 윈도우 컨테이너 모두 운영할 수 있다. 윈도우 노드도 클러스터에 등록할 수 있다. 이 가이드는 다음을 어떻게 하는지 보여준다.
+쿠버네티스 플랫폼은 이제 리눅스와 윈도우 컨테이너 모두 운영할 수 있다. 윈도우 노드도 클러스터에 등록할 수 있다. 이 페이지에서는 어떻게 하나 또는 그 이상의 윈도우 노드를 클러스터에 등록할 수 있는지 보여준다.
+{{% /capture %}}
-* 윈도우 노드를 클러스터에 등록하기
-* 리눅스와 윈도우에서 동작하는 파드가 상호 간에 통신할 수 있게 네트워크를 구성하기
+
+{{% capture prerequisites %}}
+
+* 윈도우 컨테이너를 호스트하는 윈도우 노드를 구성하려면 [윈도우 서버 2019 라이선스](https://www.microsoft.com/en-us/cloud-platform/windows-server-pricing)를 소유해야 한다. 클러스터를 위해서 소속 기관의 라이선스를 사용하거나, Microsoft, 리셀러로 부터 취득할 수 있으며, GCP, AWS, Azure와 같은 주요 클라우드 제공자의 마켓플레이스를 통해 윈도우 서버를 운영하는 가상머신을 프로비저닝하여 취득할 수도 있다. [사용시간이 제한된 시험판](https://www.microsoft.com/en-us/cloud-platform/windows-server-trial)도 활용 가능하다.
+
+* 컨트롤 플레인에 접근할 수 있는 리눅스 기반의 쿠버네티스 클러스터를 구축한다.(몇 가지 예시는 [kubeadm으로 단일 컨트롤플레인 클러스터 만들기](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/), [AKS Engine](/docs/setup/production-environment/turnkey/azure/), [GCE](/docs/setup/production-environment/turnkey/gce/), [AWS](/docs/setup/production-environment/turnkey/aws/)를 포함한다)
{{% /capture %}}
-{{% capture body %}}
-## 시작하기 전에
+{{% capture objectives %}}
-* 윈도우 컨테이너를 호스트하는 윈도우 노드를 구성하려면 [윈도우 서버 라이선스](https://www.microsoft.com/en-us/cloud-platform/windows-server-pricing)를 소유해야 한다. 클러스터를 위해서 소속 기관의 라이선스를 사용하거나, Microsoft, 리셀러로 부터 취득할 수 있으며, GCP, AWS, Azure와 같은 주요 클라우드 제공자의 마켓플레이스를 통해 윈도우 서버를 운영하는 가상머신을 프로비저닝하여 취득할 수도 있다. [사용시간이 제한된 시험판](https://www.microsoft.com/en-us/cloud-platform/windows-server-trial)도 활용 가능하다.
+* 윈도우 노드를 클러스터에 등록하기
+* 리눅스와 윈도우에서 동작하는 파드와 서비스가 상호 간에 통신할 수 있게 네트워크를 구성하기
-* 컨트롤 플레인에 접근할 수 있는 리눅스 기반의 쿠버네티스 클러스터를 구축한다.(몇 가지 예시는 [kubeadm으로 단일 컨트롤플레인 클러스터 만들기](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/), [AKS Engine](/docs/setup/production-environment/turnkey/azure/), [GCE](/docs/setup/production-environment/turnkey/gce/), [AWS](/docs/setup/production-environment/turnkey/aws/)를 포함한다)
+{{% /capture %}}
+
+
+{{% capture lessoncontent %}}
## 시작하기: 사용자 클러스터에 윈도우 노드 추가하기
@@ -51,9 +60,9 @@ v1.14 이후의 최신 바이너리를 [https://github.com/kubernetes/kubernetes
### 네트워크 구성
-리눅스 기반의 쿠버네티스 마스터 노드를 가지고 있다면 네트워킹 솔루션을 선택할 준비가 된 것이다. 이 가이드는 단순화를 위해 VXLAN 방식의 플라넬(Flannel)을 사용하여 설명한다.
+리눅스 기반의 쿠버네티스 컨트롤 플레인("마스터") 노드를 가지고 있다면 네트워킹 솔루션을 선택할 준비가 된 것이다. 이 가이드는 단순화를 위해 VXLAN 방식의 플라넬(Flannel)을 사용하여 설명한다.
-#### 리눅스 컨트롤러에서 VXLAN 방식으로 플라넬 구성하기
+#### 리눅스 컨트롤 플레인에서 VXLAN 방식으로 플라넬 구성하기
1. 플라넬을 위해 쿠버네티스 마스터를 준비한다.
@@ -120,7 +129,7 @@ v1.14 이후의 최신 바이너리를 [https://github.com/kubernetes/kubernetes
}
```
-1. 플라넬 yaml 을 적용하고 확인하기
+1. 플라넬 매니페스트를 적용하고 확인하기
플라넬 구성을 적용하자.
@@ -167,132 +176,168 @@ v1.14 이후의 최신 바이너리를 [https://github.com/kubernetes/kubernetes
kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 26d
```
-#### 윈도우 워커 조인
-이번 단원은 맨 땅에서부터 온프레미스 클러스터에 가입하기까지 윈도우 노드 구성을 다룬다. 클러스터가 클라우드상에 있다면, 다음 단원에 있는 클라우드에 특정한 가이드를 따르도록 된다.
+
+### 윈도우 워커 노드 추가하기
+
+이번 단원은 맨 땅에서부터 온프레미스 클러스터에 가입하기까지 윈도우 노드 구성을 다룬다. 클러스터가 클라우드상에 있다면, [퍼블릭 클라우드 제공자 단원](#퍼블릭-클라우드-제공자)에 있는 클라우드에 특정한 가이드를 따르도록 된다.
#### 윈도우 노드 준비하기
{{< note >}}
-윈도우 단원에서 모든 코드 부분은 높은 권한(Admin)으로 파워쉘(PowerShell) 환경에서 구동한다.
+윈도우 단원에서 모든 코드 부분은 윈도우 워커 노드에서 높은 권한(Administrator)으로 파워쉘(PowerShell) 환경에서 구동한다.
{{< /note >}}
-1. 도커(Docker) 설치(시스템 리부팅 필요)
-
- 쿠버네티스는 [도커](https://www.docker.com/)를 컨테이너 엔진으로 사용하므로, 도커를 설치해야 한다. [공식 문서 설치 요령](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon#install-docker), [도커 명령](https://store.docker.com/editions/enterprise/docker-ee-server-windows)을 따라 해보거나 다음의 *권장하는* 단계를 시도하자.
+1. 설치 및 참여(join) 스크립트가 포함된 [SIG Windows tools](https://github.com/kubernetes-sigs/sig-windows-tools) 리포지터리를 내려받는다.
+ ```PowerShell
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+ Start-BitsTransfer https://github.com/kubernetes-sigs/sig-windows-tools/archive/master.zip
+ tar -xvf .\master.zip --strip-components 3 sig-windows-tools-master/kubeadm/v1.15.0/*
+ Remove-Item .\master.zip
+ ```
- ```PowerShell
- Enable-WindowsOptionalFeature -FeatureName Containers
- Restart-Computer -Force
- Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
- Install-Package -Name Docker -ProviderName DockerMsftProvider
- ```
-
- 네트워크 프록시 안쪽에서 작업한다면 다음 파워쉘 환경 변수를 반드시 정의하자.
+1. 쿠버네티스 [구성 파일](https://github.com/kubernetes-sigs/sig-windows-tools/blob/master/kubeadm/v1.15.0/Kubeclustervxlan.json)을 커스터마이즈한다.
- ```PowerShell
- [Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://proxy.example.com:80/", [EnvironmentVariableTarget]::Machine)
- [Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://proxy.example.com:443/", [EnvironmentVariableTarget]::Machine)
- ```
-
- 리부팅 후에 다음 오류를 보게되면, 도커 서비스를 수동으로 재시작해야 한다.
-
- ```PowerShell
- docker version
```
+ {
+ "Cri" : { // Contains values for container runtime and base container setup
+ "Name" : "dockerd", // Container runtime name
+ "Images" : {
+ "Pause" : "mcr.microsoft.com/k8s/core/pause:1.2.0", // Infrastructure container image
+ "Nanoserver" : "mcr.microsoft.com/windows/nanoserver:1809", // Base Nanoserver container image
+ "ServerCore" : "mcr.microsoft.com/windows/servercore:ltsc2019" // Base ServerCore container image
+ }
+ },
+ "Cni" : { // Contains values for networking executables
+ "Name" : "flannel", // Name of network fabric
+ "Source" : [{ // Contains array of objects containing values for network daemon(s)
+ "Name" : "flanneld", // Name of network daemon
+ "Url" : "https://github.com/coreos/flannel/releases/download/v0.11.0/flanneld.exe" // Direct URL pointing to network daemon executable
+ }
+ ],
+ "Plugin" : { // Contains values for CNI network plugin
+ "Name": "vxlan" // Backend network mechanism to use: ["vxlan" | "bridge"]
+ },
+ "InterfaceName" : "Ethernet" // Designated network interface name on Windows node to use as container network
+ },
+ "Kubernetes" : { // Contains values for Kubernetes node binaries
+ "Source" : { // Contains values for Kubernetes node binaries
+ "Release" : "1.15.0", // Version of Kubernetes node binaries
+ "Url" : "https://dl.k8s.io/v1.15.0/kubernetes-node-windows-amd64.tar.gz" // Direct URL pointing to Kubernetes node binaries tarball
+ },
+ "ControlPlane" : { // Contains values associated with Kubernetes control-plane ("Master") node
+ "IpAddress" : "kubemasterIP", // IP address of control-plane ("Master") node
+ "Username" : "localadmin", // Username on control-plane ("Master") node with remote SSH access
+ "KubeadmToken" : "token", // Kubeadm bootstrap token
+ "KubeadmCAHash" : "discovery-token-ca-cert-hash" // Kubeadm CA key hash
+ },
+ "KubeProxy" : { // Contains values for Kubernetes network proxy configuration
+ "Gates" : "WinOverlay=true" // Comma-separated key-value pairs passed to kube-proxy feature gate flag
+ },
+ "Network" : { // Contains values for IP ranges in CIDR notation for Kubernetes networking
+ "ServiceCidr" : "10.96.0.0/12", // Service IP subnet used by Services in CIDR notation
+ "ClusterCidr" : "10.244.0.0/16" // Cluster IP subnet used by Pods in CIDR notation
+ }
+ },
+ "Install" : { // Contains values and configurations for Windows node installation
+ "Destination" : "C:\\ProgramData\\Kubernetes" // Absolute DOS path where Kubernetes will be installed on the Windows node
+ }
+}
+ ```
- 만약 다음과 같은 에러 메시지를 보게되면, 도커 서비스를 수동으로 시작해야 한다.
+{{< note >}}
+사용자는 쿠버네티스 컨트롤 플레인("마스터") 노드에서 `kubeadm token create --print-join-command`를 실행해서 `ControlPlane.KubeadmToken`과 `ControlPlane.KubeadmCAHash` 필드를 위한 값을 생성할 수 있다.
+{{< /note >}}
- ```
- Client:
- Version: 17.06.2-ee-11
- API version: 1.30
- Go version: go1.8.7
- Git commit: 06fc007
- Built: Thu May 17 06:14:39 2018
- OS/Arch: windows / amd64
- error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.30/version: open //./pipe/docker_engine: The system c
- annot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to
- connect. This error may also indicate that the docker daemon is not running.
- ```
+1. 컨테이너와 쿠버네티스를 설치 (시스템 재시작 필요)
- 다음과 같이 도커 서비스를 수동으로 시작할 수 있다.
+기존에 내려받은[KubeCluster.ps1](https://github.com/kubernetes-sigs/sig-windows-tools/blob/master/kubeadm/v1.15.0/KubeCluster.ps1) 스크립트를 사용해서 쿠버네티스를 윈도우 서버 컨테이너 호스트에 설치한다.
- ```PowerShell
- Start-Service docker
- ```
+ ```PowerShell
+ .\KubeCluster.ps1 -ConfigFile .\Kubeclustervxlan.json -install
+ ```
+ 이 때 `-ConfigFile`는 쿠버네티스 구성 파일의 경로를 가리킨다.
{{< note >}}
-`pause`(인프라스트럭처) 이미지는 Microsoft 컨테이너 레지스트리(MCR)에 등록되어 있다. `docker pull mcr.microsoft.com/k8s/core/pause:1.2.0`로 접근할 수 있다. `DOCKERFILE`은 https://github.com/kubernetes-sigs/sig-windows-tools/tree/master/cmd/wincat 에 있다.
+아래 예제에서, 우리는 오버레이 네트워킹 모드를 사용한다. 이는 [KB4489899](https://support.microsoft.com/help/4489899)를 포함한 윈도우 서버 버전 2019와 최소 쿠버네티스 v1.14 이상이 필요하다. 이 요구사항을 만족시키기 어려운 사용자는 구성 파일의 [플러그인](https://github.com/kubernetes-sigs/sig-windows-tools/blob/master/kubeadm/v1.15.0/Kubeclusterbridge.json#L18)으로 `bridge`를 선택하지 말고 `L2bridge` 네트워킹을 사용해야만 한다.
{{< /note >}}
-1. 쿠버네티스를 위한 윈도우 디렉터리 준비하기
+ ![alt_text](../kubecluster.ps1-install.gif "KubeCluster.ps1 install output")
- 쿠버네티스 바이너리와 배포 스크립트와 구성 파일을 저장할 "윈도우를 위한 쿠버네티스" 디렉터리를 생성한다.
- ```PowerShell
- mkdir c:\k
- ```
+대상으로 하는 윈도우 노드에서, 본 단계는
-1. 쿠버네티스 인증서 복사하기
+1. 윈도우 서버 컨테이너 역할을 활성화(및 재시작) 한다.
+1. 선택된 컨테이너 런타임을 내려받아 설치한다.
+1. 필요한 컨테이너 이미지를 모두 내려받는다.
+1. 쿠버네티스 바이너리를 내려받아서 `$PATH` 환경 변수에 추가한다.
+1. 쿠버네티스 구성 파일에서 선택한 내용을 기반으로 CNI 플러그인을 내려받는다.
+1. (선택적으로) 참여(join) 중에 컨트롤 플레인("마스터") 노드에 접속하기 위한 새로운 SSH 키를 생성한다.
- 쿠버네티스 인증서 파일인 `$HOME/.kube/config`을 [리눅스 컨트롤러](https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/creating-a-linux-master#collect-cluster-information)에서 윈도우 노드의 새로운 `C:\k` 디렉터리로 복사한다.
+ {{< note >}}또한, SSH 키 생성 단계에서 생성된 공개 SSH 키를 (리눅스) 컨트롤 플레인 노드의 `authorized_keys` 파일에 추가해야 한다. 이는 한 번만 수행하면 된다. 스크립트가 출력물의 마지막 부분에 이를 따라 할 수 있도록 단계를 출력해 준다.{{< /note >}}
- 팁: 노드 간에 구성 파일 전송을 위해 [xcopy](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/xcopy), [WinSCP](https://winscp.net/eng/download.php)나 [WinSCP 파워쉘 래퍼](https://www.powershellgallery.com/packages/WinSCP/5.13.2.0)같은 도구를 이용할 수 있다.
+일단 설치가 완료되면, 생성된 모든 구성 파일이나 바이너리는 윈도우 노드가 참여하기 전에 수정될 수 있다.
-1. 쿠버네티스 바이너리 다운로드 하기
+#### 윈도우 노드를 쿠버네티스 클러스터에 참여시키기
- 쿠버네티스르 운영을 가능하게 하기 위해 먼저 `kubelet`과 `kube-proxy` 바이너리를 다운로드해야 한다. 이 바이너리를 [최신 릴리스](https://github.com/kubernetes/kubernetes/releases/)의 CHANGELOG.md 파일에 노드 바이너리 링크에서 다운로드 한다. 예를 들어 'kubernetes-node-windows-amd64.tar.gz'. 또한 클라이언트 바이너리 항목에서 찾을 수 있는 윈도우에서 실행되는 `kubectl`을 선택적으로 다운로드 받을 수 있다.
+이 섹션에서는 클러스터를 구성하기 위해서 [쿠버네티스가 설치된 윈도우 노드](#윈도우-노드-준비하기)를 기존의 (리눅스) 컨트롤 플레인에 참여시키는 방법을 다룬다.
- 압축 파일을 풀고, `C:\k`로 바이너리를 위치하기 위해 [Expand-Archive](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/expand-archive?view=powershell-6) 파워쉘 커맨드를 이용할 수 있다.
+앞서 내려받은 [KubeCluster.ps1](https://github.com/kubernetes-sigs/sig-windows-tools/blob/master/kubeadm/v1.15.0/KubeCluster.ps1) 스크립트를 사용해서 윈도우 노드를 클러스터에 참여시킨다.
-#### 윈도우 노드를 플라넬 클러스터에 가입하기
+ ```PowerShell
+ .\KubeCluster.ps1 -ConfigFile .\Kubeclustervxlan.json -join
+ ```
+ 이 때 `-ConfigFile` 쿠버네티스 구성 파일의 경로를 가리킨다.
-플라넬 오버레이 배포 스크립트와 문서는 [이 리포지터리](https://github.com/Microsoft/SDN/tree/master/Kubernetes/flannel/overlay)에 있다. 다음 단계는 그곳에 있는 자세한 요령을 따라서 단순히 진행하는 것이다.
-
-[Flannel start.ps1](https://github.com/Microsoft/SDN/blob/master/Kubernetes/flannel/start.ps1) 스크립트를 다운로드받고, 그 내용을 `C:\k`에 풀어 넣자.
-
-```PowerShell
-cd c:\k
-[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
-wget https://raw.githubusercontent.com/Microsoft/SDN/master/Kubernetes/flannel/start.ps1 -o c:\k\start.ps1
-```
+![alt_text](../kubecluster.ps1-join.gif "KubeCluster.ps1 join output")
{{< note >}}
-[start.ps1](https://github.com/Microsoft/SDN/blob/master/Kubernetes/flannel/start.ps1)은 [install.ps1](https://github.com/Microsoft/SDN/blob/master/Kubernetes/windows/install.ps1)을 참고하는데, 이는 사용자를 위해 `flanneld` 실행 **파일 같은** 추가 파일과 [인프라스트럭처 파드를 위한 Dockerfile](https://github.com/Microsoft/SDN/blob/master/Kubernetes/windows/Dockerfile)을 다운로드하고 설치한다. 오버레이 네트워킹 방식에서 [방화벽](https://github.com/Microsoft/SDN/blob/master/Kubernetes/windows/helper.psm1#L111)은 지역 UDP 4789 포트에 대해 열려있다. 여러 파워쉘 윈도우가 열렸다 닫히며, 포드 네트워크를 위한 새로운 외부 vSwitch가 처음 생성되는 동안 몇 초간은 네트워크가 중단된다. 아래 지정한 인수를 사용하여 스크립트를 실행하자.
+어떤 이유에서든 부트스트랩 동안이나 참여 과정에서 스크립트가 실패하면, 뒤따르는 참여 시도를 시작하기 전에 신규 PowerShell 세션을 시작해야한다.
{{< /note >}}
-```PowerShell
-cd c:\k
-.\start.ps1 -ManagementIP `
- -NetworkMode overlay `
- -ClusterCIDR `
- -ServiceCIDR `
- -KubeDnsServiceIP `
- -LogDir
-```
+본 단계는 다음의 행위를 수행한다.
-| 파라미터 | 기본값 | 비고 |
-| --- | --- | --- |
-| -ManagementIP | N/A (필요함) | 윈도우 노드에 할당할 IP 주소. 이 값을 찾기 위해 `ipconfig` 이용할 수 있다. |
-| -NetworkMode | l2bridge | 여기서는 `overlay`를 사용한다. |
-| -ClusterCIDR | 10.244.0.0/16 | 클러스터 IP 설계을 참고한다. |
-| -ServiceCIDR | 10.96.0.0/12 | 클러스터 IP 설계을 참고한다. |
-| -KubeDnsServiceIP | 10.96.0.10 | |
-| -InterfaceName | Ethernet | 윈도우 호스트의 네트워크 인터페이스 이름. 이 값을 찾기 위해 ipconfig
이용할 수 있다. |
-| -LogDir | C:\k | Kubelet과 Kube-proxy가 각각의 로그 출력 파일을 리다이렉션하는 디렉터리이다. |
+1. 컨트롤 플레인("마스터") 노드에 SSH로 접속해서 [Kubeconfig 파일](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)을 얻어온다.
+1. kubelet을 윈도우 서비스로 등록한다.
+1. CNI 네트워크 플러그인을 구성한다.
+1. 선택된 네트워크 인터페이스 상에서 HNS 네트워크를 생성한다.
+ {{< note >}}
+ 이는 vSwitch가 생성되는 동안 몇 초간의 네트워크 순단현상을 야기할 수 있다.
+ {{< /note >}}
+1. (vxlan 플러그인을 선택한 경우) 오버레이 트래픽을 위해서 인바운드(inbound) 방화벽의 UDP 포트 4789를 열어준다.
+1. flanneld를 윈도우 서비스로 등록한다.
+1. kube-proxy를 윈도우 서비스로 등록한다.
-이제 다음을 실행하여 사용자 클러스터 내에 윈도우 노드를 볼 수 있다.
+이제 클러스터에서 다음의 명령을 실행해서 윈도우 노드를 볼 수 있다.
```bash
kubectl get nodes
```
-{{< note >}}
-Kubelet, kueb-proxy 같은 윈도우 노드 구성요소를 윈도우 서비스로 구성할 수 있다. 추가적인 방법은 [문제 해결](#troubleshooting)의 서비스와 백그라운드 프로세스 단원을 보자. 노드의 구성요소를 서비스로 실행하면 로그 수집하는 것이 문제 해결에 있어 중요한 부분이 된다. 추가 지침으로 기여 가이드에서 [로그 수집하기](https://github.com/kubernetes/community/blob/master/sig-windows/CONTRIBUTING.md#gathering-logs) 단원을 보자.
-{{< /note >}}
+#### 윈도우 노드를 쿠버네티스 클러스터에서 제거하기
+이 섹션에서는 윈도우 노드를 쿠버네티스 클러스터에서 제거하는 방법을 다룬다.
+
+앞서 내려받은 [KubeCluster.ps1](https://github.com/kubernetes-sigs/sig-windows-tools/blob/master/kubeadm/v1.15.0/KubeCluster.ps1) 스크립트를 사용해서 클러스터에서 윈도우 노드를 제거한다.
+
+ ```PowerShell
+ .\KubeCluster.ps1 -ConfigFile .\Kubeclustervxlan.json -reset
+ ```
+ 이 때 `-ConfigFile` 쿠버네티스 구성 파일의 경로를 가리킨다.
+
+![alt_text](../kubecluster.ps1-reset.gif "KubeCluster.ps1 reset output")
-### 공개 클라우드 제공자
+본 단계는 다음의 행위를 대상이되는 윈도우 노드에서 수행한다.
+
+1. 윈도우 노드를 쿠버네티스 클러스터에서 삭제한다.
+1. 구동 중인 모든 컨테이너를 중지시킨다.
+1. 모든 컨테이너 네트워킹(HNS) 자원을 삭제한다.
+1. 등록된 모든 쿠버네티스 서비스(flanneld, kubelet, kube-proxy)를 해지한다.
+1. 쿠버네티스 바이너리(kube-proxy.exe, kubelet.exe, flanneld.exe, kubeadm.exe)를 모두 삭제한다.
+1. CNI 네트워크 플러그인 바이너리를 모두 삭제한다.
+1. 쿠버네티스 클러스터에 접근하기 위한 [Kubeconfig 파일](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)을 삭제한다.
+
+
+### 퍼블릭 클라우드 제공자
#### Azure
@@ -304,10 +349,12 @@ AKS-Engine은 완전하고, 맞춤 설정이 가능한 쿠버네티스 클러스
#### kubeadm과 클러스터 API로 배포하기
-Kubeadm은 쿠버네티스 클러스터를 배포하는 사용자에게 산업 표준이 되었다. Kubeadm에서 윈도우 노드 지원은 미래 릴리스에 나올 것이다. 또한 윈도우 노드가 올바르게 프로비저닝되도록 클러스터 API에 투자하고 있다.
+Kubeadm은 쿠버네티스 클러스터를 배포하는 사용자에게 산업 표준이 되었다. Kubeadm에서 윈도우 노드 지원은 쿠버네티스 v1.16 이후 부터 알파 기능이다. 또한 윈도우 노드가 올바르게 프로비저닝되도록 클러스터 API에 투자하고 있다. 보다 자세한 내용은, [Windows KEP를 위한 kubeadm](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cluster-lifecycle/kubeadm/20190424-kubeadm-for-windows.md)을 통해 상담하도록 하자.
+
### 다음 단계
이제 클러스터 내에 윈도우 컨테이너를 실행하도록 윈도우 워커를 구성했으니, 리눅스 컨테이너를 실행할 리눅스 노드를 1개 이상 추가할 수 있다. 이제 윈도우 컨테이너를 클러스터에 스케줄링할 준비가 됬다.
{{% /capture %}}
+
diff --git a/content/ko/docs/tasks/access-application-cluster/web-ui-dashboard.md b/content/ko/docs/tasks/access-application-cluster/web-ui-dashboard.md
index 97eb33b87b2c9..1733b756018c6 100644
--- a/content/ko/docs/tasks/access-application-cluster/web-ui-dashboard.md
+++ b/content/ko/docs/tasks/access-application-cluster/web-ui-dashboard.md
@@ -9,6 +9,7 @@ card:
---
{{% capture overview %}}
+
대시보드는 웹 기반 쿠버네티스 유저 인터페이스이다. 대시보드를 통해 컨테이너화 된 애플리케이션을 쿠버네티스 클러스터에 배포할 수 있고, 컨테이너화 된 애플리케이션을 트러블슈팅 할 수 있으며, 클러스터 리소스들을 관리할 수 있다. 대시보드를 통해 클러스터에서 동작중인 애플리케이션의 정보를 볼 수 있고, 개별적인 쿠버네티스 리소스들을(예를 들면 디플로이먼트, 잡, 데몬셋 등) 생성하거나 수정할 수 있다. 예를 들면, 디플로이먼트를 스케일하거나, 롤링 업데이트를 초기화하거나, 파드를 재시작하거나 또는 배포 마법사를 이용해 새로운 애플리케이션을 배포할 수 있다.
또한 대시보드는 클러스터 내 쿠버네티스 리소스들의 상태와 발생하는 모든 에러 정보를 제공한다.
@@ -25,7 +26,7 @@ card:
대시보드 UI는 기본으로 배포되지 않는다. 배포하려면 다음 커맨드를 동작한다.
```
-kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml
+kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
```
## 대시보드 UI 접근
@@ -160,6 +161,7 @@ track=stable
{{% capture whatsnext %}}
-더 많은 정보는 [쿠버네티스 대시보드 프로젝트 페이지](https://github.com/kubernetes/dashboard)를 참고한다.
+더 많은 정보는
+[쿠버네티스 대시보드 프로젝트 페이지](https://github.com/kubernetes/dashboard)를 참고한다.
{{% /capture %}}