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
Kubernetes Prow Robot 2024-10-14 05:50:21 +01:00 committed by GitHub
commit 0e6751bf8e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 204 additions and 144 deletions

View File

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

View File

@ -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/)

View File

@ -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/)

View File

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

View File

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

View File

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

View File

@ -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)

View File

@ -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/)에 대해 배우기.

View File

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

View File

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

View File

@ -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

View File

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

View File

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

View File

@ -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
```
## 정리
네임스페이스를 삭제한다.

View File

@ -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/)

View File

@ -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 -->
## 사용자 가이드

View File

@ -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 -->