Merge pull request #30023 from gochist/ko-outdated-m11
[ko] Update outdated content in dev-1.22-ko.2 (Task M11)pull/30315/head
commit
3feb2bdf1b
|
@ -39,14 +39,6 @@ weight: 10
|
|||
배치할 수 있는 위치에 대한 추가 규칙이 있다.
|
||||
태그를 지정하지 않으면, 쿠버네티스는 태그 `latest` 를 의미한다고 가정한다.
|
||||
|
||||
{{< caution >}}
|
||||
프로덕션에서 컨테이너를 배포할 때는 `latest` 태그를 사용하지 않아야 한다.
|
||||
실행 중인 이미지 버전을 추적하기가 어렵고
|
||||
이전에 잘 동작하던 버전으로 롤백하기가 더 어렵다.
|
||||
|
||||
대신, `v1.42.0` 과 같은 의미있는 태그를 지정한다.
|
||||
{{< /caution >}}
|
||||
|
||||
## 이미지 업데이트
|
||||
|
||||
{{< glossary_tooltip text="디플로이먼트" term_id="deployment" >}},
|
||||
|
@ -57,13 +49,62 @@ weight: 10
|
|||
{{< glossary_tooltip text="kubelet" term_id="kubelet" >}}이 이미 존재하는
|
||||
이미지에 대한 풀을 생략하게 한다.
|
||||
|
||||
만약 항상 풀을 강제하고 싶다면, 다음 중 하나를 수행하면 된다.
|
||||
### 이미지 풀(pull) 정책
|
||||
|
||||
- 컨테이너의 `imagePullPolicy`를 `Always`로 설정.
|
||||
- `imagePullPolicy`를 생략하고 `:latest`를 사용할 이미지의 태그로 사용,
|
||||
쿠버네티스는 정책을 `Always`로 설정한다.
|
||||
- `imagePullPolicy`와 사용할 이미지의 태그를 생략.
|
||||
- [AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) 어드미션 컨트롤러를 활성화.
|
||||
컨테이너에 대한 `imagePullPolicy`와 이미지의 태그는
|
||||
[kubelet](/docs/reference/command-line-tools-reference/kubelet/)이 특정 이미지를 풀(다운로드)하려고 할 때 영향을 준다.
|
||||
|
||||
다음은 `imagePullPolicy`에 설정할 수 있는 값의 목록과 효과이다.
|
||||
|
||||
`IfNotPresent`
|
||||
: 이미지가 로컬에 없는 경우에만 내려받는다.
|
||||
|
||||
`Always`
|
||||
: kubelet이 컨테이너를 기동할 때마다, kubelet이 컨테이너 이미지 레지스트리에 이름과 이미지의
|
||||
[다이제스트](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier)가 있는지 질의한다.
|
||||
일치하는 다이제스트를 가진 컨테이너 이미지가 로컬에 있는 경우, kubelet은 캐시된 이미지를 사용한다.
|
||||
이외의 경우, kubelet은 검색된 다이제스트를 가진 이미지를 내려받아서
|
||||
컨테이너를 기동할 때 사용한다.
|
||||
|
||||
`Never`
|
||||
: kubelet은 이미지를 가져오려고 시도하지 않는다. 이미지가 어쨌든 이미 로컬에 존재하는
|
||||
경우, kubelet은 컨테이너 기동을 시도한다. 이외의 경우 기동은 실패한다.
|
||||
보다 자세한 내용은 [미리 내려받은 이미지](#pre-pulled-images)를 참조한다.
|
||||
|
||||
이미지 제공자에 앞서 깔린 캐시의 의미 체계는 레지스트리에 안정적으로 접근할 수 있는 한,
|
||||
`imagePullPolicy: Always`인 경우 조차도 효율적이다.
|
||||
컨테이너 런타임은 노드에 이미 존재하는 이미지 레이어를 알고
|
||||
다시 내려받지 않는다.
|
||||
|
||||
{{< note >}}
|
||||
프로덕션 환경에서 컨테이너를 배포하는 경우 `:latest` 태그 사용을 지양해야 하는데,
|
||||
이미지의 어떤 버전이 기동되고 있는지 추적이 어렵고 제대로 롤백하기 어렵게 되기 때문이다.
|
||||
|
||||
대신, `v1.42.0`과 같이 의미있는 태그를 명기한다.
|
||||
{{< /note >}}
|
||||
|
||||
파드가 항상 컨테이너 이미지의 같은 버전을 사용하는 것을 확실히 하려면,
|
||||
이미지의 다이제스트를 명기할 수 있다.
|
||||
`<image-name>:<tag>`를 `<image-name>@<digest>`로 교체한다.
|
||||
(예를 들어, `image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2`).
|
||||
|
||||
이미지 태그를 사용하는 경우, 이미지 레지스트리에서 한 이미지를 나타내는 태그에 코드를 변경하게 되면, 기존 코드와 신규 코드를 구동하는 파드가 섞이게 되고 만다. 이미지 다이제스트를 통해 이미지의 특정 버전을 유일하게 식별할 수 있기 때문에, 쿠버네티스는 매번 해당 이미지 이름과 다이제스트가 명시된 컨테이너를 기동해서 같은 코드를 구동한다. 이미지를 명시하는 것은 구동할 코드를 고정시켜서 레지스트리에서의 변경으로 인해 버전이 섞이는 일이 발생하지 않도록 해준다.
|
||||
|
||||
파드(및 파드 템플릿)가 생성될 때 구동 중인 워크로드가 태그가 아닌 이미지 다이제스트를 통해 정의되도록 조작해주는
|
||||
서드-파티 [어드미션 컨트롤러](/docs/reference/access-authn-authz/admission-controllers/)가 있다.
|
||||
이는 레지스트리에서 태그가 변경되는 일이 발생해도
|
||||
구동 중인 워크로드가 모두 같은 코드를 사용하고 있다는 것을 보장하기를 원하는 경우 유용할 것이다.
|
||||
|
||||
#### 기본 이미지 풀 정책 {#imagepullpolicy-defaulting}
|
||||
|
||||
사용자(또는 컨트롤러)가 신규 파드를 API 서버에 요청할 때,
|
||||
특정 조건에 부합하면 클러스터가 `imagePullPolicy` 필드를 설정한다.
|
||||
|
||||
- `imagePullPolicy` 필드를 생략하고 컨테이너 이미지의 태그가
|
||||
`:latest`인 경우, `imagePullPolicy`는 자동으로 `Always`로 설정된다.
|
||||
- `imagePullPolicy` 필드를 생략하고 컨테이너 이미지의 태그를 명기하지 않은 경우,
|
||||
`imagePullPolicy`는 자동으로 `Always`로 설정된다.
|
||||
- `imagePullPolicy` 필드를 생략하고, 명기한 컨테이너 이미지의 태그가 `:latest`가 아니면, `imagePullPolicy`는 자동으로 `IfNotPresent`로 설정된다.
|
||||
|
||||
{{< note >}}
|
||||
컨테이너의 `imagePullPolicy` 값은 오브젝트가 처음 _created_ 일 때 항상
|
||||
|
@ -75,7 +116,16 @@ weight: 10
|
|||
처음 생성 한 후 모든 오브젝트의 풀 정책을 수동으로 변경해야 한다.
|
||||
{{< /note >}}
|
||||
|
||||
`imagePullPolicy` 가 특정값 없이 정의되면, `Always` 로 설정된다.
|
||||
#### 이미지 풀 강제
|
||||
|
||||
이미지를 내려받도록 강제하려면, 다음 중 한가지 방법을 사용한다.
|
||||
|
||||
- 컨테이너의 `imagePullPolicy`를 `Always`로 설정한다.
|
||||
- `imagePullPolicy`를 생략하고 사용할 이미지 태그로 `:latest`를 사용한다.
|
||||
그러면 사용자가 파드를 요청할 때 쿠버네티스가 정책을 `Always`로 설정한다.
|
||||
- `imagePullPolicy`와 사용할 이미지의 태그를 생략한다.
|
||||
그러면 사용자가 파드를 요청할 때 쿠버네티스가 정책을 `Always`로 설정한다.
|
||||
- [AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) 어드미션 컨트롤러를 활성화 한다.
|
||||
|
||||
### 이미지풀백오프(ImagePullBackOff)
|
||||
|
||||
|
@ -208,7 +258,7 @@ kubectl describe pods/private-image-test-1 | grep 'Failed'
|
|||
프라이빗 레지스트리 키가 `.docker/config.json`에 추가되고 나면 모든 파드는
|
||||
프라이빗 레지스트리의 이미지에 읽기 접근 권한을 가지게 될 것이다.
|
||||
|
||||
### 미리 내려받은 이미지
|
||||
### 미리 내려받은 이미지 {#pre-pulled-images}
|
||||
|
||||
{{< note >}}
|
||||
이 방법은 노드의 구성을 제어할 수 있는 경우에만 적합하다. 이 방법은
|
||||
|
@ -328,6 +378,7 @@ imagePullSecrets을 셋팅하여 자동화할 수 있다.
|
|||
다중 레지스트리에 접근해야 하는 경우, 각 레지스트리에 대해 하나의 시크릿을 생성할 수 있다.
|
||||
Kubelet은 모든 `imagePullSecrets` 파일을 하나의 가상 `.docker/config.json` 파일로 병합한다.
|
||||
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
* [OCI 이미지 매니페스트 명세](https://github.com/opencontainers/image-spec/blob/master/manifest.md) 읽어보기.
|
||||
|
|
Loading…
Reference in New Issue