[ko] Update outdated files in dev-1.27-ko.1 (M160-M176)

Signed-off-by: Jongwoo Han <jongwooo.han@gmail.com>
Co-authored-by: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com>
pull/43707/head
Jongwoo Han 2023-10-27 11:15:39 +09:00
parent c700274b64
commit 5c6f0780c4
No known key found for this signature in database
GPG Key ID: C8D474A3C9EB215C
17 changed files with 204 additions and 144 deletions

View File

@ -1,5 +1,5 @@
--- ---
title: "파드와 컨테이너 설정" title: "파드와 컨테이너 설정"
description: 파드와 컨테이너에 대한 공통 구성 태스크들을 수행한다. description: 파드와 컨테이너에 대한 공통 구성 태스크들을 수행한다.
weight: 20 weight: 30
--- ---

View File

@ -275,4 +275,4 @@ kubectl delete namespace cpu-example
- [API 오브젝트 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/) - [API 오브젝트 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/)
- [컨테이너에 할당된 CPU 및 메모리 리소스 크기 조정](/docs/tasks/configure-pod-container/resize-container-resources/)

View File

@ -357,3 +357,5 @@ kubectl delete namespace mem-example
* [네임스페이스에 파드 할당량 구성](/ko/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/) * [네임스페이스에 파드 할당량 구성](/ko/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/)
* [API 오브젝트에 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/) * [API 오브젝트에 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/)
* [컨테이너에 할당된 CPU 및 메모리 리소스 크기 조정](/docs/tasks/configure-pod-container/resize-container-resources/)

View File

@ -2,7 +2,7 @@
title: 노드 어피니티를 사용해 노드에 파드 할당 title: 노드 어피니티를 사용해 노드에 파드 할당
min-kubernetes-server-version: v1.10 min-kubernetes-server-version: v1.10
content_type: task content_type: task
weight: 120 weight: 160
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,7 @@
--- ---
title: 노드에 파드 할당 title: 노드에 파드 할당
content_type: task content_type: task
weight: 120 weight: 150
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,7 @@
--- ---
title: 윈도우 파드와 컨테이너용 GMSA 구성 title: 윈도우 파드와 컨테이너용 GMSA 구성
content_type: task content_type: task
weight: 20 weight: 30
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,7 @@
--- ---
title: 스토리지로 퍼시스턴트볼륨(PersistentVolume)을 사용하도록 파드 설정하기 title: 스토리지로 퍼시스턴트볼륨(PersistentVolume)을 사용하도록 파드 설정하기
content_type: task content_type: task
weight: 60 weight: 90
--- ---
<!-- overview --> <!-- overview -->
@ -12,27 +12,24 @@ weight: 60
과정의 요약은 다음과 같다. 과정의 요약은 다음과 같다.
1. 클러스터 관리자로서, 물리적 스토리지와 연결되는 퍼시스턴트볼륨을 1. 클러스터 관리자로서, 물리적 스토리지와 연결되는 퍼시스턴트볼륨을
생성한다. 볼륨을 특정 파드와 연결하지 않는다. 생성한다. 볼륨을 특정 파드와 연결하지 않는다.
1. 그 다음 개발자 / 클러스터 사용자의 역할로서, 적합한 1. 그 다음 개발자 / 클러스터 사용자의 역할로서, 적합한
퍼시스턴트볼륨에 자동으로 바인딩되는 퍼시스턴트볼륨클레임을 퍼시스턴트볼륨에 자동으로 바인딩되는 퍼시스턴트볼륨클레임을
생성한다. 생성한다.
1. 스토리지에 대해 위의 퍼시스턴트볼륨클레임을 사용하는 파드를 생성한다. 1. 스토리지에 대해 위의 퍼시스턴트볼륨클레임을 사용하는 파드를 생성한다.
## {{% heading "prerequisites" %}} ## {{% heading "prerequisites" %}}
* 사용자는 노드가 단 하나만 있는 쿠버네티스 클러스터가 필요하고, * 사용자는 노드가 단 하나만 있는 쿠버네티스 클러스터가 필요하고,
{{< glossary_tooltip text="kubectl" term_id="kubectl" >}} {{< glossary_tooltip text="kubectl" term_id="kubectl" >}}
커맨드라인 툴이 사용자의 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 만약 사용자가 커맨드라인 툴이 사용자의 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 만약 사용자가
아직 단일 노드 클러스터를 가지고 있지 않다면, [Minikube](/ko/docs/tasks/tools/#minikube)를 아직 단일 노드 클러스터를 가지고 있지 않다면, [Minikube](/ko/docs/tasks/tools/#minikube)를
사용하여 클러스터 하나를 생성할 수 있다. 사용하여 클러스터 하나를 생성할 수 있다.
* [퍼시스턴트 볼륨](https://minikube.sigs.k8s.io/docs/)의 * [퍼시스턴트 볼륨](https://minikube.sigs.k8s.io/docs/)의
관련 자료에 익숙해지도록 한다. 관련 자료에 익숙해지도록 한다.
<!-- steps --> <!-- steps -->
@ -50,7 +47,6 @@ weight: 60
sudo mkdir /mnt/data sudo mkdir /mnt/data
``` ```
`/mnt/data` 디렉터리에서 `index.html` 파일을 생성한다. `/mnt/data` 디렉터리에서 `index.html` 파일을 생성한다.
```shell ```shell
@ -71,6 +67,7 @@ cat /mnt/data/index.html
``` ```
결과는 다음과 같다. 결과는 다음과 같다.
``` ```
Hello from Kubernetes storage Hello from Kubernetes storage
``` ```
@ -116,8 +113,10 @@ kubectl get pv task-pv-volume
결과는 퍼시스턴트볼륨의 `STATUS``Available` 임을 보여준다. 이는 결과는 퍼시스턴트볼륨의 `STATUS``Available` 임을 보여준다. 이는
아직 퍼시스턴트볼륨클레임이 바인딩되지 않았다는 것을 의미한다. 아직 퍼시스턴트볼륨클레임이 바인딩되지 않았다는 것을 의미한다.
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE ```
task-pv-volume 10Gi RWO Retain Available manual 4s NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
task-pv-volume 10Gi RWO Retain Available manual 4s
```
## 퍼시스턴트볼륨클레임 생성하기 ## 퍼시스턴트볼륨클레임 생성하기
@ -132,7 +131,9 @@ kubectl get pv task-pv-volume
퍼시스턴트볼륨클레임을 생성한다. 퍼시스턴트볼륨클레임을 생성한다.
kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml ```shell
kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml
```
사용자가 퍼시스턴트볼륨클레임을 생성한 후에, 쿠버네티스 컨트롤 플레인은 사용자가 퍼시스턴트볼륨클레임을 생성한 후에, 쿠버네티스 컨트롤 플레인은
클레임의 요구사항을 만족하는 퍼시스턴트볼륨을 찾는다. 컨트롤 플레인이 클레임의 요구사항을 만족하는 퍼시스턴트볼륨을 찾는다. 컨트롤 플레인이
@ -147,8 +148,10 @@ kubectl get pv task-pv-volume
이제 결과는 `STATUS``Bound` 임을 보여준다. 이제 결과는 `STATUS``Bound` 임을 보여준다.
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE ```
task-pv-volume 10Gi RWO Retain Bound default/task-pv-claim manual 2m NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
task-pv-volume 10Gi RWO Retain Bound default/task-pv-claim manual 2m
```
퍼시스턴트볼륨클레임을 확인한다. 퍼시스턴트볼륨클레임을 확인한다.
@ -159,8 +162,10 @@ kubectl get pvc task-pv-claim
결과는 퍼시스턴트볼륨클레임이 사용자의 퍼시스턴트볼륨인 `task-pv-volume` 결과는 퍼시스턴트볼륨클레임이 사용자의 퍼시스턴트볼륨인 `task-pv-volume`
바인딩되어 있음을 보여준다. 바인딩되어 있음을 보여준다.
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE ```
task-pv-claim Bound task-pv-volume 10Gi RWO manual 30s NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
task-pv-claim Bound task-pv-volume 10Gi RWO manual 30s
```
## 파드 생성하기 ## 파드 생성하기
@ -206,8 +211,9 @@ curl http://localhost/
결과는 hostPath 볼륨에 있는 `index.html` 파일에 사용자가 작성한 텍스트를 결과는 hostPath 볼륨에 있는 `index.html` 파일에 사용자가 작성한 텍스트를
보여준다. 보여준다.
Hello from Kubernetes storage ```
Hello from Kubernetes storage
```
만약 사용자가 위와 같은 메시지를 확인하면, 파드가 퍼시스턴트볼륨클레임의 스토리지를 만약 사용자가 위와 같은 메시지를 확인하면, 파드가 퍼시스턴트볼륨클레임의 스토리지를
사용하도록 성공적으로 설정한 것이다. 사용하도록 성공적으로 설정한 것이다.
@ -242,8 +248,8 @@ sudo rmdir /mnt/data
하나의 퍼시스턴트볼륨을 nginx 컨테이너의 두 경로에 마운트할 수 있다. 하나의 퍼시스턴트볼륨을 nginx 컨테이너의 두 경로에 마운트할 수 있다.
`/usr/share/nginx/html` - 정적 웹사이트 용 - `/usr/share/nginx/html` - 정적 웹사이트 용
`/etc/nginx/nginx.conf` - 기본 환경 설정 용 - `/etc/nginx/nginx.conf` - 기본 환경 설정 용
<!-- discussion --> <!-- discussion -->
@ -256,6 +262,7 @@ sudo rmdir /mnt/data
사용하는 모든 파드에 대하여 GID가 자동으로 추가된다. 사용하는 모든 파드에 대하여 GID가 자동으로 추가된다.
다음과 같이 `pv.beta.kubernetes.io/gid` 어노테이션을 사용한다. 다음과 같이 `pv.beta.kubernetes.io/gid` 어노테이션을 사용한다.
```yaml ```yaml
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
@ -264,6 +271,7 @@ metadata:
annotations: annotations:
pv.beta.kubernetes.io/gid: "1234" pv.beta.kubernetes.io/gid: "1234"
``` ```
파드가 GID 어노테이션이 있는 퍼시스턴트볼륨을 사용하면, 어노테이션으로 파드가 GID 어노테이션이 있는 퍼시스턴트볼륨을 사용하면, 어노테이션으로
달린 GID가 파드의 보안 컨텍스트에 지정된 GID와 동일한 방식으로 달린 GID가 파드의 보안 컨텍스트에 지정된 GID와 동일한 방식으로
파드의 모든 컨테이너에 적용된다. 파드의 명세 혹은 퍼시스턴트볼륨의 파드의 모든 컨테이너에 적용된다. 파드의 명세 혹은 퍼시스턴트볼륨의
@ -275,18 +283,14 @@ metadata:
GID는 파드 리소스 자체에는 존재하지 않는다. GID는 파드 리소스 자체에는 존재하지 않는다.
{{< /note >}} {{< /note >}}
## {{% heading "whatsnext" %}} ## {{% heading "whatsnext" %}}
* [퍼시스턴트볼륨](/ko/docs/concepts/storage/persistent-volumes/)에 대해 더 보기. * [퍼시스턴트볼륨](/ko/docs/concepts/storage/persistent-volumes/)에 대해 더 보기.
* [퍼시스턴트 스토리지 디자인 문서](https://git.k8s.io/design-proposals-archive/storage/persistent-storage.md)에 대해 읽어보기. * [퍼시스턴트 스토리지 디자인 문서](https://git.k8s.io/design-proposals-archive/storage/persistent-storage.md)에 대해 읽어보기.
### Reference ### 레퍼런스
* [퍼시스턴트볼륨](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolume-v1-core) * [PersistentVolume](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolume-v1-core)
* [PersistentVolumeSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumespec-v1-core) * [PersistentVolumeSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumespec-v1-core)
* [퍼시스턴트볼륨클레임](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaim-v1-core) * [PersistentVolumeClaim](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaim-v1-core)
* [PersistentVolumeClaimSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaimspec-v1-core) * [PersistentVolumeClaimSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaimspec-v1-core)

View File

@ -1,22 +1,18 @@
--- ---
title: 초기화 컨테이너에 대한 구성 title: 초기화 컨테이너에 대한 구성
content_type: task content_type: task
weight: 130 weight: 170
--- ---
<!-- overview --> <!-- overview -->
이 페이지는 애플리케이션 실행 전에 파드를 초기화하기 위해 어떻게 초기화 컨테이너를 이 페이지는 애플리케이션 실행 전에 파드를 초기화하기 위해 어떻게 초기화 컨테이너를
구성해야 하는지 보여준다. 구성해야 하는지 보여준다.
## {{% heading "prerequisites" %}} ## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
<!-- steps --> <!-- steps -->
## 초기화 컨테이너를 갖는 파드 생성 ## 초기화 컨테이너를 갖는 파드 생성
@ -37,52 +33,63 @@ weight: 130
`/usr/share/nginx/html` 에 마운트한다. 초기화 컨테이너는 다음 명령을 실행 후 `/usr/share/nginx/html` 에 마운트한다. 초기화 컨테이너는 다음 명령을 실행 후
종료한다. 종료한다.
wget -O /work-dir/index.html http://info.cern.ch ```shell
wget -O /work-dir/index.html http://info.cern.ch
```
초기화 컨테이너는 nginx 서버의 루트 디렉터리 내 `index.html` 파일을 초기화 컨테이너는 nginx 서버의 루트 디렉터리 내 `index.html` 파일을
저장한다. 저장한다.
파드를 생성한다. 파드를 생성한다.
kubectl apply -f https://k8s.io/examples/pods/init-containers.yaml ```shell
kubectl apply -f https://k8s.io/examples/pods/init-containers.yaml
```
nginx 컨테이너가 실행 중인지 확인한다. nginx 컨테이너가 실행 중인지 확인한다.
kubectl get pod init-demo ```shell
kubectl get pod init-demo
```
출력 결과는 nginx 컨테이너가 실행 중임을 보여준다. 출력 결과는 nginx 컨테이너가 실행 중임을 보여준다.
NAME READY STATUS RESTARTS AGE ```shell
init-demo 1/1 Running 0 1m NAME READY STATUS RESTARTS AGE
init-demo 1/1 Running 0 1m
```
init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다. init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다.
kubectl exec -it init-demo -- /bin/bash ```shell
kubectl exec -it init-demo -- /bin/bash
```
셸에서 GET 요청을 nginx 서버로 전송한다. 셸에서 GET 요청을 nginx 서버로 전송한다.
root@nginx:~# apt-get update ```
root@nginx:~# apt-get install curl root@nginx:~# apt-get update
root@nginx:~# curl localhost root@nginx:~# apt-get install curl
root@nginx:~# curl localhost
```
출력 결과는 nginx가 초기화 컨테이너에 의해 저장된 웹 페이지를 제공하고 있음을 보여준다. 출력 결과는 nginx가 초기화 컨테이너에 의해 저장된 웹 페이지를 제공하고 있음을 보여준다.
<html><head></head><body><header> ```html
<title>http://info.cern.ch</title> <html><head></head><body><header>
</header> <title>http://info.cern.ch</title>
</header>
<h1>http://info.cern.ch - home of the first website</h1>
...
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
...
<h1>http://info.cern.ch - home of the first website</h1>
...
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
...
```
## {{% heading "whatsnext" %}} ## {{% heading "whatsnext" %}}
* [같은 파드 내 실행 중인 컨테이너들간 통신](/ko/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)에 * [같은 파드 내 실행 중인 컨테이너들간 통신](/ko/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)에
대해 배우기. 대해 배우기.
* [초기화 컨테이너](/ko/docs/concepts/workloads/pods/init-containers/)에 대해 배우기. * [초기화 컨테이너](/ko/docs/concepts/workloads/pods/init-containers/)에 대해 배우기.
* [볼륨](/ko/docs/concepts/storage/volumes/)에 대해 배우기. * [볼륨](/ko/docs/concepts/storage/volumes/)에 대해 배우기.
* [초기화 컨테이너 디버깅](/ko/docs/tasks/debug/debug-application/debug-init-containers/)에 대해 배우기. * [초기화 컨테이너 디버깅](/ko/docs/tasks/debug/debug-application/debug-init-containers/)에 대해 배우기.

View File

@ -4,7 +4,7 @@
##- pmorie ##- pmorie
title: 파드의 스토리지에 프로젝티드 볼륨(Projected Volume)을 사용하도록 구성 title: 파드의 스토리지에 프로젝티드 볼륨(Projected Volume)을 사용하도록 구성
content_type: task content_type: task
weight: 70 weight: 100
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,7 @@
--- ---
title: 윈도우 파드 및 컨테이너에서 RunAsUserName 구성 title: 윈도우 파드 및 컨테이너에서 RunAsUserName 구성
content_type: task content_type: task
weight: 20 weight: 40
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,7 @@
--- ---
title: 스토리지의 볼륨을 사용하는 파드 구성 title: 스토리지의 볼륨을 사용하는 파드 구성
content_type: task content_type: task
weight: 50 weight: 80
--- ---
<!-- overview --> <!-- overview -->
@ -45,7 +45,7 @@ weight: 50
출력은 이와 유사하다. 출력은 이와 유사하다.
```shell ```console
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
redis 1/1 Running 0 13s redis 1/1 Running 0 13s
``` ```
@ -73,7 +73,7 @@ weight: 50
출력은 이와 유사하다. 출력은 이와 유사하다.
```shell ```console
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
redis 1 0.1 0.1 33308 3828 ? Ssl 00:46 0:00 redis-server *:6379 redis 1 0.1 0.1 33308 3828 ? Ssl 00:46 0:00 redis-server *:6379
root 12 0.0 0.0 20228 3020 ? Ss 00:47 0:00 /bin/bash root 12 0.0 0.0 20228 3020 ? Ss 00:47 0:00 /bin/bash
@ -91,7 +91,7 @@ weight: 50
1. 원래 터미널에서, Redis 파드의 변경을 지켜본다. 결국, 1. 원래 터미널에서, Redis 파드의 변경을 지켜본다. 결국,
다음과 유사한 것을 보게 될 것이다. 다음과 유사한 것을 보게 될 것이다.
```shell ```console
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
redis 1/1 Running 0 13s redis 1/1 Running 0 13s
redis 0/1 Completed 0 6m redis 0/1 Completed 0 6m

View File

@ -1,7 +1,7 @@
--- ---
title: 컨테이너에 확장 리소스 지정 title: 컨테이너에 확장 리소스 지정
content_type: task content_type: task
weight: 40 weight: 70
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,7 +1,6 @@
--- ---
title: 프라이빗 레지스트리에서 이미지 받아오기 title: 프라이빗 레지스트리에서 이미지 받아오기
content_type: task weight: 130
weight: 100
--- ---
<!-- overview --> <!-- overview -->

View File

@ -1,36 +1,35 @@
--- ---
title: 파드에 대한 서비스 품질(QoS) 구성 title: 파드에 대한 서비스 품질(QoS) 구성
content_type: task content_type: task
weight: 30 weight: 60
--- ---
<!-- overview --> <!-- overview -->
이 페이지는 특정 서비스 품질(QoS) 클래스를 할당하기 위해 어떻게 파드 이 페이지는 특정 {{< glossary_tooltip text="서비스 품질(QoS) 클래스" term_id="qos-class" >}}
구성해야 하는지 보여준다. 쿠버네티스는 QoS 클래스를 사용하여 파드 할당하기 위해 어떻게 파드를 구성해야 하는지 보여준다.
스케줄링과 축출을 결정한다. 쿠버네티스는 QoS 클래스를 사용하여 노드 리소스가 초과될 때 파드 축출을 결정한다.
쿠버네티스가 파드를 생성할 때, 파드에 다음의 QoS 클래스 중 하나를 할당한다.
* [Guaranteed](/docs/concepts/workloads/pods/pod-qos/#guaranteed)
* [Burstable](/docs/concepts/workloads/pods/pod-qos/#burstable)
* [BestEffort](/docs/concepts/workloads/pods/pod-qos/#besteffort)
## {{% heading "prerequisites" %}} ## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} {{< include "task-tutorial-prereqs.md" >}}
또한 네임스페이스를 만들고 삭제할 수 있어야 한다.
<!-- steps --> <!-- steps -->
## QoS 클래스
쿠버네티스가 파드를 생성할 때, 파드에 다음의 QoS 클래스 중 하나를 할당한다.
* Guaranteed
* Burstable
* BestEffort
## 네임스페이스 생성 ## 네임스페이스 생성
@ -43,7 +42,7 @@ kubectl create namespace qos-example
## Guaranteed QoS 클래스가 할당되는 파드 생성 ## Guaranteed QoS 클래스가 할당되는 파드 생성
파드에 Guaranteed QoS 클래스 할당을 위한 전제 조건은 다음과 같다. 파드에 `Guaranteed` QoS 클래스 할당을 위한 전제 조건은 다음과 같다.
* 파드 내 모든 컨테이너는 메모리 상한과 메모리 요청량을 가지고 있어야 한다. * 파드 내 모든 컨테이너는 메모리 상한과 메모리 요청량을 가지고 있어야 한다.
* 파드 내 모든 컨테이너의 메모리 상한이 메모리 요청량과 일치해야 한다. * 파드 내 모든 컨테이너의 메모리 상한이 메모리 요청량과 일치해야 한다.
@ -51,8 +50,10 @@ kubectl create namespace qos-example
* 파드 내 모든 컨테이너의 CPU 상한이 CPU 요청량과 일치해야 한다. * 파드 내 모든 컨테이너의 CPU 상한이 CPU 요청량과 일치해야 한다.
이러한 제약은 초기화 컨테이너와 앱 컨테이너 모두에 동일하게 적용된다. 이러한 제약은 초기화 컨테이너와 앱 컨테이너 모두에 동일하게 적용된다.
[임시(Ephemeral) 컨테이너](/ko/docs/concepts/workloads/pods/ephemeral-containers/)는
리소스를 정의할 수 없으므로 이러한 제약을 따르지 않는다.
다음은 하나의 컨테이너를 갖는 파드의 구성 파일이다. 해당 컨테이너는 메모리 상한과 다음은 하나의 컨테이너를 갖는 파드의 매니페스트이다. 해당 컨테이너는 메모리 상한과
메모리 요청량을 갖고 있고, 200MiB로 동일하다. 해당 컨테이너는 CPU 상한과 CPU 요청량을 가지며, 700 milliCPU로 동일하다. 메모리 요청량을 갖고 있고, 200MiB로 동일하다. 해당 컨테이너는 CPU 상한과 CPU 요청량을 가지며, 700 milliCPU로 동일하다.
{{% codenew file="pods/qos/qos-pod.yaml" %}} {{% codenew file="pods/qos/qos-pod.yaml" %}}
@ -69,7 +70,7 @@ kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod.yaml --namespace=qos-e
kubectl get pod qos-demo --namespace=qos-example --output=yaml kubectl get pod qos-demo --namespace=qos-example --output=yaml
``` ```
출력 결과는 쿠버네티스가 파드에 Guaranteed QoS 클래스를 부여했음을 보여준다. 또한 출력 결과는 쿠버네티스가 파드에 `Guaranteed` QoS 클래스를 부여했음을 보여준다. 또한
파드의 컨테이너가 메모리 요청량과 일치하는 메모리 상한을 가지며, 파드의 컨테이너가 메모리 요청량과 일치하는 메모리 상한을 가지며,
CPU 요청량과 일치하는 CPU 상한을 갖고 있음을 확인할 수 있다. CPU 요청량과 일치하는 CPU 상한을 갖고 있음을 확인할 수 있다.
@ -96,6 +97,9 @@ CPU 상한을 지정하지만, CPU 요청량을 지정하지 않은 경우, 쿠
할당한다. 할당한다.
{{< /note >}} {{< /note >}}
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
#### 정리 {#clean-up-guaranteed}
파드를 삭제한다. 파드를 삭제한다.
```shell ```shell
@ -104,12 +108,12 @@ kubectl delete pod qos-demo --namespace=qos-example
## Burstable QoS 클래스가 할당되는 파드 생성 ## Burstable QoS 클래스가 할당되는 파드 생성
다음의 경우 파드에 Burstable QoS 클래스가 부여된다. 다음의 경우 파드에 `Burstable` QoS 클래스가 부여된다.
* 파드가 Guaranteed QoS 클래스 기준을 만족하지 않는다. * 파드가 `Guaranteed` QoS 클래스 기준을 만족하지 않는다.
* 파드 내에서 최소한 하나의 컨테이너가 메모리 또는 CPU 요청량/상한을 가진다. * 파드 내에서 최소한 하나의 컨테이너가 메모리 또는 CPU 요청량/상한을 가진다.
컨테이너가 하나인 파드의 구성 파일은 다음과 같다. 컨테이너는 컨테이너가 하나인 파드의 매니페스트는 다음과 같다. 컨테이너는
200MiB의 메모리 상한과 100MiB의 메모리 요청량을 가진다. 200MiB의 메모리 상한과 100MiB의 메모리 요청량을 가진다.
{{% codenew file="pods/qos/qos-pod-2.yaml" %}} {{% codenew file="pods/qos/qos-pod-2.yaml" %}}
@ -126,7 +130,7 @@ kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-2.yaml --namespace=qos
kubectl get pod qos-demo-2 --namespace=qos-example --output=yaml kubectl get pod qos-demo-2 --namespace=qos-example --output=yaml
``` ```
출력 결과는 쿠버네티스가 파드에 Burstable QoS 클래스를 부여했음을 보여준다. 출력 결과는 쿠버네티스가 파드에 `Burstable` QoS 클래스를 부여했음을 보여준다.
```yaml ```yaml
spec: spec:
@ -144,6 +148,9 @@ status:
qosClass: Burstable qosClass: Burstable
``` ```
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
#### 정리 {#clean-up-burstable}
파드를 삭제한다. 파드를 삭제한다.
```shell ```shell
@ -152,10 +159,10 @@ kubectl delete pod qos-demo-2 --namespace=qos-example
## BestEffort QoS 클래스가 할당되는 파드 생성 ## BestEffort QoS 클래스가 할당되는 파드 생성
파드에 QoS 클래스 BestEffort를 제공하려면, 파드의 컨테이너에 파드에 QoS 클래스 `BestEffort`를 제공하려면, 파드의 컨테이너에
메모리 또는 CPU의 상한이나 요청량이 없어야 한다. 메모리 또는 CPU의 상한이나 요청량이 없어야 한다.
컨테이너가 하나인 파드의 구성 파일이다. 해당 컨테이너는 메모리 또는 CPU의 컨테이너가 하나인 파드의 매니페스트이다. 해당 컨테이너는 메모리 또는 CPU의
상한이나 요청량을 갖지 않는다. 상한이나 요청량을 갖지 않는다.
{{% codenew file="pods/qos/qos-pod-3.yaml" %}} {{% codenew file="pods/qos/qos-pod-3.yaml" %}}
@ -172,7 +179,7 @@ kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-3.yaml --namespace=qos
kubectl get pod qos-demo-3 --namespace=qos-example --output=yaml kubectl get pod qos-demo-3 --namespace=qos-example --output=yaml
``` ```
출력 결과는 쿠버네티스가 파드에 BestEffort QoS 클래스를 부여했음을 보여준다. 출력 결과는 쿠버네티스가 파드에 `BestEffort` QoS 클래스를 부여했음을 보여준다.
```yaml ```yaml
spec: spec:
@ -184,6 +191,9 @@ status:
qosClass: BestEffort qosClass: BestEffort
``` ```
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
#### 정리 {#clean-up-besteffort}
파드를 삭제한다. 파드를 삭제한다.
```shell ```shell
@ -192,12 +202,12 @@ kubectl delete pod qos-demo-3 --namespace=qos-example
## 컨테이너가 두 개인 파드 생성 ## 컨테이너가 두 개인 파드 생성
컨테이너가 두 개인 파드의 구성 파일이다. 한 컨테이너는 200MiB의 메모리 컨테이너가 두 개인 파드의 매니페스트이다. 한 컨테이너는 200MiB의 메모리
요청량을 지정한다. 다른 컨테이너는 어떤 요청량이나 상한을 지정하지 않는다. 요청량을 지정한다. 다른 컨테이너는 어떤 요청량이나 상한을 지정하지 않는다.
{{% codenew file="pods/qos/qos-pod-4.yaml" %}} {{% codenew file="pods/qos/qos-pod-4.yaml" %}}
참고로 이 파드는 Burstable QoS 클래스의 기준을 충족한다. 즉, Guaranteed QoS 클래스에 대한 참고로 이 파드는 `Burstable` QoS 클래스의 기준을 충족한다. 즉, `Guaranteed` QoS 클래스에 대한
기준을 충족하지 않으며, 해당 컨테이너 중 하나가 메모리 요청량을 갖는다. 기준을 충족하지 않으며, 해당 컨테이너 중 하나가 메모리 요청량을 갖는다.
파드를 생성한다. 파드를 생성한다.
@ -212,7 +222,7 @@ kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-4.yaml --namespace=qos
kubectl get pod qos-demo-4 --namespace=qos-example --output=yaml kubectl get pod qos-demo-4 --namespace=qos-example --output=yaml
``` ```
출력 결과는 쿠버네티스가 파드에 Burstable QoS 클래스를 부여했음을 보여준다. 출력 결과는 쿠버네티스가 파드에 `Burstable` QoS 클래스를 부여했음을 보여준다.
```yaml ```yaml
spec: spec:
@ -230,12 +240,19 @@ status:
qosClass: Burstable qosClass: Burstable
``` ```
파드를 삭제한다. ## 파드의 QoS 클래스 확인
```shell 모든 필드를 보는 대신, 필요한 필드만 볼 수 있다.
kubectl delete pod qos-demo-4 --namespace=qos-example
```bash
kubectl --namespace=qos-example get pod qos-demo-4 -o jsonpath='{ .status.qosClass}{"\n"}'
``` ```
```none
Burstable
```
## 정리 ## 정리
네임스페이스를 삭제한다. 네임스페이스를 삭제한다.

View File

@ -2,7 +2,7 @@
# reviewers: # reviewers:
# - jsafrane # - jsafrane
title: 스태틱(static) 파드 생성하기 title: 스태틱(static) 파드 생성하기
weight: 170 weight: 220
content_template: task content_template: task
--- ---
@ -225,6 +225,18 @@ crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
89db4553e1eeb docker.io/library/nginx@sha256:... 19 seconds ago Running web 1 34533c6729106 89db4553e1eeb docker.io/library/nginx@sha256:... 19 seconds ago Running web 1 34533c6729106
``` ```
올바른 컨테이너를 식별한 후에는 `crictl`로 해당 컨테이너의 로그를 가져올 수 있다.
```shell
# 컨테이너가 동작하고 있는 노드에서 이 명령을 수행한다.
crictl logs <container_id>
```
```console
10.240.0.48 - - [16/Nov/2022:12:45:49 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
10.240.0.48 - - [16/Nov/2022:12:45:50 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
10.240.0.48 - - [16/Nove/2022:12:45:51 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
```
`crictl`을 사용하여 디버깅하는 방법에 대해서는 [_crictl로 쿠버네티스 노드 디버깅하기_](/ko/docs/tasks/debug/debug-cluster/crictl/)을 참고한다.
## 스태틱 파드의 동적 추가 및 제거 ## 스태틱 파드의 동적 추가 및 제거
@ -232,7 +244,7 @@ CONTAINER IMAGE CREATED STATE
```shell ```shell
# 예제를 수행하는 사용자가 파일시스템이 호스팅하는 스태틱 파드 설정을 사용한다고 가정한다. # 예제를 수행하는 사용자가 파일시스템이 호스팅하는 스태틱 파드 설정을 사용한다고 가정한다.
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다. # 컨테이너가 동작하고 있는 노드에서 이 명령을 수행한다.
# #
mv /etc/kubernetes/manifests/static-web.yaml /tmp mv /etc/kubernetes/manifests/static-web.yaml /tmp
sleep 20 sleep 20
@ -246,3 +258,11 @@ crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
f427638871c35 docker.io/library/nginx@sha256:... 19 seconds ago Running web 1 34533c6729106 f427638871c35 docker.io/library/nginx@sha256:... 19 seconds ago Running web 1 34533c6729106
``` ```
## {{% heading "whatsnext" %}}
* [컨트롤 플레인 컴포넌트에 대한 정적 파드 매니페스트 생성하기](/docs/reference/setup-tools/kubeadm/implementation-details/#generate-static-pod-manifests-for-control-plane-components)
* [로컬 etcd에 대한 정적 파드 매니페스트 생성하기](/docs/reference/setup-tools/kubeadm/implementation-details/#generate-static-pod-manifest-for-local-etcd)
* [`crictl`로 쿠버네티스 노드 디버깅하기](/ko/docs/tasks/debug/debug-cluster/crictl/)
* [`crictl`에 대해 자세히 알아보기](https://github.com/kubernetes-sigs/cri-tools).
* [`docker` CLI 명령을 `crictl`에 매핑하기](/docs/reference/tools/map-crictl-dockercli/).
* [etcd 인스턴스를 kubelet이 관리하는 정적 파드로 설정하기](/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/)

View File

@ -3,7 +3,7 @@
# - cdrage # - cdrage
title: 도커 컴포즈 파일을 쿠버네티스 리소스로 변환하기 title: 도커 컴포즈 파일을 쿠버네티스 리소스로 변환하기
content_type: task content_type: task
weight: 200 weight: 230
--- ---
<!-- overview --> <!-- overview -->
@ -120,7 +120,7 @@ brew install kompose
``` ```
2. `docker-compose.yml` 파일을 `kubectl`를 통해 활용할 수 있는 파일들로 변환하기 위해서는, 2. `docker-compose.yml` 파일을 `kubectl`를 통해 활용할 수 있는 파일들로 변환하기 위해서는,
`kompose convert`를 실행한 후, `kubectl apply -f <output file>`를 실행한다. `kompose convert`를 실행한 후, `kubectl apply -f <output file>`를 실행한다.
```bash ```bash
kompose convert kompose convert
@ -129,42 +129,30 @@ brew install kompose
결과는 다음과 같다. 결과는 다음과 같다.
```none ```none
INFO Kubernetes file "frontend-service.yaml" created INFO Kubernetes file "frontend-tcp-service.yaml" created
INFO Kubernetes file "frontend-service.yaml" created INFO Kubernetes file "redis-master-service.yaml" created
INFO Kubernetes file "frontend-service.yaml" created INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "redis-master-service.yaml" created INFO Kubernetes file "frontend-deployment.yaml" created
INFO Kubernetes file "redis-master-service.yaml" created INFO Kubernetes file "redis-master-deployment.yaml" created
INFO Kubernetes file "redis-master-service.yaml" created
INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "frontend-deployment.yaml" created
INFO Kubernetes file "frontend-deployment.yaml" created
INFO Kubernetes file "frontend-deployment.yaml" created
INFO Kubernetes file "redis-master-deployment.yaml" created
INFO Kubernetes file "redis-master-deployment.yaml" created
INFO Kubernetes file "redis-master-deployment.yaml" created
INFO Kubernetes file "redis-slave-deployment.yaml" created
INFO Kubernetes file "redis-slave-deployment.yaml" created
INFO Kubernetes file "redis-slave-deployment.yaml" created INFO Kubernetes file "redis-slave-deployment.yaml" created
``` ```
```bash ```bash
kubectl apply -f frontend-service.yaml,redis-master-service.yaml,redis-slave-service.yaml,frontend-deployment.yaml,redis-master-deployment.yaml,redis-slave-deployment.yaml kubectl apply -f frontend-tcp-service.yaml,redis-master-service.yaml,redis-slave-service.yaml,frontend-deployment.yaml,redis-master-deployment.yaml,redis-slave-deployment.yaml
``` ```
결과는 다음과 같다. 결과는 다음과 같다.
```none ```none
service/frontend created service/frontend-tcp created
service/redis-master created service/redis-master created
service/redis-slave created service/redis-slave created
deployment.apps/frontend created deployment.apps/frontend created
deployment.apps/redis-master created deployment.apps/redis-master created
deployment.apps/redis-slave created deployment.apps/redis-slave created
``` ```
디플로이먼트들은 쿠버네티스에서 실행된다. 디플로이먼트들은 쿠버네티스에서 실행된다.
3. 애플리케이션에 접근하기. 3. 애플리케이션에 접근하기.
@ -181,18 +169,29 @@ brew install kompose
``` ```
```none ```none
Name: frontend Name: frontend-tcp
Namespace: default Namespace: default
Labels: service=frontend Labels: io.kompose.service=frontend-tcp
Selector: service=frontend Annotations: kompose.cmd: kompose convert
Type: LoadBalancer kompose.service.type: LoadBalancer
IP: 10.0.0.183 kompose.version: 1.26.0 (40646f47)
LoadBalancer Ingress: 192.0.2.89 Selector: io.kompose.service=frontend
Port: 80 80/TCP Type: LoadBalancer
NodePort: 80 31144/TCP IP Family Policy: SingleStack
Endpoints: 172.17.0.4:80 IP Families: IPv4
Session Affinity: None IP: 10.43.67.174
No events. IPs: 10.43.67.174
Port: 80 80/TCP
TargetPort: 80/TCP
NodePort: 80 31254/TCP
Endpoints: 10.42.0.25:80
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 62s service-controller Ensuring load balancer
Normal AppliedDaemonSet 62s service-controller Applied LoadBalancer DaemonSet kube-system/svclb-frontend-tcp-9362d276
``` ```
클라우드 환경을 사용하고 있다면, IP는 `LoadBalancer Ingress` 옆에 나열되어 있을 것이다. 클라우드 환경을 사용하고 있다면, IP는 `LoadBalancer Ingress` 옆에 나열되어 있을 것이다.
@ -201,6 +200,16 @@ brew install kompose
curl http://192.0.2.89 curl http://192.0.2.89
``` ```
4. 정리
애플리케이션 배포 예제 테스트를 완료한 후에는, 셸에서 다음 명령을 실행하여 사용된 리소스를
삭제하면 돤다.
```sh
kubectl delete -f frontend-tcp-service.yaml,redis-master-service.yaml,redis-slave-service.yaml,frontend-deployment.yaml,redis-master-deployment.yaml,redis-slave-deployment.yaml
```
<!-- discussion --> <!-- discussion -->
## 사용자 가이드 ## 사용자 가이드

View File

@ -2,7 +2,7 @@
title: 파드에 유저 네임스페이스 사용하기 title: 파드에 유저 네임스페이스 사용하기
reviewers: reviewers:
content_type: task content_type: task
weight: 160 weight: 210
min-kubernetes-server-version: v1.25 min-kubernetes-server-version: v1.25
--- ---
@ -43,15 +43,17 @@ min-kubernetes-server-version: v1.25
* 파드 내부로 exec 할 수 있어야 한다. * 파드 내부로 exec 할 수 있어야 한다.
* 기능 게이트 'UserNamespacesStatelessPodsSupport'를 활성화해야 한다. * 기능 게이트 'UserNamespacesStatelessPodsSupport'를 활성화해야 한다.
추가적으로, 쿠버네티스 스테이트리스(stateless) 파드에서 사용 중인 클러스터에는 파드와 함께 사용자 네임스페이스를 사용하기 위한
이 기능을 사용하려면 [요구사항](/ko/docs/concepts/workloads/pods/user-namespaces/#before-you-begin)을
{{< glossary_tooltip text="컨테이너 런타임" term_id="container-runtime" >}}에서 지원이 필요하다. 충족하는 노드가 **반드시** 하나 이상 포함되어야 한다.
* CRI-O: v1.25는 유저 네임스페이스를 지원한다. 노드가 혼합되어 있고 일부 노드만 파드에 대한 사용자 네임스페이스 지원을 제공하는
경우, 사용자 네임스페이스 파드가 적합한 노드로
[스케줄링](/ko/docs/concepts/scheduling-eviction/assign-pod-node/)되었는지 확인해야 한다.
**컨테이너 런타임이 유저 네임스페이스를 지원하지 않으면, **컨테이너 런타임이 유저 네임스페이스를 지원하지 않으면,
`pod.spec` 필드는 별다른 경고 없이 무시되고 파드는 유저 네임스페이스 없이 생성된다** 는 파드 스펙의 `hostUsers` 필드는 별다른 경고 없이 무시되고 파드는 유저 네임스페이스 없이
사실을 명심한다. 생성된다** 는 사실을 명심한다.
<!-- steps --> <!-- steps -->