Skip to content

Commit 12fd4c8

Browse files
committed
[ko] Update content/ko/docs/concepts/overview/working-with-objects/_index.md
1 parent 86731ac commit 12fd4c8

File tree

1 file changed

+172
-4
lines changed
  • content/ko/docs/concepts/overview/working-with-objects

1 file changed

+172
-4
lines changed
Lines changed: 172 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,175 @@
11
---
2-
title: "쿠버네티스 오브젝트로 작업하기"
3-
weight: 40
2+
title: 쿠버네티스 오브젝트
3+
content_type: concept
4+
weight: 30
45
description: >
5-
쿠버네티스 오브젝트는 쿠버네티스 시스템의 영구 엔티티이다. 쿠버네티스는 이러한 엔티티들을 사용하여 클러스터의 상태를 나타낸다.
6-
쿠버네티스 오브젝트 모델과 쿠버네티스 오브젝트를 사용하는 방법에 대해 학습한다.
6+
쿠버네티스 오브젝트는 쿠버네티스 시스템의 영속성을 가진 엔티티이다.
7+
쿠버네티스는 이러한 엔티티를 사용하여 클러스터의 상태를 나타낸다.
8+
쿠버네티스 오브젝트 모델에 대해 알아보고 이를 다루는 방법을 알아본다.
9+
simple_list: true
10+
card:
11+
name: concepts
12+
weight: 40
713
---
14+
15+
<!-- overview -->
16+
17+
이 페이지는 쿠버네티스 오브젝트가 쿠버네티스 API에서 어떻게 표현되는지와
18+
이를 `.yaml` 형식으로 작성하는 방법을 설명한다.
19+
20+
<!-- body -->
21+
22+
## 쿠버네티스 오브젝트 이해하기 {#kubernetes-objects}
23+
24+
*쿠버네티스 오브젝트*는 쿠버네티스 시스템의 영속성을 가진 엔티티이다. 쿠버네티스는 이러한
25+
엔티티를 사용하여 클러스터의 상태를 나타낸다. 구체적으로, 다음을 설명할 수 있다.
26+
27+
* 어떤 컨테이너화된 애플리케이션이 실행 중인지 (그리고 어떤 노드에서 실행되는지)
28+
* 해당 애플리케이션에서 사용 가능한 리소스
29+
* 재시작 정책, 업그레이드, 내결함성과 같은 애플리케이션의 동작 방식에 대한 정책
30+
31+
쿠버네티스 오브젝트는 "의도의 기록"이다. 오브젝트를 생성하면, 쿠버네티스 시스템은
32+
오브젝트가 존재하도록 지속적으로 동작한다. 오브젝트를 생성한다는 것은 곧
33+
쿠버네티스 시스템에 클러스터의 워크로드가 어떤 모습이어야 하는지를 알려주는 것이며, 이것이
34+
클러스터의 *의도한 상태(desired state)* 이다.
35+
36+
쿠버네티스 오브젝트를 생성, 수정 또는 삭제하려면 [쿠버네티스 API](/ko/docs/concepts/overview/kubernetes-api/)
37+
사용해야 한다. `kubectl` 명령줄 인터페이스를 사용하면,
38+
예를 들어, CLI가 필요한 쿠버네티스 API 호출을 대신 수행한다. 또한
39+
[클라이언트 라이브러리](/ko/docs/reference/using-api/client-libraries/) 중 하나를 이용해
40+
직접 작성한 프로그램에서 쿠버네티스 API를 호출할 수 있다.
41+
42+
### 오브젝트 명세(spec)과 상태(status)
43+
44+
대부분의 쿠버네티스 오브젝트에는 오브젝트 구성을 정의하는
45+
*`spec`**`status`* 두 가지 중첩 필드가 있다.
46+
`spec`을 가진 오브젝트의 경우, 오브젝트를 생성할 때 이를 설정해야 하며,
47+
리소스에 원하는 특성에 대한 설명을 제공해야 한다.
48+
이를 _의도한 상태_ 라고 한다.
49+
50+
`status`는 쿠버네티스 시스템과 그 컴포넌트가 제공하고 업데이트하는
51+
오브젝트의 _현재 상태_ 를 설명한다. 쿠버네티스
52+
{{< glossary_tooltip text="컨트롤 플레인" term_id="control-plane" >}} 은 모든 오브젝트의
53+
실제 상태가 사용자가 제공한 원하는 상태와 일치하도록 지속적이고 능동적으로
54+
관리한다.
55+
56+
예를 들어, 쿠버네티스에서 디플로이먼트(Deployment)는 클러스터에서
57+
실행 중인 애플리케이션을 나타낼 수 있는 오브젝트이다. 디플로이먼트를 생성할 때,
58+
디플로이먼트 `spec`을 설정하여 애플리케이션 복제본 세 개를 실행하도록
59+
지정할 수 있다. 쿠버네티스 시스템은 디플로이먼트
60+
명세를 읽고 원하는 애플리케이션 인스턴스 세 개를 시작하며,
61+
명세에 맞게 상태를 업데이트 한다. 인스턴스 중 하나라도 실패하면
62+
(상태 변경), 쿠버네티스 시스템은
63+
명세와 상태 차이에 대응하여 수정 작업을 수행한다. 이 경우에는
64+
대체 인스턴스를 시작한다.
65+
66+
오브젝트 명세, 상태, 그리고 메타데이터에 대한 자세한 내용은
67+
[쿠버네티스 API 컨벤션](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md)을 참고한다.
68+
69+
### 쿠버네티스 오브젝트 설명
70+
71+
쿠버네티스에서 오브젝트를 생성할 때는 원하는 상태를 설명하는
72+
오브젝트 명세와 오브젝트에 대한 기본 정보 (예: 이름)을 제공해야 한다. 쿠버네티스 API를
73+
사용하여 오브젝트를 생성할 때 (직접 또는 `kubectl`을 통해), 해당 API 요청은
74+
요청 본문에 해당 정보를 JSON 형식으로 포함해야 한다.
75+
대부분의 경우, `kubectl`_매니페스트_ 라는 파일로 정보를 제공한다.
76+
관례적으로, 매니페스트는 YAML 형식이다 (JSON 형식을 사용할 수도 있다).
77+
`kubectl`과 같은 도구는 HTTP를 통해 API 요청을 할 때 매니페스트의 정보를
78+
JSON이나 다른 지원되는 직렬화 형식으로 변환한다.
79+
80+
다음은 쿠버네티스 배포에 필요한 필드와 오브젝트 명세를 보여주는 매니페스트
81+
예시이다.
82+
83+
{{% code_sample file="application/deployment.yaml" %}}
84+
85+
위와 같은 매니페스트 파일을 사용하여 디플로이먼트를 생성하는 한 가지 방법은 `kubectl` 명령줄 인터페이스에서
86+
[`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply) 명령을 사용하여
87+
`.yaml` 파일을 인수로 전달하는 것이다. 예를 들면 다음과 같다.
88+
89+
```shell
90+
kubectl apply -f https://k8s.io/examples/application/deployment.yaml
91+
```
92+
93+
출력은 다음과 유사하다.
94+
95+
```
96+
deployment.apps/nginx-deployment created
97+
```
98+
99+
### 필수 필드
100+
101+
생성하려는 쿠버네티스 오브젝트의 매니페스트 (YAML 또는 JSON 파일)에서
102+
다음 필드에 대한 값을 설정해야 한다.
103+
104+
* `apiVersion` - 이 오브젝트를 생성하는 데 사용하는 쿠버네티스 API 버전
105+
* `kind` - 생성하려는 오브젝트 종류
106+
* `metadata` - `name` 문자열, `UID` 및 선택적인 `namespace`을 포함하여 오브젝트를 고유하게 식별하는 데 도움이 되는 데이터
107+
* `spec` - 오브젝트에 대해 원하는 상태
108+
109+
오브젝트 `spec`의 정확한 형식은 모든 쿠버네티스 오브젝트마다 다르며, 해당
110+
오브젝트에 고유한 중첩 필드를 포함한다. [쿠버네티스 API 래퍼런스](/docs/reference/kubernetes-api/)를 통해
111+
쿠버네티스를 사용하여 생성할 수 있는 모든 오브젝트 명세 형식을 찾을 수 있다.
112+
113+
예를 들어, 파드 API 레퍼런스의
114+
[`spec` 필드](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec)를 참조한다.
115+
각 파드에 대해, `.spec` 필드는 파드와 원하는 상태 (예: 해당 파드 내
116+
각 컨테이너의 컨테이너 이미지 이름)을 지정한다.
117+
오브젝트 명세의 또 다른 예로는 스테이트풀셋(StatefulSet) API의
118+
[`spec` 필드](/docs/reference/kubernetes-api/workload-resources/stateful-set-v1/#StatefulSetSpec)
119+
있다. 스테이트풀셋을 위해, `.spec` 필드는 스테이트풀셋과 원하는 상태를
120+
지정한다.
121+
스테이트풀셋의 `.spec` 내에는 파드 오브젝트에 대한
122+
[템플릿](/ko/docs/concepts/workloads/pods/#파드-템플릿)이 있다. 이 템플릿은 스테이트풀셋 컨트롤러가 스테이트풀셋 명세를 충족하기 위해
123+
생성할 파드를 설명한다.
124+
다양한 유형의 오브젝트는 서로 다른 `.status`을 가진다. 다시 말하자면, API 래퍼런스 페이지에서는
125+
해당 `.status` 필드의 구조와 각 유형의 오브젝트에 대한 내용을 자세히 설명한다.
126+
127+
{{< note >}}
128+
YAML 구성 파일 작성에 대한 추가 정보는 [구성 모범 사례](/ko/docs/concepts/configuration/overview/)
129+
참조한다.
130+
{{< /note >}}
131+
132+
## 서버 측 필드 유효성 검사
133+
134+
쿠버네티스 v1.25부터, API 서버는 오브젝트에서 인식되지 않거나 중복된 필드를 감지하는 서버 측
135+
[필드 유효성 검사](/docs/reference/using-api/api-concepts/#field-validation)
136+
를 제공한다. 서버 측에서 `kubectl --validate`
137+
모든 기능을 제공한다.
138+
139+
`kubectl` 도구는 `--validate` 플래그를 사용하여 필드 유효성 검사 수준을 설정한다.
140+
`ignore`, `warn`, 또는 `strict` 값을 사용할 수 있으며, `true` (`strict`와 동일) 와 `false` (`ignore`와 동일) 값도
141+
사용할 수 있다. `kubectl` 의 기본 유효성 검사 설정은 `--validate=true`이다.
142+
143+
`Strict`
144+
: 엄격한 필드 검증, 검증 실패 시 오류 발생
145+
146+
`Warn`
147+
: 필드 검증이 수행되지만, 오류는 요청 실패가 아닌 경고로 표시된다.
148+
149+
`Ignore`
150+
: 서버 측 필드 검증이 수행되지 않는다.
151+
152+
`kubectl`이 필드 검증을 지원하려는 API 서버에 연결할 수 없는 경우,
153+
클라이언트 측 검증을 사용한다. 쿠버네티스 1.27 이상 버전은 항상 필드 검증을 제공하지만,
154+
이전 쿠버네티스 릴리즈에서는 그렇지 않을 수 있다. 클러스터가 v1.27 보다 이전 버전인 경우, 쿠버네티스 버전에 대한
155+
문서를 확인한다.
156+
157+
## {{% heading "whatsnext" %}}
158+
159+
쿠버네티스를 처음 접한다면, 다음 내용을 자세히 참고한다.
160+
161+
* 쿠버네티스의 가장 중요한 기본 오브젝트인 [파드](/ko/docs/concepts/workloads/pods/).
162+
* [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/) 오브젝트.
163+
* 쿠버네티스 [컨트롤러](/ko/docs/concepts/architecture/controller/).
164+
* [kubectl](/ko/docs/reference/kubectl/)[kubectl 명령어](/docs/reference/generated/kubectl/kubectl-commands).
165+
166+
[쿠버네티스 오브젝트 관리](/ko/docs/concepts/overview/working-with-objects/object-management/)
167+
`kubectl` 를 사용하여 오브젝트를 관리하는 방법에 대해 설명한다.
168+
아직 설치되어 있지 않다면, [kubectl 설치하기](/ko/docs/tasks/tools/#kubectl)가 필요할 수 있다.
169+
170+
전반적으로 쿠버네티스 API 대해 알아보려면 다음을 방문한다.
171+
172+
* [쿠버네티스 API 개요](/ko/docs/reference/using-api/)
173+
174+
쿠버네티스의 오브젝트에 대해 더 깊이 이해하려면, 이 섹션의 다른 페이지를 읽어본다.
175+
<!-- Docsy automatically includes a list of pages in the section -->

0 commit comments

Comments
 (0)