First Korean l10n work for release-1.19
- Translate tasks/job/parallel-processing-expansion.md into Korean (#23544) - Fix issue with ko/docs/concepts/workloads/controllers/job.md (#23720) - Translate reference/scheduling/policies.md in Korean (#23690) - Update outdated files in the dev-1.19-ko.1 branch (#23702) - Modify translation access by Korean glossary (#23627) Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: junghyeonsu <54893898+junghyeonsu@users.noreply.github.com> Co-authored-by: coolguyhong <podolsmith@naver.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: 엔드포인트슬라이스
|
||||
content_type: concept
|
||||
weight: 15
|
||||
weight: 35
|
||||
---
|
||||
|
||||
|
||||
@@ -21,7 +21,9 @@ _엔드포인트슬라이스_ 는 쿠버네티스 클러스터 내의 네트워
|
||||
|
||||
엔드포인트 API는 쿠버네티스에서 네트워크 엔드포인트를 추적하는
|
||||
간단하고 직접적인 방법을 제공한다. 불행하게도 쿠버네티스 클러스터와
|
||||
서비스가 점점 더 커짐에 따라, 이 API의 한계가 더욱 눈에 띄게 되었다.
|
||||
{{< glossary_tooltip text="서비스" term_id="service" >}}가 점점 더
|
||||
커짐에 따라, 이 API의 한계가 더욱 눈에 띄게
|
||||
되었다.
|
||||
특히나, 많은 수의 네트워크 엔드포인트로 확장하는 것에
|
||||
어려움이 있었다.
|
||||
|
||||
@@ -34,16 +36,17 @@ _엔드포인트슬라이스_ 는 쿠버네티스 클러스터 내의 네트워
|
||||
|
||||
## 엔드포인트슬라이스 리소스 {#endpointslice-resource}
|
||||
|
||||
쿠버네티스에서 EndpointSlice는 일련의 네트워크 엔드 포인트에 대한
|
||||
쿠버네티스에서 엔드포인트슬라이스는 일련의 네트워크 엔드포인트에 대한
|
||||
참조를 포함한다. 쿠버네티스 서비스에 {{< glossary_tooltip text="셀렉터"
|
||||
term_id="selector" >}} 가 지정되면 EndpointSlice
|
||||
컨트롤러는 자동으로 엔드포인트슬라이스를 생성한다. 이 엔드포인트슬라이스는
|
||||
term_id="selector" >}}가 지정되면 컨트롤 플레인은 자동으로
|
||||
엔드포인트슬라이스를 생성한다. 이 엔드포인트슬라이스는
|
||||
서비스 셀렉터와 매치되는 모든 파드들을 포함하고 참조한다. 엔드포인트슬라이스는
|
||||
고유한 서비스와 포트 조합을 통해 네트워크 엔드포인트를 그룹화 한다.
|
||||
EndpointSlice 오브젝트의 이름은 유효한
|
||||
프로토콜, 포트 번호 및 서비스 이름의 고유한 조합을 통해 네트워크 엔드포인트를
|
||||
그룹화한다.
|
||||
엔드포인트슬라이스 오브젝트의 이름은 유효한
|
||||
[DNS 서브도메인 이름](/ko/docs/concepts/overview/working-with-objects/names/#dns-서브도메인-이름)이어야 한다.
|
||||
|
||||
예를 들어, 여기에 `example` 쿠버네티스 서비스를 위한 EndpointSlice
|
||||
예를 들어, 여기에 `example` 쿠버네티스 서비스를 위한 엔드포인트슬라이스
|
||||
리소스 샘플이 있다.
|
||||
|
||||
```yaml
|
||||
@@ -69,28 +72,30 @@ endpoints:
|
||||
topology.kubernetes.io/zone: us-west2-a
|
||||
```
|
||||
|
||||
기본적으로, EndpointSlice 컨트롤러가 관리하는 엔드포인트슬라이스에는
|
||||
각각 100개 이하의 엔드포인트를 가지고 있다. 이 스케일 아래에서 엔드포인트슬라이스는
|
||||
엔드포인트 및 서비스와 1:1로 매핑해야하며, 유사한 성능을 가져야 한다.
|
||||
기본적으로, 컨트롤 플레인은 각각 100개 이하의 엔드포인트를
|
||||
갖도록 엔드포인트슬라이스를 생성하고 관리한다. `--max-endpoints-per-slice`
|
||||
{{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}
|
||||
플래그를 사용하여, 최대 1000개까지 구성할 수 있다.
|
||||
|
||||
엔드포인트슬라이스는 내부 트래픽을 라우트하는 방법에 대해 kube-proxy에
|
||||
엔드포인트슬라이스는 내부 트래픽을 라우트하는 방법에 대해
|
||||
{{< glossary_tooltip term_id="kube-proxy" text="kube-proxy" >}}에
|
||||
신뢰할 수 있는 소스로 역할을 할 수 있다. 이를 활성화 하면, 많은 수의 엔드포인트를 가지는
|
||||
서비스에 대해 성능 향상을 제공해야 한다.
|
||||
|
||||
### 주소 유형
|
||||
|
||||
EndpointSlice는 다음 주소 유형을 지원한다.
|
||||
엔드포인트슬라이스는 다음 주소 유형을 지원한다.
|
||||
|
||||
* IPv4
|
||||
* IPv6
|
||||
* FQDN (Fully Qualified Domain Name)
|
||||
* FQDN (전체 주소 도메인 이름)
|
||||
|
||||
### 토폴로지
|
||||
### 토폴로지 정보 {#토폴로지}
|
||||
|
||||
엔드포인트슬라이스 내 각 엔드포인트는 연관된 토폴로지 정보를 포함할 수 있다.
|
||||
이는 해당 노드, 영역 그리고 지역에 대한 정보가 포함된
|
||||
엔드포인트가 있는 위치를 나타나는데 사용 한다. 값을 사용할 수 있으면
|
||||
다음의 토폴로지 레이블이 엔드포인트슬라이스 컨트롤러에 의해 설정된다.
|
||||
엔드포인트가 있는 위치를 나타나는데 사용 한다. 값을 사용할 수 있으면,
|
||||
컨트롤 플레인은 엔드포인트슬라이스에 대해 다음의 토폴로지 레이블을 설정한다.
|
||||
|
||||
* `kubernetes.io/hostname` - 이 엔드포인트가 있는 노드의 이름.
|
||||
* `topology.kubernetes.io/zone` - 이 엔드포인트가 있는 영역의 이름.
|
||||
@@ -103,37 +108,48 @@ NodeName 필드 값을 나타낸다. 영역 및 지역 레이블은 해당
|
||||
|
||||
### 관리
|
||||
|
||||
기본적으로 엔드포인트슬라이스는 엔드포인트슬라이스 컨트롤러에의해
|
||||
생성되고 관리된다. 서비스 메시 구현과 같은 다른 엔드포인트슬라이스
|
||||
유스 케이스는 다른 엔터티나 컨트롤러가 추가 엔드포인트슬라이스
|
||||
집합을 관리할 수 있게 할 수 있다. 여러 엔티티가 서로 간섭하지 않고
|
||||
엔드포인트슬라이스를 관리할 수 있도록 엔드포인트슬라이스를 관리하는
|
||||
엔티티를 나타내는데 `endpointslice.kubernetes.io/managed-by` 레이블이 사용된다.
|
||||
엔드포인트슬라이스 컨트롤러는 관리하는 모든 엔드포인트
|
||||
슬라이스에 레이블의 값으로 `endpointslice-controller.k8s.io` 를 설정한다.
|
||||
엔드포인트슬라이스를 관리하는 다른 엔티티도 이 레이블에
|
||||
고유한 값을 설정해야 한다.
|
||||
대부분의 경우, 컨트롤 플레인(특히, 엔드포인트 슬라이스
|
||||
{{< glossary_tooltip text="컨트롤러" term_id="controller" >}})는
|
||||
엔드포인트슬라이스 오브젝트를 생성하고 관리한다. 다른 엔티티나 컨트롤러가 추가
|
||||
엔드포인트슬라이스 집합을 관리하게 할 수 있는 서비스 메시 구현과 같이
|
||||
엔드포인트슬라이스에 대한 다양한 다른 유스케이스가 있다.
|
||||
|
||||
여러 엔티티가 서로 간섭하지 않고 엔드포인트슬라이스를
|
||||
관리할 수 있도록 쿠버네티스는 엔드포인트슬라이스를 관리하는
|
||||
엔티티를 나타내는 `endpointslice.kubernetes.io/managed-by`
|
||||
{{< glossary_tooltip term_id="label" text="레이블" >}}을
|
||||
정의한다.
|
||||
엔드포인트 슬라이스 컨트롤러는 관리하는 모든 엔드포인트슬라이스에 레이블의 값으로
|
||||
`endpointslice-controller.k8s.io` 를 설정한다. 엔드포인트슬라이스를
|
||||
관리하는 다른 엔티티도 이 레이블에 고유한 값을 설정해야 한다.
|
||||
|
||||
### 소유권
|
||||
|
||||
대부분의 유스 케이스에서 엔드포인트를 추적하는 서비스가 엔드포인트슬라이스를
|
||||
소유한다. 이는 각 엔드포인트슬라이스의 참조와 서비스에 속하는 모든
|
||||
엔드포인트슬라이스를 간단하게 조회할 수 있는 `kubernetes.io/service-name`
|
||||
레이블로 표시된다.
|
||||
대부분의 유스케이스에서, 엔드포인트 슬라이스 오브젝트가 엔드포인트를
|
||||
추적하는 서비스가 엔드포인트슬라이스를 소유한다. 이 소유권은 각 엔드포인트슬라이스의 소유자
|
||||
참조와 서비스에 속한 모든 엔드포인트슬라이스의 간단한 조회를 가능하게 하는
|
||||
`kubernetes.io/service-name` 레이블로 표시된다.
|
||||
|
||||
## 엔드포인트슬라이스 컨트롤러
|
||||
### 엔드포인트슬라이스 미러링
|
||||
|
||||
엔드포인트슬라이스 컨트롤러는 해당 엔드포인트슬라이스가 최신 상태인지
|
||||
확인하기 위해 서비스와 파드를 감시한다. 컨트롤러가 셀렉터로 지정한 모든
|
||||
서비스에 대해 엔드포인트슬라이스를 관리한다. 이는 서비스 셀렉터와
|
||||
일치하는 파드의 IP를 나타내게 된다.
|
||||
경우에 따라, 애플리케이션이 사용자 지정 엔드포인트 리소스를 생성한다. 이러한
|
||||
애플리케이션이 엔드포인트와 엔드포인트슬라이스 리소스에 동시에 쓸 필요가 없도록
|
||||
클러스터의 컨트롤 플레인은 대부분의 엔드포인트 리소스를
|
||||
해당 엔드포인트슬라이스에 미러링한다.
|
||||
|
||||
### 엔드포인트슬라이스의 크기
|
||||
컨트롤 플레인은 다음을 제외하고 엔드포인트 리소스를 미러링한다.
|
||||
|
||||
기본적으로 엔드포인트슬라이스는 각각 100개의 엔드포인트 크기로 제한된다.
|
||||
최대 1000개까지 `--max-endpoints-per-slice` {{< glossary_tooltip
|
||||
text="kube-controller-manager" term_id="kube-controller-manager" >}} 플래그를
|
||||
사용해서 구성할 수 있다.
|
||||
* 엔드포인트 리소스에는 `endpointslice.kubernetes.io/skip-mirror` 레이블이
|
||||
`true` 로 설정되어 있다.
|
||||
* 엔드포인트 리소스에는 `control-plane.alpha.kubernetes.io/leader`
|
||||
어노테이션이 있다.
|
||||
* 해당 서비스 리소스가 존재하지 않는다.
|
||||
* 해당 서비스 리소스에 nil이 아닌 셀렉터가 있다.
|
||||
|
||||
개별 엔드포인트 리소스는 여러 엔드포인트슬라이스로 변환될 수 있다.
|
||||
엔드포인트 리소스에 여러 하위 집합이 있거나 여러 IP 제품군(IPv4 및 IPv6)이 있는
|
||||
엔드포인트가 포함된 경우 변환이 일어난다. 하위 집합 당 최대 1000개의 주소가
|
||||
엔드포인트슬라이스에 미러링된다.
|
||||
|
||||
### 엔드포인트슬라이스의 배포
|
||||
|
||||
@@ -143,8 +159,8 @@ text="kube-controller-manager" term_id="kube-controller-manager" >}} 플래그
|
||||
엔드포인트슬라이스가 필요하다. 이는 하위 집합이 엔드포인트와 그룹화하는
|
||||
방식의 논리와 유사하다.
|
||||
|
||||
컨트롤러는 엔드포인트슬라이스를 최대한 채우려고 노력하지만,
|
||||
적극적으로 재조정하지는 않는다. 컨트롤러의 동작은 매우 직관적이다.
|
||||
컨트롤 플레인은 엔드포인트슬라이스를 최대한 채우려고 노력하지만,
|
||||
적극적으로 재조정하지는 않는다. 로직은 매우 직관적이다.
|
||||
|
||||
1. 기존 엔드포인트슬라이스에 대해 반복적으로, 더 이상 필요하지 않는 엔드포인트를
|
||||
제거하고 변경에 의해 일치하는 엔드포인트를 업데이트 한다.
|
||||
@@ -173,10 +189,17 @@ text="kube-controller-manager" term_id="kube-controller-manager" >}} 플래그
|
||||
교체되는 엔드포인트에 대해서 엔드포인트슬라이스를
|
||||
자연스럽게 재포장한다.
|
||||
|
||||
### 중복 엔드포인트
|
||||
|
||||
엔드포인트슬라이스 변경의 특성으로 인해, 엔드포인트는 동시에 둘 이상의
|
||||
엔드포인트슬라이스에 표시될 수 있다. 이는 다른 엔드포인트슬라이스 오브젝트에
|
||||
대한 변경 사항이 다른 시간에서의 쿠버네티스 클라이언트 워치(watch)/캐시에
|
||||
도착할 수 있기 때문에 자연스럽게 발생한다. 엔드포인트슬라이스를 사용하는 구현은
|
||||
엔드포인트가 둘 이상의 슬라이스에 표시되도록 할 수 있어야 한다. 엔드포인트
|
||||
중복 제거를 수행하는 방법에 대한 레퍼런스 구현은 `kube-proxy` 의
|
||||
`EndpointSliceCache` 구현에서 찾을 수 있다.
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
|
||||
* [엔드포인트슬라이스 활성화하기](/docs/tasks/administer-cluster/enabling-endpointslices)
|
||||
* [엔드포인트슬라이스 활성화하기](/docs/tasks/administer-cluster/enabling-endpointslices)에 대해 배우기
|
||||
* [애플리케이션을 서비스와 함께 연결하기](/ko/docs/concepts/services-networking/connect-applications-service/)를 읽어보기
|
||||
|
||||
Reference in New Issue
Block a user