Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translate tasks/administer-cluster/extended-resource-node.md into Korean #21849

Merged
merged 1 commit into from
Jul 10, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 206 additions & 0 deletions content/ko/docs/tasks/administer-cluster/extended-resource-node.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
---
title: 노드에 대한 확장 리소스 알리기
content_type: task
---


<!-- overview -->

이 페이지는 노드의 확장 리소스를 지정하는 방법을 보여준다.
확장 리소스를 통해 클러스터 관리자는 쿠버네티스에게
알려지지 않은 노드-레벨 리소스를 알릴 수 있다.




## {{% heading "prerequisites" %}}


{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}




<!-- steps -->

## 노드의 이름을 확인한다

```shell
kubectl get nodes
```

이 연습에 사용할 노드 중 하나를 선택한다.

## 노드 중 하나에 새로운 확장 리소스를 알린다

노드에서 새로운 확장 리소스를 알리려면, 쿠버네티스 API 서버에
HTTP PATCH 요청을 보낸다. 예를 들어, 노드 중 하나에 4개의 동글(dongle)이 있다고
가정한다. 다음은 노드에 4개의 동글 리소스를 알리는 PATCH 요청의
예이다.

```shell
PATCH /api/v1/nodes/<your-node-name>/status HTTP/1.1
Accept: application/json
Content-Type: application/json-patch+json
Host: k8s-master:8080

[
{
"op": "add",
"path": "/status/capacity/example.com~1dongle",
"value": "4"
}
]
```

참고로 쿠버네티스는 동글이 무엇인지 또는 동글이 무엇을 위한 것인지 알 필요가 없다.
위의 PATCH 요청은 노드에 동글이라고 하는 네 가지 항목이 있음을
쿠버네티스에 알려준다.

쿠버네티스 API 서버에 요청을 쉽게 보낼 수 있도록 프록시를 시작한다.

```shell
kubectl proxy
```

다른 명령 창에서 HTTP PATCH 요청을 보낸다.
`<your-node-name>` 을 노드의 이름으로 바꾼다.

```shell
curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4"}]' \
http://localhost:8001/api/v1/nodes/<your-node-name>/status
```

{{< note >}}
이전 요청에서 `~1` 은 패치 경로의 / 문자에 대한
인코딩이다. JSON-Patch의 작업 경로값은 JSON-Pointer로
해석된다. 자세한 내용은 [IETF RFC 6901](https://tools.ietf.org/html/rfc6901)의
섹션 3을 참고한다.
{{< /note >}}

출력은 노드가 4개의 동글 용량을 가졌음을 나타낸다.

```
"capacity": {
"cpu": "2",
"memory": "2049008Ki",
"example.com/dongle": "4",
```

노드의 정보를 확인한다.

```
kubectl describe node <your-node-name>
```

다시 한 번, 출력에 동글 리소스가 표시된다.

```yaml
Capacity:
cpu: 2
memory: 2049008Ki
example.com/dongle: 4
```

이제, 애플리케이션 개발자는 특정 개수의 동글을 요청하는 파드를
만들 수 있다. [컨테이너에 확장 리소스 할당하기](/docs/tasks/configure-pod-container/extended-resource/)를
참고한다.

## 토론

확장 리소스는 메모리 및 CPU 리소스와 비슷하다. 예를 들어,
노드에서 실행 중인 모든 컴포넌트가 공유할 특정 양의 메모리와 CPU가
노드에 있는 것처럼, 노드에서 실행 중인 모든 컴포넌트가
특정 동글을 공유할 수 있다. 또한 애플리케이션 개발자가
특정 양의 메모리와 CPU를 요청하는 파드를 생성할 수 있는 것처럼, 특정
동글을 요청하는 파드를 생성할 수 있다.

확장 리소스는 쿠버네티스에게 불투명하다. 쿠버네티스는 그것들이
무엇인지 전혀 모른다. 쿠버네티스는 노드에 특정 개수의 노드만
있다는 것을 알고 있다. 확장 리소스는 정수로 알려야
한다. 예를 들어, 노드는 4.5개의 동글이 아닌, 4개의 동글을 알릴 수 있다.

### 스토리지 예제

노드에 800GiB의 특별한 종류의 디스크 스토리지가 있다고 가정한다.
example.com/special-storage와 같은 특별한 스토리지의 이름을 생성할 수 있다.
그런 다음 특정 크기, 100GiB의 청크로 알릴 수 있다. 이 경우,
노드에는 example.com/special-storage 유형의 8가지 리소스가 있다고
알린다.

```yaml
Capacity:
...
example.com/special-storage: 8
```

이 특별한 스토리지에 대한 임의 요청을 허용하려면,
1바이트 크기의 청크로 특별한 스토리지를 알릴 수 있다. 이 경우, example.com/special-storage 유형의
800Gi 리소스를 알린다.

```yaml
Capacity:
...
example.com/special-storage: 800Gi
```

그런 다음 컨테이너는 최대 800Gi의 임의 바이트 수의 특별한 스토리지를 요청할 수 있다.

## 정리

다음은 노드에서 동글 알림을 제거하는 PATCH 요청이다.

```
PATCH /api/v1/nodes/<your-node-name>/status HTTP/1.1
Accept: application/json
Content-Type: application/json-patch+json
Host: k8s-master:8080

[
{
"op": "remove",
"path": "/status/capacity/example.com~1dongle",
}
]
```

쿠버네티스 API 서버에 요청을 쉽게 보낼 수 있도록 프록시를 시작한다.

```shell
kubectl proxy
```

다른 명령 창에서 HTTP PATCH 요청을 보낸다.
`<your-node-name>`을 노드의 이름으로 바꾼다.

```shell
curl --header "Content-Type: application/json-patch+json" \
--request PATCH \
--data '[{"op": "remove", "path": "/status/capacity/example.com~1dongle"}]' \
http://localhost:8001/api/v1/nodes/<your-node-name>/status
```

동글 알림이 제거되었는지 확인한다.

```
kubectl describe node <your-node-name> | grep dongle
```

(출력이 보이지 않아야 함)




## {{% heading "whatsnext" %}}


### 애플리케이션 개발자를 위한 문서

* [컨테이너에 확장 리소스 할당하기](/docs/tasks/configure-pod-container/extended-resource/)

### 클러스터 관리자를 위한 문서

* [네임스페이스에 대한 메모리의 최소 및 최대 제약 조건 구성](/ko/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/)
* [네임스페이스에 대한 CPU의 최소 및 최대 제약 조건 구성](/ko/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/)