Skip to content

Commit 9fedbf6

Browse files
committed
[ko] Update outdated files in dev-1.21-ko.6 (p3)
1 parent 2ebbdd6 commit 9fedbf6

File tree

8 files changed

+175
-22
lines changed

8 files changed

+175
-22
lines changed

content/ko/docs/concepts/cluster-administration/manage-deployment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ kubectl apply -f https://k8s.io/examples/application/nginx/
5050
URL을 구성 소스로 지정할 수도 있다. 이는 GitHub에 체크인된 구성 파일에서 직접 배포하는 데 편리하다.
5151

5252
```shell
53-
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx/nginx-deployment.yaml
53+
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/application/nginx/nginx-deployment.yaml
5454
```
5555

5656
```shell

content/ko/docs/concepts/configuration/organize-cluster-access-kubeconfig.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ kubeconfig 파일들을 사용하여 클러스터, 사용자, 네임스페이스
1717
`kubeconfig`라는 이름의 파일이 있다는 의미는 아니다.
1818
{{< /note >}}
1919

20+
{{< warning >}}
21+
신뢰할 수 있는 소스의 kubeconfig 파일만 사용한다. 특수 제작된 kubeconfig 파일을 사용하면 악성 코드가 실행되거나 파일이 노출될 수 있다.
22+
신뢰할 수 없는 kubeconfig 파일을 사용해야 하는 경우 셸 스크립트를 사용하는 경우처럼 먼저 신중하게 검사한다.
23+
{{< /warning>}}
24+
2025
기본적으로 `kubectl``$HOME/.kube` 디렉터리에서 `config`라는 이름의 파일을 찾는다.
2126
`KUBECONFIG` 환경 변수를 설정하거나
2227
[`--kubeconfig`](/docs/reference/generated/kubectl/kubectl/) 플래그를 지정해서
@@ -154,4 +159,3 @@ kubeconfig 파일에서 파일과 경로 참조는 kubeconfig 파일의 위치
154159

155160

156161

157-

content/ko/docs/concepts/containers/images.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ weight: 10
7777

7878
`imagePullPolicy` 가 특정값 없이 정의되면, `Always` 로 설정된다.
7979

80+
### 이미지풀백오프(ImagePullBackOff)
81+
82+
kubelet이 컨테이너 런타임을 사용하여 파드의 컨테이너 생성을 시작할 때,
83+
`ImagePullBackOff`로 인해 컨테이너가
84+
[Waiting](/ko/docs/concepts/workloads/pods/pod-lifecycle/#container-state-waiting) 상태에 있을 수 있다.
85+
86+
`ImagePullBackOff`라는 상태는 (이미지 이름이 잘못됨, 또는 `imagePullSecret` 없이
87+
비공개 레지스트리에서 풀링 시도 등의 이유로) 쿠버네티스가 컨테이너 이미지를
88+
가져올 수 없기 때문에 컨테이너를 실행할 수 없음을 의미한다. `BackOff`라는 단어는
89+
쿠버네티스가 백오프 딜레이를 증가시키면서 이미지 풀링을 계속 시도할 것임을 나타낸다.
90+
91+
쿠버네티스는 시간 간격을 늘려가면서 시도를 계속하며, 시간 간격의 상한은 쿠버네티스 코드에
92+
300초(5분)로 정해져 있다.
93+
8094
## 이미지 인덱스가 있는 다중 아키텍처 이미지
8195

8296
바이너리 이미지를 제공할 뿐만 아니라, 컨테이너 레지스트리는 [컨테이너 이미지 인덱스](https://github.com/opencontainers/image-spec/blob/master/image-index.md)를 제공할 수도 있다. 이미지 인덱스는 컨테이너의 아키텍처별 버전에 대한 여러 [이미지 매니페스트](https://github.com/opencontainers/image-spec/blob/master/manifest.md)를 가리킬 수 있다. 아이디어는 이미지의 이름(예를 들어, `pause`, `example/mycontainer`, `kube-apiserver`)을 가질 수 있다는 것이다. 그래서 다른 시스템들이 사용하고 있는 컴퓨터 아키텍처에 적합한 바이너리 이미지를 가져올 수 있다.

content/ko/docs/concepts/extend-kubernetes/operator.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,15 @@ kubectl edit SampleDB/example-database # 일부 설정을 수동으로 변경하
116116
* [Charmed Operator Framework](https://juju.is/)
117117
* [kubebuilder](https://book.kubebuilder.io/) 사용하기
118118
* [KUDO](https://kudo.dev/) (Kubernetes Universal Declarative Operator)
119-
* 웹훅(WebHook)과 함께 [Metacontroller](https://metacontroller.app/)
119+
* 웹훅(WebHook)과 함께 [Metacontroller](https://metacontroller.github.io/metacontroller/intro.html)
120120
사용하여 직접 구현하기
121121
* [오퍼레이터 프레임워크](https://operatorframework.io)
122122
* [shell-operator](https://github.com/flant/shell-operator)
123123

124124
## {{% heading "whatsnext" %}}
125125

126126

127+
* {{< glossary_tooltip text="CNCF" term_id="cncf" >}} [오퍼레이터 백서](https://github.com/cncf/tag-app-delivery/blob/eece8f7307f2970f46f100f51932db106db46968/operator-wg/whitepaper/Operator-WhitePaper_v1-0.md) 읽어보기
127128
* [사용자 정의 리소스](/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources/)에 대해 더 알아보기
128129
* [OperatorHub.io](https://operatorhub.io/)에서 유스케이스에 맞는 이미 만들어진 오퍼레이터 찾기
129130
* 다른 사람들이 사용할 수 있도록 자신의 오퍼레이터를 [게시](https://operatorhub.io/)하기

content/ko/docs/concepts/policy/pod-security-policy.md

Lines changed: 55 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ weight: 30
1111

1212
{{< feature-state for_k8s_version="v1.21" state="deprecated" >}}
1313

14-
파드시큐리티폴리시(PodSecurityPolicy)는 쿠버네티스 v1.21부터 더이상 사용되지 않으며, v1.25에서 제거된다.
14+
파드시큐리티폴리시(PodSecurityPolicy)는 쿠버네티스 v1.21부터 더이상 사용되지 않으며, v1.25에서 제거된다. 사용 중단에 대한 상세 사항은
15+
[파드시큐리티폴리시 사용 중단: 과거, 현재, 그리고 미래](/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/)를 참조한다.
1516

1617
파드 시큐리티 폴리시를 사용하면 파드 생성 및 업데이트에 대한 세분화된 권한을
1718
부여할 수 있다.
@@ -48,10 +49,9 @@ _Pod Security Policy_ 는 파드 명세의 보안 관련 측면을 제어하는
4849

4950
## 파드 시큐리티 폴리시 활성화
5051

51-
파드 시큐리티 폴리시 제어는 선택 사항(하지만 권장함)인
52-
[어드미션
53-
컨트롤러](/docs/reference/access-authn-authz/admission-controllers/#podsecuritypolicy)
54-
구현된다. [어드미션 컨트롤러 활성화](/docs/reference/access-authn-authz/admission-controllers/#how-do-i-turn-on-an-admission-control-plug-in)하면
52+
파드 시큐리티 폴리시 제어는 선택 사항인 [어드미션
53+
컨트롤러](/docs/reference/access-authn-authz/admission-controllers/#podsecuritypolicy)로 구현된다.
54+
[어드미션 컨트롤러를 활성화](/docs/reference/access-authn-authz/admission-controllers/#how-do-i-turn-on-an-admission-control-plug-in)하면
5555
파드시큐리티폴리시가 적용되지만,
5656
정책을 승인하지 않고 활성화하면 클러스터에
5757
**파드가 생성되지 않는다.**
@@ -110,11 +110,15 @@ roleRef:
110110
name: <role name>
111111
apiGroup: rbac.authorization.k8s.io
112112
subjects:
113-
# Authorize specific service accounts:
113+
# 네임스페이스의 모든 서비스 어카운트 승인(권장):
114+
- kind: Group
115+
apiGroup: rbac.authorization.k8s.io
116+
name: system:serviceaccounts:<authorized namespace>
117+
# 특정 서비스 어카운트 승인(권장하지 않음):
114118
- kind: ServiceAccount
115119
name: <authorized service account name>
116120
namespace: <authorized pod namespace>
117-
# Authorize specific users (not recommended):
121+
# 특정 사용자 승인(권장하지 않음):
118122
- kind: User
119123
apiGroup: rbac.authorization.k8s.io
120124
name: <authorized user name>
@@ -124,21 +128,55 @@ subjects:
124128
실행되는 파드에 대해서만 사용 권한을 부여한다. 네임스페이스에서 실행되는 모든 파드에 접근 권한을
125129
부여하기 위해 시스템 그룹과 쌍을 이룰 수 있다.
126130
```yaml
127-
# Authorize all service accounts in a namespace:
131+
# 네임스페이스의 모든 서비스 어카운트 승인:
128132
- kind: Group
129133
apiGroup: rbac.authorization.k8s.io
130134
name: system:serviceaccounts
131-
# Or equivalently, all authenticated users in a namespace:
135+
# 또는 동일하게, 네임스페이스의 모든 승인된 사용자에게 사용 권한 부여
132136
- kind: Group
133137
apiGroup: rbac.authorization.k8s.io
134138
name: system:authenticated
135139
```
136140

137141
RBAC 바인딩에 대한 자세한 예는,
138-
[역할 바인딩 예제](/docs/reference/access-authn-authz/rbac#role-binding-examples)를 참고하길 바란다.
142+
[역할 바인딩 예제](/docs/reference/access-authn-authz/rbac#role-binding-examples)를 참고한다.
139143
파드시큐리티폴리시 인증에 대한 전체 예제는
140-
[아래](#예제)를 참고하길 바란다.
141-
144+
[아래](#예제)를 참고한다.
145+
146+
### 추천 예제
147+
148+
파드시큐리티폴리시는 새롭고 간결해진 `PodSecurity` {{< glossary_tooltip
149+
text="어드미션 컨트롤러" term_id="admission-controller" >}}로 대체되고 있다.
150+
이 변경에 대한 상세사항은
151+
[파드시큐리티폴리시 사용 중단: 과거, 현재, 그리고 미래](/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/)를 참조한다.
152+
다음 가이드라인을 참조하여 파드시큐리티폴리시를 새로운 어드미션 컨트롤러로 쉽게 전환할 수 있다.
153+
154+
1. 파드시큐리티폴리시를 [파드 보안 표준](/docs/concepts/security/pod-security-standards/)에 의해 정의된 폴리시로 한정한다.
155+
- {{< example file="policy/privileged-psp.yaml" >}}Privileged{{< /example >}}
156+
- {{< example file="policy/baseline-psp.yaml" >}}Baseline{{< /example >}}
157+
- {{< example file="policy/restricted-psp.yaml" >}}Restricted{{< /example >}}
158+
159+
2. `system:serviceaccounts:<namespace>` (여기서 `<namespace>`는 타겟 네임스페이스) 그룹을 사용하여
160+
파드시큐리티폴리시를 전체 네임스페이스에만 바인드한다. 예시는 다음과 같다.
161+
162+
```yaml
163+
apiVersion: rbac.authorization.k8s.io/v1
164+
# 이 클러스터롤바인딩(ClusterRoleBinding)을 통해 "development" 네임스페이스의 모든 파드가 기준 파드시큐리티폴리시(PSP)를 사용할 수 있다.
165+
kind: ClusterRoleBinding
166+
metadata:
167+
name: psp-baseline-namespaces
168+
roleRef:
169+
kind: ClusterRole
170+
name: psp-baseline
171+
apiGroup: rbac.authorization.k8s.io
172+
subjects:
173+
- kind: Group
174+
name: system:serviceaccounts:development
175+
apiGroup: rbac.authorization.k8s.io
176+
- kind: Group
177+
name: system:serviceaccounts:canary
178+
apiGroup: rbac.authorization.k8s.io
179+
```
142180

143181
### 문제 해결
144182

@@ -661,5 +699,10 @@ spec:
661699

662700
## {{% heading "whatsnext" %}}
663701

702+
- [파드시큐리티폴리시 사용 중단: 과거, 현재, 그리고
703+
미래](/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/)에서
704+
파드시큐리티폴리시의 미래에 대해 알아본다.
705+
664706
- 폴리시 권장 사항에 대해서는 [파드 보안 표준](/docs/concepts/security/pod-security-standards/)을 참조한다.
707+
665708
- API 세부 정보는 [파드 시큐리티 폴리시 레퍼런스](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritypolicy-v1beta1-policy) 참조한다.

content/ko/docs/concepts/scheduling-eviction/taint-and-toleration.md

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
---
2+
3+
4+
5+
26
title: 테인트(Taints)와 톨러레이션(Tolerations)
37
content_type: concept
48
weight: 40
@@ -260,13 +264,27 @@ tolerations:
260264

261265
이렇게 하면 이러한 문제로 인해 데몬셋 파드가 축출되지 않는다.
262266

263-
## 컨디션별 노드 테인트하기
267+
## 컨디션을 기준으로 노드 테인트하기
264268

265-
노드 라이프사이클 컨트롤러는 `NoSchedule` 이펙트가 있는 노드 컨디션에 해당하는
266-
테인트를 자동으로 생성한다.
267-
마찬가지로 스케줄러는 노드 컨디션을 확인하지 않는다. 대신 스케줄러는 테인트를 확인한다. 이렇게 하면 노드 컨디션이 노드에 스케줄된 내용에 영향을 미치지 않는다. 사용자는 적절한 파드 톨러레이션을 추가하여 노드의 일부 문제(노드 컨디션으로 표시)를 무시하도록 선택할 수 있다.
269+
컨트롤 플레인은 노드 {{<glossary_tooltip text="컨트롤러" term_id="controller">}}를 이용하여
270+
[노드 조건](/docs/concepts/scheduling-eviction/node-pressure-eviction/)에 대한 `NoSchedule` 효과를 사용하여 자동으로 테인트를 생성한다.
268271

269-
쿠버네티스 1.8 버전부터 데몬셋 컨트롤러는 다음의 `NoSchedule` 톨러레이션을
272+
스케줄러는 스케줄링 결정을 내릴 때 노드 조건을 확인하는 것이 아니라 테인트를 확인한다.
273+
이렇게 하면 노드 조건이 스케줄링에 직접적인 영향을 주지 않는다.
274+
예를 들어 `DiskPressure` 노드 조건이 활성화된 경우
275+
컨트롤 플레인은 `node.kubernetes.io/disk-pressure` 테인트를 추가하고 영향을 받는 노드에 새 파드를 할당하지 않는다.
276+
`MemoryPressure` 노드 조건이 활성화되면
277+
컨트롤 플레인이 `node.kubernetes.io/memory-pressure` 테인트를 추가한다.
278+
279+
새로 생성된 파드에 파드 톨러레이션을 추가하여 노드 조건을 무시하도록 할 수 있다.
280+
또한 컨트롤 플레인은 `BestEffort` 이외의
281+
{{< glossary_tooltip text="QoS 클래스" term_id="qos-class" >}}를 가지는 파드에
282+
`node.kubernetes.io/memory-pressure` 톨러레이션을 추가한다.
283+
이는 쿠버네티스가 `Guaranteed` 또는 `Burstable` QoS 클래스를 갖는 파드(메모리 요청이 설정되지 않은 파드 포함)를
284+
마치 그 파드들이 메모리 압박에 대처 가능한 것처럼 다루는 반면,
285+
새로운 `BestEffort` 파드는 영향을 받는 노드에 할당하지 않기 때문이다.
286+
287+
데몬셋 컨트롤러는 다음의 `NoSchedule` 톨러레이션을
270288
모든 데몬에 자동으로 추가하여, 데몬셋이 중단되는 것을 방지한다.
271289

272290
* `node.kubernetes.io/memory-pressure`
@@ -278,7 +296,6 @@ tolerations:
278296
이러한 톨러레이션을 추가하면 이전 버전과의 호환성이 보장된다. 데몬셋에
279297
임의의 톨러레이션을 추가할 수도 있다.
280298

281-
282299
## {{% heading "whatsnext" %}}
283300

284301
* [리소스 부족 다루기](/docs/concepts/scheduling-eviction/node-pressure-eviction/)와 어떻게 구성하는지에 대해 알아보기

content/ko/docs/concepts/services-networking/dns-pod-service.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ options ndots:5
5050
```
5151

5252
요약하면, _test_ 네임스페이스에 있는 파드는 `data.prod` 또는
53-
`data.prod.cluster.local` 중 하나를 통해 성공적으로 해석될 수 있다.
53+
`data.prod.svc.cluster.local` 중 하나를 통해 성공적으로 해석될 수 있다.
5454

5555
### DNS 레코드
5656

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
apiVersion: policy/v1beta1
2+
kind: PodSecurityPolicy
3+
metadata:
4+
name: baseline
5+
annotations:
6+
# 선택 사항: 기본 AppArmor 프로파일을 활성화한다. 이 경우 기본값을 설정해야 한다.
7+
apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
8+
apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
9+
seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
10+
spec:
11+
privileged: false
12+
# Moby의 기본 캐퍼빌리티 집합(NET_RAW는 제외되었음)
13+
allowedCapabilities:
14+
- 'CHOWN'
15+
- 'DAC_OVERRIDE'
16+
- 'FSETID'
17+
- 'FOWNER'
18+
- 'MKNOD'
19+
- 'SETGID'
20+
- 'SETUID'
21+
- 'SETFCAP'
22+
- 'SETPCAP'
23+
- 'NET_BIND_SERVICE'
24+
- 'SYS_CHROOT'
25+
- 'KILL'
26+
- 'AUDIT_WRITE'
27+
# hostpath를 제외한 모든 볼륨 타입을 허용
28+
volumes:
29+
# '코어' 볼륨 타입
30+
- 'configMap'
31+
- 'emptyDir'
32+
- 'projected'
33+
- 'secret'
34+
- 'downwardAPI'
35+
# 클러스터 관리자에 의해 구성된 휘발성 CSI 드라이버와 퍼시스턴트볼륨(PersistentVolume)은 사용하기에 안전하다고 가정한다.
36+
- 'csi'
37+
- 'persistentVolumeClaim'
38+
- 'ephemeral'
39+
# hostpath 타입이 아닌 다른 모든 볼륨 타입을 허용
40+
- 'awsElasticBlockStore'
41+
- 'azureDisk'
42+
- 'azureFile'
43+
- 'cephFS'
44+
- 'cinder'
45+
- 'fc'
46+
- 'flexVolume'
47+
- 'flocker'
48+
- 'gcePersistentDisk'
49+
- 'gitRepo'
50+
- 'glusterfs'
51+
- 'iscsi'
52+
- 'nfs'
53+
- 'photonPersistentDisk'
54+
- 'portworxVolume'
55+
- 'quobyte'
56+
- 'rbd'
57+
- 'scaleIO'
58+
- 'storageos'
59+
- 'vsphereVolume'
60+
hostNetwork: false
61+
hostIPC: false
62+
hostPID: false
63+
readOnlyRootFilesystem: false
64+
runAsUser:
65+
rule: 'RunAsAny'
66+
seLinux:
67+
# 이 파드시큐리티폴리시는 노드가 SELinux가 아닌 AppArmor를 사용하고 있다고 가정한다.
68+
# 파드시큐리티폴리시 SELinux API는 SELinux 파드 보안 표준을 표현할 수 없으므로,
69+
# SELinux를 사용하는 경우 더 제한적인 기본값을 선택해야 한다.
70+
rule: 'RunAsAny'
71+
supplementalGroups:
72+
rule: 'RunAsAny'
73+
fsGroup:
74+
rule: 'RunAsAny'

0 commit comments

Comments
 (0)