Kubernetes EndpointSlices 만들기

Kubernetes Endpointslices Mandeulgi



엔드포인트 슬라이스를 사용하면 Kubernetes 클러스터와 연결된 네트워크의 엔드포인트를 추적할 수 있습니다. 귀하를 위해 만든 이 문서를 통해 Kubernetes 환경의 EndpointSlices에 대해 자세히 알아볼 수 있습니다. 이 튜토리얼에서는 Kubernetes 클러스터에서 EndpointSlice가 무엇인지, Kubernetes에서 EndpointSlice를 생성하는 방법을 배우도록 도와드립니다. Kubernetes 클러스터에서 엔드포인트를 생성할 수 있는 몇 가지 kubectl 명령을 시연합니다.

Kubernetes의 EndpointSlice란 무엇입니까?

Kubernetes의 EndpointSlice는 네트워크 엔드포인트 추적기입니다. Kubernetes 클러스터에서 네트워크 끝점을 모니터링할 수 있습니다. 간단히 말해서 할당된 각 포드에서 IP 주소를 가져오는 개체입니다. Kubernetes 서비스는 이 객체를 참조하여 통신을 위한 Pod의 내부 IP 주소 레코드를 가져옵니다. 또한 이러한 엔드포인트는 팟(Pod)에서 서비스에 노출되는 데 사용됩니다.

쿠버네티스 영역에서 이러한 엔드포인트는 쿠버네티스 서비스가 클러스터의 포드에 대한 트래픽 분산이 있는지 확인하는 데 도움이 되는 추상화 계층으로 작동합니다. 그러나 트래픽 부하가 증가하면 트래픽 스케일링 문제가 발생합니다. 이는 단일 엔드포인트가 각 서비스에 대한 모든 네트워크 엔드포인트를 보유하기 때문입니다. 그리고 이러한 소스가 허용할 수 없는 크기로 증가하면 Kubernetes의 성능에 부정적인 영향을 미칩니다. 즉, 네트워크 엔드포인트의 수가 엄청나게 증가하면 배포를 확장하는 Kubernetes의 기능이 부정적인 영향을 받습니다. 다음 그래픽 이미지를 통해 이를 이해해 보겠습니다.









여기에서 엔드포인트에 클러스터의 모든 포드가 포함되어 있고 EndpointSlices가 기존 엔드포인트에 대한 확장 가능하고 확장 가능한 대안임을 알 수 있습니다. 전체 서비스에 대해 단 하나의 엔드포인트 리소스가 있지만 동일한 서비스에 대해 둘 이상의 EndpointSlices가 있습니다. EndpointSlices는 이러한 방식으로 네트워크 리소스를 확장하는 데 도움이 됩니다. 이 확장성 문제가 얼마나 중요한지 이해하기 위해 예를 들어 보겠습니다.



예를 들어 Kubernetes 서비스에는 약 9,000개의 포드가 있으며 어떻게든 2MB 엔드포인트 리소스가 됩니다. 단일 끝점에는 서비스의 이러한 모든 끝점 리소스가 있습니다. 엔드포인트에서 네트워크 엔드포인트가 변경되면 엔드포인트의 전체 리소스가 클러스터의 각 노드에 분산되어야 합니다. 3000개의 노드가 있는 클러스터를 처리하는 경우 각 노드에 엄청난 수의 업데이트를 보내야 하므로 큰 문제가 됩니다. 따라서 단일 엔드포인트에서 더 많이 확장하면 네트워크 확장이 더 어려워집니다.





그러나 EndpointSlices는 Kubernetes가 필요한 만큼 확장되도록 하여 이 문제를 해결합니다. 거대한 IP 주소 목록과 관련 포트 번호를 포함하는 단일 끝점을 사용하는 대신 여러 EndpointSlices를 사용하십시오. 이러한 EndpointSlices는 거대한 단일 엔드포인트의 작은 청크입니다. 이러한 슬라이스는 훨씬 더 작지만 막대한 엔드포인트로 인해 발생하는 로드를 완화합니다. 하나의 EndpointSlice에 최대 100개의 포드를 저장할 수 있습니다. 이러한 EndpointSlices는 특정 포드에 서비스를 배포하는 데 도움이 됩니다. 네트워크 엔드포인트가 변경되면 최대 100개의 포드가 포함된 EndpointSlice에 업데이트만 보내면 됩니다. 네트워크의 다른 모든 포드는 그대로 유지됩니다.

이제 Kubernetes EndpointSlice를 생성하는 방법을 알아보겠습니다.



Kubernetes에서 EndpointSlices는 어떻게 생성됩니까?

Kubernetes EndpointSlices는 Kubernetes 클러스터의 단일 엔드포인트에 대한 최상의 대안입니다. 모든 네트워크 끝점을 쉽고 효율적으로 추적할 수 있을 뿐만 아니라 단일 끝점에 비해 더 나은 성능을 제공합니다. 또한 확장 안정성을 제공하면서 낮은 네트워크 트래픽을 보여줍니다. 또한 여러 EndpointSlice를 사용하면 Kubernetes 클러스터의 컨트롤 플레인과 노드에 더 적은 노력을 기울일 수 있습니다.

다음 예제에서 Kubernetes 클러스터에 EndpointSlices를 생성하는 방법을 배울 수 있는 단계가 있을 수 있습니다.

1단계: Minikube 클러스터 시작

첫 번째이자 가장 중요한 단계는 minikube 클러스터가 활성 상태인지 확인하는 것입니다. 비활성 minikube 클러스터는 Kubernetes 환경에서 어떤 작업도 수행할 수 없으므로 활성 모드인지 확인하십시오. Minikube 클러스터가 가동되어 실행 중인지 확인하려면 다음 명령을 사용하십시오.

> 미니큐브 시작

Minikube 클러스터가 이전에 시작되지 않았거나 절전 모드인 경우 이 명령은 Minikube를 깨우고 실행합니다. 이제 활성 minikube 클러스터가 있습니다. Kubernetes 환경에서 EndpointSlice를 생성할 준비가 되었습니다.

2단계: YAML 파일로 배포 생성

YAML 파일은 Kubernetes에서 배포를 생성하는 데 가장 일반적으로 사용됩니다. 기존 배포 YAML 파일을 사용하거나 다음 명령을 사용하여 새 파일을 만들 수 있습니다.

> 나노 엔드포인트.yaml

이렇게 하면 구성을 위한 배포 정의를 저장할 수 있는 'endpoint.yaml'이라는 새 YAML 파일이 생성됩니다. 다음 스크린샷에서 배포 정의를 참조하세요.

3단계: YAML 파일을 사용하여 EndpointSlice 생성

이제 배포 정의가 포함된 YAML 파일이 있으므로 이를 사용하여 Kubernetes 클러스터에서 EndpointSlices를 생성합니다. Kubernetes 클러스터에 EndpointSlices를 포함할 수 있도록 구성 파일을 배포해야 합니다. 다음 명령을 사용하여 구성 파일을 배포합니다.

> kubectl create -f endpoint.yaml

Kubernetes 환경에서는 'kubectl create' 명령을 사용하여 리소스를 생성합니다. 따라서 'kubectl create' 명령을 사용하여 YAML 구성 파일에서 EndpointSlices를 생성합니다.

결론

Kubernetes 환경에서 EndpointSlices를 살펴보았습니다. Kubernetes의 EndpointSlice는 Kubernetes 클러스터의 모든 네트워크 끝점을 추적하는 데 사용되는 개체입니다. 더 나은 확장성과 확장성 옵션을 허용하므로 Kubernetes 클러스터의 거대한 단일 엔드포인트에 대한 최상의 대안입니다. 이러한 EndpointSlices를 사용하면 Kubernetes 클러스터가 노드와 컨트롤 플레인에 더 적은 노동력을 투입하여 더 나은 성능을 제공할 수 있습니다. 예제를 통해 Kubernetes 클러스터에서 EndpointSlices를 생성하는 방법을 배웠습니다.