Merge pull request #43707 from jongwooo/231027_ko_update_outdated_files
[ko] Update outdated files in dev-1.27-ko.1 (M160-M176)dev-1.27-ko.1
commit
0e6751bf8e
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: "파드와 컨테이너 설정"
|
||||
description: 파드와 컨테이너에 대한 공통 구성 태스크들을 수행한다.
|
||||
weight: 20
|
||||
weight: 30
|
||||
---
|
||||
|
|
|
@ -275,4 +275,4 @@ kubectl delete namespace cpu-example
|
|||
|
||||
- [API 오브젝트 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/)
|
||||
|
||||
|
||||
- [컨테이너에 할당된 CPU 및 메모리 리소스 크기 조정](/docs/tasks/configure-pod-container/resize-container-resources/)
|
||||
|
|
|
@ -357,3 +357,5 @@ kubectl delete namespace mem-example
|
|||
* [네임스페이스에 파드 할당량 구성](/ko/docs/tasks/administer-cluster/manage-resources/quota-pod-namespace/)
|
||||
|
||||
* [API 오브젝트에 할당량 구성](/docs/tasks/administer-cluster/quota-api-object/)
|
||||
|
||||
* [컨테이너에 할당된 CPU 및 메모리 리소스 크기 조정](/docs/tasks/configure-pod-container/resize-container-resources/)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: 노드 어피니티를 사용해 노드에 파드 할당
|
||||
min-kubernetes-server-version: v1.10
|
||||
content_type: task
|
||||
weight: 120
|
||||
weight: 160
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 노드에 파드 할당
|
||||
content_type: task
|
||||
weight: 120
|
||||
weight: 150
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 윈도우 파드와 컨테이너용 GMSA 구성
|
||||
content_type: task
|
||||
weight: 20
|
||||
weight: 30
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 스토리지로 퍼시스턴트볼륨(PersistentVolume)을 사용하도록 파드 설정하기
|
||||
content_type: task
|
||||
weight: 60
|
||||
weight: 90
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
@ -12,27 +12,24 @@ weight: 60
|
|||
과정의 요약은 다음과 같다.
|
||||
|
||||
1. 클러스터 관리자로서, 물리적 스토리지와 연결되는 퍼시스턴트볼륨을
|
||||
생성한다. 볼륨을 특정 파드와 연결하지 않는다.
|
||||
생성한다. 볼륨을 특정 파드와 연결하지 않는다.
|
||||
|
||||
1. 그 다음 개발자 / 클러스터 사용자의 역할로서, 적합한
|
||||
퍼시스턴트볼륨에 자동으로 바인딩되는 퍼시스턴트볼륨클레임을
|
||||
생성한다.
|
||||
퍼시스턴트볼륨에 자동으로 바인딩되는 퍼시스턴트볼륨클레임을
|
||||
생성한다.
|
||||
|
||||
1. 스토리지에 대해 위의 퍼시스턴트볼륨클레임을 사용하는 파드를 생성한다.
|
||||
|
||||
|
||||
|
||||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
* 사용자는 노드가 단 하나만 있는 쿠버네티스 클러스터가 필요하고,
|
||||
{{< glossary_tooltip text="kubectl" term_id="kubectl" >}}
|
||||
커맨드라인 툴이 사용자의 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 만약 사용자가
|
||||
아직 단일 노드 클러스터를 가지고 있지 않다면, [Minikube](/ko/docs/tasks/tools/#minikube)를
|
||||
사용하여 클러스터 하나를 생성할 수 있다.
|
||||
{{< glossary_tooltip text="kubectl" term_id="kubectl" >}}
|
||||
커맨드라인 툴이 사용자의 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 만약 사용자가
|
||||
아직 단일 노드 클러스터를 가지고 있지 않다면, [Minikube](/ko/docs/tasks/tools/#minikube)를
|
||||
사용하여 클러스터 하나를 생성할 수 있다.
|
||||
|
||||
* [퍼시스턴트 볼륨](https://minikube.sigs.k8s.io/docs/)의
|
||||
관련 자료에 익숙해지도록 한다.
|
||||
관련 자료에 익숙해지도록 한다.
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
|
@ -50,7 +47,6 @@ weight: 60
|
|||
sudo mkdir /mnt/data
|
||||
```
|
||||
|
||||
|
||||
`/mnt/data` 디렉터리에서 `index.html` 파일을 생성한다.
|
||||
|
||||
```shell
|
||||
|
@ -71,6 +67,7 @@ cat /mnt/data/index.html
|
|||
```
|
||||
|
||||
결과는 다음과 같다.
|
||||
|
||||
```
|
||||
Hello from Kubernetes storage
|
||||
```
|
||||
|
@ -116,8 +113,10 @@ kubectl get pv task-pv-volume
|
|||
결과는 퍼시스턴트볼륨의 `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` 임을 보여준다.
|
||||
|
||||
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` 에
|
||||
바인딩되어 있음을 보여준다.
|
||||
|
||||
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` 파일에 사용자가 작성한 텍스트를
|
||||
보여준다.
|
||||
|
||||
Hello from Kubernetes storage
|
||||
|
||||
```
|
||||
Hello from Kubernetes storage
|
||||
```
|
||||
|
||||
만약 사용자가 위와 같은 메시지를 확인하면, 파드가 퍼시스턴트볼륨클레임의 스토리지를
|
||||
사용하도록 성공적으로 설정한 것이다.
|
||||
|
@ -242,8 +248,8 @@ sudo rmdir /mnt/data
|
|||
|
||||
하나의 퍼시스턴트볼륨을 nginx 컨테이너의 두 경로에 마운트할 수 있다.
|
||||
|
||||
`/usr/share/nginx/html` - 정적 웹사이트 용
|
||||
`/etc/nginx/nginx.conf` - 기본 환경 설정 용
|
||||
- `/usr/share/nginx/html` - 정적 웹사이트 용
|
||||
- `/etc/nginx/nginx.conf` - 기본 환경 설정 용
|
||||
|
||||
<!-- discussion -->
|
||||
|
||||
|
@ -256,6 +262,7 @@ sudo rmdir /mnt/data
|
|||
사용하는 모든 파드에 대하여 GID가 자동으로 추가된다.
|
||||
|
||||
다음과 같이 `pv.beta.kubernetes.io/gid` 어노테이션을 사용한다.
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
|
@ -264,6 +271,7 @@ metadata:
|
|||
annotations:
|
||||
pv.beta.kubernetes.io/gid: "1234"
|
||||
```
|
||||
|
||||
파드가 GID 어노테이션이 있는 퍼시스턴트볼륨을 사용하면, 어노테이션으로
|
||||
달린 GID가 파드의 보안 컨텍스트에 지정된 GID와 동일한 방식으로
|
||||
파드의 모든 컨테이너에 적용된다. 파드의 명세 혹은 퍼시스턴트볼륨의
|
||||
|
@ -275,18 +283,14 @@ metadata:
|
|||
GID는 파드 리소스 자체에는 존재하지 않는다.
|
||||
{{< /note >}}
|
||||
|
||||
|
||||
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
|
||||
* [퍼시스턴트볼륨](/ko/docs/concepts/storage/persistent-volumes/)에 대해 더 보기.
|
||||
* [퍼시스턴트 스토리지 디자인 문서](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)
|
||||
* [퍼시스턴트볼륨클레임](/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)
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
---
|
||||
title: 초기화 컨테이너에 대한 구성
|
||||
content_type: task
|
||||
weight: 130
|
||||
weight: 170
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
||||
이 페이지는 애플리케이션 실행 전에 파드를 초기화하기 위해 어떻게 초기화 컨테이너를
|
||||
구성해야 하는지 보여준다.
|
||||
|
||||
|
||||
|
||||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||
|
||||
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
## 초기화 컨테이너를 갖는 파드 생성
|
||||
|
@ -37,52 +33,63 @@ weight: 130
|
|||
`/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` 파일을
|
||||
저장한다.
|
||||
|
||||
파드를 생성한다.
|
||||
|
||||
kubectl apply -f https://k8s.io/examples/pods/init-containers.yaml
|
||||
```shell
|
||||
kubectl apply -f https://k8s.io/examples/pods/init-containers.yaml
|
||||
```
|
||||
|
||||
nginx 컨테이너가 실행 중인지 확인한다.
|
||||
|
||||
kubectl get pod init-demo
|
||||
```shell
|
||||
kubectl get pod init-demo
|
||||
```
|
||||
|
||||
출력 결과는 nginx 컨테이너가 실행 중임을 보여준다.
|
||||
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
init-demo 1/1 Running 0 1m
|
||||
```shell
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
init-demo 1/1 Running 0 1m
|
||||
```
|
||||
|
||||
init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다.
|
||||
|
||||
kubectl exec -it init-demo -- /bin/bash
|
||||
```shell
|
||||
kubectl exec -it init-demo -- /bin/bash
|
||||
```
|
||||
|
||||
셸에서 GET 요청을 nginx 서버로 전송한다.
|
||||
|
||||
root@nginx:~# apt-get update
|
||||
root@nginx:~# apt-get install curl
|
||||
root@nginx:~# curl localhost
|
||||
```
|
||||
root@nginx:~# apt-get update
|
||||
root@nginx:~# apt-get install curl
|
||||
root@nginx:~# curl localhost
|
||||
```
|
||||
|
||||
출력 결과는 nginx가 초기화 컨테이너에 의해 저장된 웹 페이지를 제공하고 있음을 보여준다.
|
||||
|
||||
<html><head></head><body><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>
|
||||
...
|
||||
|
||||
```html
|
||||
<html><head></head><body><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>
|
||||
...
|
||||
```
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
|
||||
* [같은 파드 내 실행 중인 컨테이너들간 통신](/ko/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)에
|
||||
대해 배우기.
|
||||
대해 배우기.
|
||||
* [초기화 컨테이너](/ko/docs/concepts/workloads/pods/init-containers/)에 대해 배우기.
|
||||
* [볼륨](/ko/docs/concepts/storage/volumes/)에 대해 배우기.
|
||||
* [초기화 컨테이너 디버깅](/ko/docs/tasks/debug/debug-application/debug-init-containers/)에 대해 배우기.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
##- pmorie
|
||||
title: 파드의 스토리지에 프로젝티드 볼륨(Projected Volume)을 사용하도록 구성
|
||||
content_type: task
|
||||
weight: 70
|
||||
weight: 100
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 윈도우 파드 및 컨테이너에서 RunAsUserName 구성
|
||||
content_type: task
|
||||
weight: 20
|
||||
weight: 40
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 스토리지의 볼륨을 사용하는 파드 구성
|
||||
content_type: task
|
||||
weight: 50
|
||||
weight: 80
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
@ -45,7 +45,7 @@ weight: 50
|
|||
|
||||
출력은 이와 유사하다.
|
||||
|
||||
```shell
|
||||
```console
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
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
|
||||
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
|
||||
|
@ -91,7 +91,7 @@ weight: 50
|
|||
1. 원래 터미널에서, Redis 파드의 변경을 지켜본다. 결국,
|
||||
다음과 유사한 것을 보게 될 것이다.
|
||||
|
||||
```shell
|
||||
```console
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
redis 1/1 Running 0 13s
|
||||
redis 0/1 Completed 0 6m
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
title: 컨테이너에 확장 리소스 지정
|
||||
content_type: task
|
||||
weight: 40
|
||||
weight: 70
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
title: 프라이빗 레지스트리에서 이미지 받아오기
|
||||
content_type: task
|
||||
weight: 100
|
||||
weight: 130
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
|
|
@ -1,36 +1,35 @@
|
|||
---
|
||||
title: 파드에 대한 서비스 품질(QoS) 구성
|
||||
content_type: task
|
||||
weight: 30
|
||||
weight: 60
|
||||
---
|
||||
|
||||
|
||||
<!-- overview -->
|
||||
|
||||
이 페이지는 특정 서비스 품질(QoS) 클래스를 할당하기 위해 어떻게 파드를
|
||||
구성해야 하는지 보여준다. 쿠버네티스는 QoS 클래스를 사용하여 파드
|
||||
스케줄링과 축출을 결정한다.
|
||||
이 페이지는 특정 {{< glossary_tooltip text="서비스 품질(QoS) 클래스" term_id="qos-class" >}}를
|
||||
할당하기 위해 어떻게 파드를 구성해야 하는지 보여준다.
|
||||
쿠버네티스는 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" %}}
|
||||
|
||||
|
||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||
{{< include "task-tutorial-prereqs.md" >}}
|
||||
|
||||
또한 네임스페이스를 만들고 삭제할 수 있어야 한다.
|
||||
|
||||
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
## QoS 클래스
|
||||
|
||||
쿠버네티스가 파드를 생성할 때, 파드에 다음의 QoS 클래스 중 하나를 할당한다.
|
||||
|
||||
* Guaranteed
|
||||
* Burstable
|
||||
* BestEffort
|
||||
|
||||
## 네임스페이스 생성
|
||||
|
||||
|
@ -43,7 +42,7 @@ kubectl create namespace qos-example
|
|||
|
||||
## Guaranteed QoS 클래스가 할당되는 파드 생성
|
||||
|
||||
파드에 Guaranteed QoS 클래스 할당을 위한 전제 조건은 다음과 같다.
|
||||
파드에 `Guaranteed` QoS 클래스 할당을 위한 전제 조건은 다음과 같다.
|
||||
|
||||
* 파드 내 모든 컨테이너는 메모리 상한과 메모리 요청량을 가지고 있어야 한다.
|
||||
* 파드 내 모든 컨테이너의 메모리 상한이 메모리 요청량과 일치해야 한다.
|
||||
|
@ -51,8 +50,10 @@ kubectl create namespace qos-example
|
|||
* 파드 내 모든 컨테이너의 CPU 상한이 CPU 요청량과 일치해야 한다.
|
||||
|
||||
이러한 제약은 초기화 컨테이너와 앱 컨테이너 모두에 동일하게 적용된다.
|
||||
[임시(Ephemeral) 컨테이너](/ko/docs/concepts/workloads/pods/ephemeral-containers/)는
|
||||
리소스를 정의할 수 없으므로 이러한 제약을 따르지 않는다.
|
||||
|
||||
다음은 하나의 컨테이너를 갖는 파드의 구성 파일이다. 해당 컨테이너는 메모리 상한과
|
||||
다음은 하나의 컨테이너를 갖는 파드의 매니페스트이다. 해당 컨테이너는 메모리 상한과
|
||||
메모리 요청량을 갖고 있고, 200MiB로 동일하다. 해당 컨테이너는 CPU 상한과 CPU 요청량을 가지며, 700 milliCPU로 동일하다.
|
||||
|
||||
{{% 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
|
||||
```
|
||||
|
||||
출력 결과는 쿠버네티스가 파드에 Guaranteed QoS 클래스를 부여했음을 보여준다. 또한
|
||||
출력 결과는 쿠버네티스가 파드에 `Guaranteed` QoS 클래스를 부여했음을 보여준다. 또한
|
||||
파드의 컨테이너가 메모리 요청량과 일치하는 메모리 상한을 가지며,
|
||||
CPU 요청량과 일치하는 CPU 상한을 갖고 있음을 확인할 수 있다.
|
||||
|
||||
|
@ -96,6 +97,9 @@ CPU 상한을 지정하지만, CPU 요청량을 지정하지 않은 경우, 쿠
|
|||
할당한다.
|
||||
{{< /note >}}
|
||||
|
||||
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
|
||||
#### 정리 {#clean-up-guaranteed}
|
||||
|
||||
파드를 삭제한다.
|
||||
|
||||
```shell
|
||||
|
@ -104,12 +108,12 @@ kubectl delete pod qos-demo --namespace=qos-example
|
|||
|
||||
## Burstable QoS 클래스가 할당되는 파드 생성
|
||||
|
||||
다음의 경우 파드에 Burstable QoS 클래스가 부여된다.
|
||||
다음의 경우 파드에 `Burstable` QoS 클래스가 부여된다.
|
||||
|
||||
* 파드가 Guaranteed QoS 클래스 기준을 만족하지 않는다.
|
||||
* 파드가 `Guaranteed` QoS 클래스 기준을 만족하지 않는다.
|
||||
* 파드 내에서 최소한 하나의 컨테이너가 메모리 또는 CPU 요청량/상한을 가진다.
|
||||
|
||||
컨테이너가 하나인 파드의 구성 파일은 다음과 같다. 컨테이너는
|
||||
컨테이너가 하나인 파드의 매니페스트는 다음과 같다. 컨테이너는
|
||||
200MiB의 메모리 상한과 100MiB의 메모리 요청량을 가진다.
|
||||
|
||||
{{% 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
|
||||
```
|
||||
|
||||
출력 결과는 쿠버네티스가 파드에 Burstable QoS 클래스를 부여했음을 보여준다.
|
||||
출력 결과는 쿠버네티스가 파드에 `Burstable` QoS 클래스를 부여했음을 보여준다.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
|
@ -144,6 +148,9 @@ status:
|
|||
qosClass: Burstable
|
||||
```
|
||||
|
||||
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
|
||||
#### 정리 {#clean-up-burstable}
|
||||
|
||||
파드를 삭제한다.
|
||||
|
||||
```shell
|
||||
|
@ -152,10 +159,10 @@ kubectl delete pod qos-demo-2 --namespace=qos-example
|
|||
|
||||
## BestEffort QoS 클래스가 할당되는 파드 생성
|
||||
|
||||
파드에 QoS 클래스 BestEffort를 제공하려면, 파드의 컨테이너에
|
||||
파드에 QoS 클래스 `BestEffort`를 제공하려면, 파드의 컨테이너에
|
||||
메모리 또는 CPU의 상한이나 요청량이 없어야 한다.
|
||||
|
||||
컨테이너가 하나인 파드의 구성 파일이다. 해당 컨테이너는 메모리 또는 CPU의
|
||||
컨테이너가 하나인 파드의 매니페스트이다. 해당 컨테이너는 메모리 또는 CPU의
|
||||
상한이나 요청량을 갖지 않는다.
|
||||
|
||||
{{% 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
|
||||
```
|
||||
|
||||
출력 결과는 쿠버네티스가 파드에 BestEffort QoS 클래스를 부여했음을 보여준다.
|
||||
출력 결과는 쿠버네티스가 파드에 `BestEffort` QoS 클래스를 부여했음을 보여준다.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
|
@ -184,6 +191,9 @@ status:
|
|||
qosClass: BestEffort
|
||||
```
|
||||
|
||||
<!-- 내비게이션에 표시하지 않기 위한 4단계 헤딩 -->
|
||||
#### 정리 {#clean-up-besteffort}
|
||||
|
||||
파드를 삭제한다.
|
||||
|
||||
```shell
|
||||
|
@ -192,12 +202,12 @@ kubectl delete pod qos-demo-3 --namespace=qos-example
|
|||
|
||||
## 컨테이너가 두 개인 파드 생성
|
||||
|
||||
컨테이너가 두 개인 파드의 구성 파일이다. 한 컨테이너는 200MiB의 메모리
|
||||
컨테이너가 두 개인 파드의 매니페스트이다. 한 컨테이너는 200MiB의 메모리
|
||||
요청량을 지정한다. 다른 컨테이너는 어떤 요청량이나 상한을 지정하지 않는다.
|
||||
|
||||
{{% 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
|
||||
```
|
||||
|
||||
출력 결과는 쿠버네티스가 파드에 Burstable QoS 클래스를 부여했음을 보여준다.
|
||||
출력 결과는 쿠버네티스가 파드에 `Burstable` QoS 클래스를 부여했음을 보여준다.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
|
@ -230,12 +240,19 @@ status:
|
|||
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
|
||||
```
|
||||
|
||||
|
||||
## 정리
|
||||
|
||||
네임스페이스를 삭제한다.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# reviewers:
|
||||
# - jsafrane
|
||||
title: 스태틱(static) 파드 생성하기
|
||||
weight: 170
|
||||
weight: 220
|
||||
content_template: task
|
||||
---
|
||||
|
||||
|
@ -225,6 +225,18 @@ crictl ps
|
|||
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
|
||||
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
|
||||
# 예제를 수행하는 사용자가 파일시스템이 호스팅하는 스태틱 파드 설정을 사용한다고 가정한다.
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
# 컨테이너가 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
#
|
||||
mv /etc/kubernetes/manifests/static-web.yaml /tmp
|
||||
sleep 20
|
||||
|
@ -246,3 +258,11 @@ crictl ps
|
|||
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
|
||||
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/)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# - cdrage
|
||||
title: 도커 컴포즈 파일을 쿠버네티스 리소스로 변환하기
|
||||
content_type: task
|
||||
weight: 200
|
||||
weight: 230
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
@ -120,7 +120,7 @@ brew install kompose
|
|||
```
|
||||
|
||||
2. `docker-compose.yml` 파일을 `kubectl`를 통해 활용할 수 있는 파일들로 변환하기 위해서는,
|
||||
`kompose convert`를 실행한 후, `kubectl apply -f <output file>`를 실행한다.
|
||||
`kompose convert`를 실행한 후, `kubectl apply -f <output file>`를 실행한다.
|
||||
|
||||
```bash
|
||||
kompose convert
|
||||
|
@ -129,42 +129,30 @@ brew install kompose
|
|||
결과는 다음과 같다.
|
||||
|
||||
```none
|
||||
INFO Kubernetes file "frontend-service.yaml" created
|
||||
INFO Kubernetes file "frontend-service.yaml" created
|
||||
INFO Kubernetes file "frontend-service.yaml" created
|
||||
INFO Kubernetes file "redis-master-service.yaml" created
|
||||
INFO Kubernetes file "redis-master-service.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 "frontend-tcp-service.yaml" created
|
||||
INFO Kubernetes file "redis-master-service.yaml" created
|
||||
INFO Kubernetes file "redis-slave-service.yaml" created
|
||||
INFO Kubernetes file "frontend-deployment.yaml" created
|
||||
INFO Kubernetes file "redis-master-deployment.yaml" created
|
||||
INFO Kubernetes file "redis-slave-deployment.yaml" created
|
||||
```
|
||||
|
||||
```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
|
||||
service/frontend created
|
||||
service/frontend-tcp created
|
||||
service/redis-master created
|
||||
service/redis-slave created
|
||||
deployment.apps/frontend created
|
||||
deployment.apps/redis-master created
|
||||
deployment.apps/redis-slave created
|
||||
```
|
||||
|
||||
디플로이먼트들은 쿠버네티스에서 실행된다.
|
||||
|
||||
디플로이먼트들은 쿠버네티스에서 실행된다.
|
||||
|
||||
3. 애플리케이션에 접근하기.
|
||||
|
||||
|
@ -181,18 +169,29 @@ brew install kompose
|
|||
```
|
||||
|
||||
```none
|
||||
Name: frontend
|
||||
Namespace: default
|
||||
Labels: service=frontend
|
||||
Selector: service=frontend
|
||||
Type: LoadBalancer
|
||||
IP: 10.0.0.183
|
||||
LoadBalancer Ingress: 192.0.2.89
|
||||
Port: 80 80/TCP
|
||||
NodePort: 80 31144/TCP
|
||||
Endpoints: 172.17.0.4:80
|
||||
Session Affinity: None
|
||||
No events.
|
||||
Name: frontend-tcp
|
||||
Namespace: default
|
||||
Labels: io.kompose.service=frontend-tcp
|
||||
Annotations: kompose.cmd: kompose convert
|
||||
kompose.service.type: LoadBalancer
|
||||
kompose.version: 1.26.0 (40646f47)
|
||||
Selector: io.kompose.service=frontend
|
||||
Type: LoadBalancer
|
||||
IP Family Policy: SingleStack
|
||||
IP Families: IPv4
|
||||
IP: 10.43.67.174
|
||||
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` 옆에 나열되어 있을 것이다.
|
||||
|
@ -201,6 +200,16 @@ brew install kompose
|
|||
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 -->
|
||||
|
||||
## 사용자 가이드
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: 파드에 유저 네임스페이스 사용하기
|
||||
reviewers:
|
||||
content_type: task
|
||||
weight: 160
|
||||
weight: 210
|
||||
min-kubernetes-server-version: v1.25
|
||||
---
|
||||
|
||||
|
@ -43,15 +43,17 @@ min-kubernetes-server-version: v1.25
|
|||
* 파드 내부로 exec 할 수 있어야 한다.
|
||||
* 기능 게이트 'UserNamespacesStatelessPodsSupport'를 활성화해야 한다.
|
||||
|
||||
추가적으로, 쿠버네티스 스테이트리스(stateless) 파드에서
|
||||
이 기능을 사용하려면
|
||||
{{< glossary_tooltip text="컨테이너 런타임" term_id="container-runtime" >}}에서 지원이 필요하다.
|
||||
사용 중인 클러스터에는 파드와 함께 사용자 네임스페이스를 사용하기 위한
|
||||
[요구사항](/ko/docs/concepts/workloads/pods/user-namespaces/#before-you-begin)을
|
||||
충족하는 노드가 **반드시** 하나 이상 포함되어야 한다.
|
||||
|
||||
* CRI-O: v1.25는 유저 네임스페이스를 지원한다.
|
||||
노드가 혼합되어 있고 일부 노드만 파드에 대한 사용자 네임스페이스 지원을 제공하는
|
||||
경우, 사용자 네임스페이스 파드가 적합한 노드로
|
||||
[스케줄링](/ko/docs/concepts/scheduling-eviction/assign-pod-node/)되었는지 확인해야 한다.
|
||||
|
||||
**컨테이너 런타임이 유저 네임스페이스를 지원하지 않으면,
|
||||
새 `pod.spec` 필드는 별다른 경고 없이 무시되고 파드는 유저 네임스페이스 없이 생성된다** 는
|
||||
사실을 명심한다.
|
||||
**컨테이너 런타임이 유저 네임스페이스를 지원하지 않으면,
|
||||
파드 스펙의 `hostUsers` 필드는 별다른 경고 없이 무시되고 파드는 유저 네임스페이스 없이
|
||||
생성된다** 는 사실을 명심한다.
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
|
|
Loading…
Reference in New Issue