@@ -25,7 +25,7 @@ weight: 75
25
25
* 쿠버네티스에서 서비스와 워크로드를 생성하고 배포하는 것은 리눅스나 윈도우 컨테이너
26
26
모두 비슷한 방식이라는 것이 중요하다.
27
27
[ Kubectl 커맨드] ( /ko/docs/reference/kubectl/overview/ ) 로 클러스터에 접속하는 것은 동일하다.
28
- 아래 단원의 예시는 윈도우 컨테이너를 경험하기 위해 제공한다 .
28
+ 아래 단원의 예시를 통해 윈도우 컨테이너와 좀 더 빨리 친숙해질 수 있다 .
29
29
30
30
## 시작하기: 윈도우 컨테이너 배포하기
31
31
@@ -99,17 +99,17 @@ spec:
99
99
100
100
1. 이 디플로이먼트가 성공적인지 확인한다. 다음을 검토하자.
101
101
102
- * 윈도우 노드에 파드당 두 컨테이너 , `docker ps`를 사용한다.
103
- * 리눅스 마스터에서 나열된 두 파드 , `kubectl get pods`를 사용한다.
104
- * 네트워크를 통한 노드에서 파드 간에 통신 , 리눅스 마스터에서 `curl`을
102
+ * 윈도우 노드에 파드당 두 컨테이너가 존재하는지 확인하려면 , `docker ps`를 사용한다.
103
+ * 리눅스 마스터에서 나열된 두 파드가 존재하는지 확인하려면 , `kubectl get pods`를 사용한다.
104
+ * 네트워크를 통한 노드에서 파드로의 통신이 되는지 확인하려면 , 리눅스 마스터에서 `curl`을
105
105
파드 IP 주소의 80 포트로 실행하여 웹 서버 응답을 확인한다.
106
- * 파드와 파드 간에 통신 , `docker exec` 나 `kubectl exec`를 이용해 파드 간에
107
- 핑(ping)한다(윈도우 노드를 여럿 가지고 있다면 호스트를 달리하며 ).
108
- * 서비스와 파드 간에 통신 , 리눅스 마스터와 독립 파드에서 `curl`을 가상 서비스
109
- IP 주소(`kubectl get services`로 보여지는 )로 실행한다.
110
- * 서비스 검색(discovery), 쿠버네티스 [기본 DNS 접미사](/ko/docs/concepts/services-networking/dns-pod-service/#서비스)와 서비스 이름으로 `curl`을 실행한다.
111
- * 인바운드 연결 , 클러스터 외부 장비나 리눅스 마스터에서 NodePort로 `curl`을 실행한다.
112
- * 아웃바운드 연결 , `kubectl exec`를 이용해서 파드에서 외부 IP 주소로 `curl`을 실행한다.
106
+ * 파드 간 통신이 되는지 확인하려면 , `docker exec` 나 `kubectl exec`를 이용해 파드 간에
107
+ 핑(ping)한다(윈도우 노드가 2대 이상이라면, 서로 다른 노드에 있는 파드 간 통신도 확인할 수 있다 ).
108
+ * 서비스에서 파드로의 통신이 되는지 확인하려면 , 리눅스 마스터와 독립 파드에서 `curl`을 가상 서비스
109
+ IP 주소(`kubectl get services`로 볼 수 있는 )로 실행한다.
110
+ * 서비스 검색(discovery)이 되는지 확인하려면 , 쿠버네티스 [기본 DNS 접미사](/ko/docs/concepts/services-networking/dns-pod-service/#서비스)와 서비스 이름으로 `curl`을 실행한다.
111
+ * 인바운드 연결이 되는지 확인하려면 , 클러스터 외부 장비나 리눅스 마스터에서 NodePort로 `curl`을 실행한다.
112
+ * 아웃바운드 연결이 되는지 확인하려면 , `kubectl exec`를 이용해서 파드에서 외부 IP 주소로 `curl`을 실행한다.
113
113
114
114
{{< note >}}
115
115
윈도우 컨테이너 호스트는 현재 윈도우 네트워킹 스택의 플랫폼 제한으로 인해, 그 안에서 스케줄링하는 서비스의 IP 주소로 접근할 수 없다.
@@ -122,17 +122,17 @@ spec:
122
122
123
123
로그는 가시성의 중요한 요소이다. 로그는 사용자가 워크로드의 운영측면을
124
124
파악할 수 있도록 하며 문제 해결의 핵심 요소이다.
125
- 윈도우 컨테이너와 워크로드 내의 윈도우 컨테이너가 리눅스 컨테이너와는 다르게 동작하기 때문에,
126
- 사용자가 로그를 수집하는 데 어려움을 겪었기에 운영 가시성이 제한되었다 .
125
+ 윈도우 컨테이너, 그리고 윈도우 컨테이너 내의 워크로드는 리눅스 컨테이너와는 다르게 동작하기 때문에,
126
+ 사용자가 로그를 수집하기 어려웠고 이로 인해 운영 가시성이 제한되어 왔다 .
127
127
예를 들어 윈도우 워크로드는 일반적으로 ETW(Event Tracing for Windows)에 로그인하거나
128
128
애플리케이션 이벤트 로그에 항목을 푸시하도록 구성한다.
129
129
Microsoft의 오픈 소스 도구인 [LogMonitor](https://github.com/microsoft/windows-container-tools/tree/master/LogMonitor)는
130
130
윈도우 컨테이너 안에 구성된 로그 소스를 모니터링하는 권장하는 방법이다.
131
131
LogMonitor는 이벤트 로그, ETW 공급자 그리고 사용자 정의 애플리케이션 로그 모니터링을 지원하고
132
132
` kubectl logs <pod>` 에 의한 사용을 위해 STDOUT으로 파이프한다.
133
133
134
- LogMonitor Github 페이지의 지침에 따라 모든 컨테이너 바이너리와 설정 파일을 복사하고,
135
- LogMonitor에 필요한 입력 지점을 추가해서 로그를 STDOUT으로 푸시한다 .
134
+ LogMonitor GitHub 페이지의 지침에 따라 모든 컨테이너 바이너리와 설정 파일을 복사하고,
135
+ LogMonitor가 로그를 STDOUT으로 푸시할 수 있도록 필요한 엔트리포인트를 추가한다 .
136
136
137
137
# # 설정 가능한 컨테이너 username 사용하기
138
138
@@ -151,14 +151,14 @@ GMSA로 구성한 컨테이너는 GMSA로 구성된 신원을 들고 있는 동
151
151
152
152
# # 테인트(Taint)와 톨러레이션(Toleration)
153
153
154
- 오늘날 사용자는 리눅스와 윈도우 워크로드를 특정 OS 노드별로 보존하기 위해 테인트와
155
- 노드 셀렉터 (nodeSelector)의 조합을 이용해야 한다.
154
+ 오늘날 사용자는 리눅스와 윈도우 워크로드를 (동일한 OS를 실행하는) 적절한 노드에 할당되도록 하기 위해 테인트와
155
+ 노드셀렉터 (nodeSelector)의 조합을 이용해야 한다.
156
156
이것은 윈도우 사용자에게만 부담을 줄 것으로 보인다. 아래는 권장되는 방식의 개요인데,
157
157
이것의 주요 목표 중에 하나는 이 방식이 기존 리눅스 워크로드와 호환되어야 한다는 것이다.
158
158
159
159
# ## 특정 OS 워크로드를 적절한 컨테이너 호스트에서 처리하도록 보장하기
160
160
161
- 사용자는 윈도우 컨테이너가 테인트와 톨러레이션을 이용해서 적절한 호스트에서 스케줄링되기를 보장할 수 있다.
161
+ 사용자는 테인트와 톨러레이션을 이용하여 윈도우 컨테이너가 적절한 호스트에서 스케줄링되기를 보장할 수 있다.
162
162
오늘날 모든 쿠버네티스 노드는 다음 기본 레이블을 가지고 있다.
163
163
164
164
* kubernetes.io/os = [windows|linux]
@@ -194,14 +194,14 @@ tolerations:
194
194
195
195
# ## 동일 클러스터에서 여러 윈도우 버전을 조작하는 방법
196
196
197
- 파드에서 사용하는 윈도우 서버 버전은 노드 버전과 일치해야 한다. 만약 동일한 클러스터에서 여러 윈도우
198
- 서버 버전을 사용하려면, 추가로 노드 레이블과 nodeSelectors를 설정해야만 한다.
197
+ 파드에서 사용하는 윈도우 서버 버전은 노드의 윈도우 서버 버전과 일치해야 한다. 만약 동일한 클러스터에서 여러 윈도우
198
+ 서버 버전을 사용하려면, 추가로 노드 레이블과 nodeSelectors를 설정해야 한다.
199
199
200
- 쿠버네티스 1.17은 이것을 단순화하기 위해 새로운 레이블인 `node.kubernetes.io/windows-build` 를 자동으로 추가 한다 .
200
+ 쿠버네티스 1.17은 이것을 단순화하기 위해 새로운 레이블인 `node.kubernetes.io/windows-build` 를 자동으로 추가한다 .
201
201
만약 이전 버전을 실행 중인 경우, 이 레이블을 윈도우 노드에 수동으로 추가하는 것을 권장한다.
202
202
203
- 이 레이블은 호환성을 일치해야 하는 윈도우 메이저, 마이너 및 빌드 번호를 나타낸다.
204
- 여기에 현재 사용하는 각 윈도우 서버 버전이 있다 .
203
+ 이 레이블은 호환성을 위해 일치시켜야 하는 윈도우 메이저, 마이너 및 빌드 번호를 나타낸다.
204
+ 각 윈도우 서버 버전에 대해 현재 사용하고 있는 빌드 번호는 다음과 같다 .
205
205
206
206
| 제품 이름 | 빌드 번호 |
207
207
|--------------------------------------|------------------------|
@@ -212,12 +212,12 @@ tolerations:
212
212
213
213
# ## RuntimeClass로 단순화
214
214
215
- [RuntimeClass] 를 사용해서 테인트(taint)와 톨러레이션(toleration)을 사용하는 프로세스를 간소화 할 수 있다.
216
- 클러스터 관리자는 이 테인트와 톨러레이션을 캡슐화하는데 사용되는 `RuntimeClass` 오브젝트를 생성할 수 있다.
215
+ [런타임클래스( RuntimeClass)](/ko/docs/concepts/containers/runtime-class/) 를 사용해서 테인트(taint)와 톨러레이션(toleration)을 사용하는 프로세스를 간소화 할 수 있다.
216
+ 클러스터 관리자는 이 테인트와 톨러레이션을 캡슐화하는 데 사용되는 `RuntimeClass` 오브젝트를 생성할 수 있다.
217
217
218
218
219
219
1. 이 파일을 `runtimeClasses.yml` 로 저장한다. 여기에는 윈도우 OS,
220
- 아키텍처 및 버전에 적합한 `nodeSelector` 가 포함되었다 .
220
+ 아키텍처 및 버전에 적합한 `nodeSelector` 가 포함되어 있다 .
221
221
222
222
` ` ` yaml
223
223
apiVersion: node.k8s.io/v1
0 commit comments