tencent cloud

Tencent Kubernetes Engine

문서Tencent Kubernetes Engine

개요

다운로드
포커스 모드
폰트 크기
마지막 업데이트 시간: 2023-04-28 11:08:19

Service 기본 개념

Kubernetes에서 다양한 컨테이너를 배포할 수 있습니다. 그 중 일부는 HTTP 또는 HTTPS를 통해 외부적으로 레이어 7 네트워크 서비스를 제공하고 다른 일부는 TCP 또는 UDP를 통해 레이어 4 네트워크 서비스를 제공합니다. Kubernetes에 정의된 Service 리소스는 클러스터의 레이어 4 네트워크 서비스에 대한 액세스를 관리하는 데 사용됩니다.
Kubernetes ServiceType으로 서비스 유형(기본값: ClusterIP 유형)을 지정할 수 있습니다. ServiceTypes 값과 해당 동작은 다음과 같습니다.
설명
ClusterIP
클러스터 내부 IP에 서비스를 노출합니다. 이 값을 선택하면 클러스터 내에서만 서비스에 연결할 수 있습니다. 이는 ServiceType의 기본값입니다.
NodePort
정적 포트(NodePort)에서 각 노드의 IP에 서비스를 노출합니다. NodePort 서비스는 자동으로 생성되는 ClusterIP 서비스로 라우팅됩니다. <NodeIP>:<NodePort> 요청을 통해 클러스터 외부에서 액세스할 수 있습니다. NodePort를 사용하면 클러스터 노드가 공격에 직접 노출되므로, 프로덕션 환경에서 클러스터 노드를 통해 외부 및 공중망 서비스를 직접 제공하지 않는 것이 좋습니다. 일반적으로 클러스터 노드는 동적이며, 추가하거나 삭제할 수 있으며, NodePort를 사용하면 외부 서비스를 제공하는 주소와 연결됩니다.
LoadBalancer
CLB 인스턴스를 사용하여 공중망 또는 사설망에 서비스를 노출합니다. CLB는 NodePort로 라우팅되거나 VPC-CNI 네트워크의 컨테이너로 직접 전달될 수 있습니다.
ClusterIP 및 NodePort Service는 일반적으로 외부 클러스터 또는 클라우드 서비스 제공 업체에서 제공하는 것과 동일한 방식으로 작동합니다. LoadBalancer Service는 클라우드 서비스 제공 업체의 로드 밸런서를 사용하여 노출되며 클라우드 서비스 제공 업체에서 제공하는 추가 로드 밸런서 기능(예: 로드 밸런서의 네트워크 유형 제어 및 리얼 서버에 바인딩된 가중치 조정)이 있습니다. 자세한 내용은 Service 기능 문서를 참고하십시오.

서비스 액세스 방법

상기 ServiceTypes 정의에 따라 TKE에서 제공하는 다음과 같은 서비스 액세스 방법을 사용할 수 있습니다.
액세스 방식
Service 유형
설명
공용 네트워크
LoadBalancer
Service의 Loadbalance 모드에서 공중망 IP는 백엔드 Pod에 직접 액세스할 수 있습니다. 이 방법은 Web 프런트엔드 서비스에 적용할 수 있습니다.
생성된 서비스는 CLB 인스턴스 도메인 이름 또는 IP + 서비스 포트로 클러스터 외부에서 또는 서비스 이름 + 서비스 포트로 클러스터 내에서 액세스할 수 있습니다.
주의: Tencent Cloud CLB(Cloud Load Balancer) 인스턴스는 2023년 03월 06일에 아키텍처 업그레이드를 완료했습니다. 업그레이드 이후부터는 공중망 CLB는 도메인 이름 형식으로 서비스를 제공합니다. VIP는 서비스 요청에 따라 동적으로 변경되며 콘솔에 더 이상 VIP 주소가 표시되지 않습니다. 도메인 이름 기반 공중망 CLB 출시를 참고하십시오.
신규 Tencent Cloud 사용자는 기본적으로 업그레이드된 도메인 이름 기반 CLB를 사용합니다.
기존 사용자는 기존 CLB를 계속 사용할 수 있으며, 업그레이드에 영향을 받지 않습니다. CLB 서비스를 업그레이드하려면 Tencent Cloud CLB 및 TKE 제품을 동시에 업그레이드해야 하며, 그렇지 않으면 TKE에서 모든 공중망 유형의 Service/Ingress 동기화에 영향을 받을 수 있습니다. CLB 업그레이드 작업의 자세한 내용은 도메인 이름 기반 CLB 업그레이드 가이드를 참고하십시오. TKE Service/Ingress 컴포넌트 버전 업그레이드는 Submit Ticket을 통해 문의하십시오.
VPC
LoadBalancer
Service의 Loadbalance 모드에서 사설망 IP는 service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx 주석을 지정하여 백엔드 Pod에 직접 액세스할 수 있습니다.
생성된 서비스는 CLB 인스턴스 도메인 이름 또는 IP + 서비스 포트로 클러스터 외부에서 또는 서비스 이름 + 서비스 포트로 클러스터 내에서 액세스할 수 있습니다.
노드 포트를 통한 액세스
NodePort
노드 포트를 컨테이너에 매핑하는 액세스 방법을 제공합니다. TCP, UDP 및 Ingress에 대해 지원됩니다. Node로의 상위 레이어 LB 포워딩을 사용자 지정하는 데 사용할 수 있습니다.
생성된 서비스는 CVM 인스턴스 IP + 노드 포트로 액세스할 수 있습니다.
클러스터 내에서만 액세스
ClusterIP
Service의 ClusterIP 모드에서는 클러스터 내에서 액세스할 수 있도록 Service IP가 자동으로 할당됩니다. 이 방법은 서비스 네트워크 격리를 보장하기 위해 MySQL과 같은 데이터베이스 서비스에 사용할 수 있습니다.
생성된 서비스는 서비스 이름 + 서비스 포트로 액세스할 수 있습니다.

CLB 개념

Service 작동 원리

Tencent Cloud 컨테이너 클러스터에서 Service Controller 컴포넌트는 Service 리소스를 생성, 수정 또는 삭제할 때, 클러스터 노드 또는 Service Endpoints가 변경되거나 컴포넌트 컨테이너 드리프트 또는 재시작 시 Service 리소스를 동기화합니다.
Service Controller 컴포넌트는 CLB 리소스를 생성하고 Service 리소스의 설명을 기반으로 리스너와 리얼 서버를 구성합니다. Service 리소스를 삭제하면 CLB 리소스가 다시 소유됩니다.

Service 라이프사이클 관리

Service의 외부 서비스 기능은 CLB 인스턴스에서 제공하는 리소스에 의존합니다. Service 리소스 관리는 Service의 중요한 작업 중 하나입니다. 리소스 라이프사이클 관리 중 다음 레이블을 사용합니다.
tke-createdBy-flag = yes: 리소스가 TKE에 의해 생성되었음을 나타냅니다.
이 레이블이 존재하면 Service 종료 시 해당 리소스가 삭제됩니다.
이 레이블이 없으면 Service 종료 시 CLB 인스턴스 자체가 아닌 CLB 인스턴스의 리스너 리소스만 삭제됩니다.
tke-clusterId = <ClusterId>: 리소스를 사용하는 Cluster를 식별합니다.
ClusterId가 올바르면 Service 종료 시 해당 레이블이 삭제됩니다.
설명
기존 CLB 인스턴스를 사용하는 경우 Service는 인스턴스를 사용만 하고 삭제하지는 않습니다.
CLB 인스턴스에 대해 삭제 방지를 활성화했거나 비공개 연결을 사용하는 경우 Service 삭제 시 인스턴스가 삭제되지 않습니다.
LoadBalancer 유형의 Service가 생성되면 해당 CLB 인스턴스의 라이프사이클이 시작됩니다. Service가 삭제되거나 CLB 인스턴스가 다시 생성되면 라이프사이클이 종료됩니다. 라이프사이클 동안 CLB 인스턴스는 Service 설명에 따라 지속적으로 동기화됩니다. Service 액세스 네트워크를 전환(공중망 > VPC, VPC > 공중망 또는 VPC 서브넷 간 전환)하거나 CLB 인스턴스를 교체하면, CLB 인스턴스가 다시 생성되거나 종료됩니다. LoadBalancer 유형 Service의 작동 원리는 아래 이미지와 같습니다.


Service 주의 사항

각 Service에는 .spec.externalTrafficPolicy 필드가 있습니다. kube-proxy는 spec.internalTrafficPolicy 설정을 기반으로 라우팅하는 엔드포인트를 필터링합니다. Local로 설정하면 노드의 로컬 엔드포인트만 선택됩니다. Cluster(기본값)이거나 설정되지 않은 경우 Kubernetes는 모든 엔드포인트를 선택할 수 있습니다. 자세한 내용은 Kubernetes 문서를 참고하십시오.
Service가 Local 방식을 사용하는 경우, Pod가 TKE 노드에서 슈퍼 노드로 또는 슈퍼 노드에서 TKE 노드로 스케쥴링되면 Service가 로컬 서비스 엔드포인트만 선택하기 때문에 스트림 중단이 발생합니다.

Service 고위험 작업

기존 CLB 인스턴스를 사용합니다(권장하지 않음).
TKE에서 추가한 CLB 인스턴스 레이블을 수정 또는 삭제하고 새 CLB 인스턴스를 구매한 후 레이블을 복구합니다.
CLB 콘솔을 통해 TKE가 관리하는 CLB 리스너의 이름을 수정합니다.

Service 기능

Service 운영 및 기능에 대한 자세한 내용은 다음 문서를 참고하십시오.

참고 자료

Service 관련 자세한 내용은 오픈 소스 문서 Kubernetes Service를 참고하십시오.

도움말 및 지원

문제 해결에 도움이 되었나요?

피드백