We couldn't find a match for given <KEYWORD>, please try again.

Kubernetes 서비스란?

Kubernetes 서비스는 모두 동일한 기능을 수행하는 클러스터에 배포된 포드 그룹에 대한 논리적 추상화입니다.

포드는 일시적이므로 서비스를 통해 특정 기능(웹 서비스, 이미지 처리 등)을 제공하는 포드 그룹에 이름과 고유 IP 주소(clusterIP)를 할당할 수 있습니다. 서비스가 해당 IP 주소를 실행하는 한 변경되지 않습니다. 또한 서비스는 액세스에 대한 정책을 정의합니다.

Kubernetes 현황

Kubernetes 가동 및 실행

Kubernetes에서 서비스와 배포의 차이점은 무엇입니까?

Kubernetes에서 배포는 컨테이너화된 애플리케이션으로 포드를 시작하고 필요한 수의 복제본이 클러스터에서 항상 실행되도록 하는 방법입니다.

반면 서비스는 이러한 포드에 인터페이스를 노출시켜 클러스터 내에서 또는 외부 프로세스와 서비스 간에 네트워크 액세스를 지원하는 역할을 합니다.

Kubernetes 서비스의 구성 요소는 무엇입니까?

Kubernetes 서비스는 일련의 포드를 추상화된 서비스 이름 및 IP 주소에 연결합니다. 서비스는 포드 간 검색 및 라우팅을 제공합니다. 예를 들어, 서비스는 애플리케이션 프론트엔드를 백엔드에 연결하며, 각 백엔드는 클러스터의 별도 배포에서 실행됩니다. 서비스는 레이블과 선택기를 사용하여 포드를 다른 애플리케이션과 일치시킵니다. Kubernetes 서비스의 핵심 특성은 다음과 같습니다.

  • 포드를 찾는 레이블 선택기
  • clusterIP IP 주소 및 할당된 포트 번호
  • 포트 정의
  • targetPort에 수신 포트 매핑(선택 사항)

서비스는 포드 선택기 없이도 정의될 수 있습니다. 예를 들어 서비스가 다른 네임스페이스 또는 클러스터의 다른 서비스를 가리키도록 할 수 있습니다.

Kubernetes 서비스의 유형은 무엇입니까?

  • ClusterIP. 클러스터 내에서만 액세스할 수 있는 서비스를 노출시킵니다.
  • NodePort. 각 노드 IP의 정적 포트를 통해 서비스를 노출시킵니다.
  • LoadBalancer. 클라우드 공급업체의 로드 밸런서를 통해 서비스를 노출시킵니다.
  • ExternalName. CNAME 레코드의 값을 반환하여 서비스를 사전 정의된 externalName 필드에 매핑합니다.

Kubernetes ClusterIP 서비스란?

ClusterIP는 클러스터 내부의 IP 주소에 서비스를 노출시키는 데 사용되는 서비스의 기본 유형입니다. 액세스는 클러스터 내에서만 허용됩니다.

Kubernetes 헤드리스(headless) 서비스란?

로드 밸런싱이 필요하지 않고 단일 IP만 노출시키는 서비스는 clusterIP로 "없음"을 지정하여 '헤드리스(headless)' 서비스를 생성할 수 있습니다.

헤드리스(headless) 서비스는 선택기를 사용하여 정의할 수 있으며, 이 경우 서비스를 노출하는 포드를 가리키는 주소를 반환하도록 DNS를 수정하는 엔드포인트 레코드가 API에서 생성됩니다. 선택기가 없는 헤드리스(headless) 서비스는 엔드포인트 레코드를 생성하지 않습니다. DNS 시스템은 CNAME 레코드 또는 서비스와 이름이 동일한 엔드포인트에 대한 레코드를 구성합니다.

Kubernetes NodePort 서비스란?

NodePort는 모든 클러스터 노드의 개방형 포트입니다. 서비스가 해당 노드에서 실행 중이 아니더라도Kubernetes는 NodePort로 들어오는 트래픽을 서비스로 라우팅합니다. NodePort는 로드 밸런서와 같은 다른 높은 수준의 수신 방법을 위한 기반으로 사용되며 개발에 유용합니다.

Kubernetes ExternalName 서비스란?

ExternalName 서비스는 다른 Kubernetes 서비스와 유사합니다. 그러나 clusterIP 주소를 통해 액세스하는 대신 서비스를 생성할 때 externalName: 매개 변수에 정의된 값을 포함하는 CNAME 레코드를 반환합니다.

Kubernetes 로드 밸런서 서비스란?

AWS 또는 Azure와 같은 퍼블릭 클라우드 공급업체에서 실행되는 클러스터의 경우, 로드 LoadBalancer 서비스를 생성하면 clusterIP 서비스에 해당하는 서비스를 제공하여 클라우드 공급업체와 관련된 외부 로드 밸런서로 확장합니다. Kubernetes는 자동으로 로드 밸런서를 생성하고, 필요한 경우 방화벽 규칙을 제공하며, 클라우드 공급업체가 할당한 외부 IP 주소로 서비스를 채웁니다.

Kubernetes 서비스 작동 방식

서비스는 간단히 레이블을 사용하여 포드를 가리킵니다. 서비스는 노드에 종속되지 않으므로 특정 시점에 클러스터에서 실행되는 위치에 관계없이 서비스가 포드를 가리킬 수 있습니다. 서비스 IP 주소와 DNS 서비스 이름을 노출하면 서비스가 존재하는 한 어떤 방법으로든 애플리케이션에 접근할 수 있습니다.

Kubernetes 서비스를 어떻게 정의합니까?

서비스는 모든 Kubernetes 객체와 마찬가지로 YAML에 정의됩니다. 웹 프런트엔드에서 전송되는 데이터를 처리하기 위해 백엔드 서비스를 실행하는 포드를 배포했다고 가정하겠습니다. 'deployment-backend' 배포에 'service-backend'라는 서비스를 노출하려면 다음을 사용합니다.

apiVersion: v1

kind: Service

metadata:

name: service-backend

spec:

ports:

- port: 4000

protocol: TCP

targetPort: 333

selector:

run: deployment-backend

type: ClusterIP

서비스 'service-backend'가 생성되고 클러스터의 모든 포드가 http://service-backend:4000을 통해 포트 333에서 액세스하거나 클러스터의 포트 4000을 사용하는 주소에서 액세스할 수 있습니다.

Kubernetes 서비스는 YAML 파일이 필요 없는 'kubectl expose' 명령을 사용하여 생성할 수도 있습니다. 다음 명령을 사용하여 동일한 서비스를 생성할 수 있습니다.

kubectl expose deployment deployment-backend - - port=333- - target-port=4000 - - name=service-backend

Kubernetes 서비스에 어떻게 액세스합니까?

Kubernetes 서비스를 검색하는 방법에는 두 가지가 있습니다.

DNS(가장 일반적): DNS 방법은 서비스 검색에 권장되는 방법입니다. 이 방법을 사용하려면 먼저 클러스터에 DNS 서버를 설치해야 합니다. DNS 서버는 Kubernetes API를 모니터링하며, 새 서비스가 생성될 때 이름은 요청 애플리케이션을 쉽게 확인할 수 있게 됩니다.

ENV 변수: 이 방법은 kubelet을 사용하여 포드가 실행되는 모든 노드의 각 활성 서비스에 대한 환경 변수를 추가합니다.

관련 솔루션 및 제품

실습: 애플리케이션 현대화

몇 주 만에 애플리케이션을 클라우드로 이동

Tanzu Kubernetes for Operation

최신 멀티 클라우드 컨테이너 인프라의 기반입니다.

Tanzu Application Platform

Kubernetes의 탁월한 멀티 클라우드 개발자 경험