베하~! BTC_녹차공원 팀의 하동녹차 입니다.
Kubernetes Service에 대해 알아보겠습니다!
쿠버네티스 서비스(Service)
쿠버네티스 서비스(Service)는 쿠버네티스 클러스터 내에서 실행 중인 파드에 접근하기 위한 추상화된 리소스입니다.
파드는 유동적으로 생성되고 삭제되며 IP 주소가 변경될 수 있기 때문에, 직접 파드의 IP 주소로 접근하는 것은 번거로운 작업입니다.
서비스는 이러한 문제를 해결하여 파드에 고정된 가상 IP 주소를 제공하고, 그 IP 주소를 통해 파드에 접근할 수 있도록 합니다. 이를 통해 클라이언트나 다른 파드가 서비스를 통해 파드와 통신할 수 있습니다.
쿠버네티스 서비스(Service) 기능과 특징
1. 클러스터 내부 서비스: 기본적으로 서비스는 클러스터 내부에서만 접근할 수 있도록 합니다. 즉, 같은 쿠버네티스 클러스터에 속한 다른 파드들이 해당 서비스를 사용하여 통신할 수 있습니다.
2.서비스는 다양한 유형이 있습니다.
ClusterIP: 기본적인 서비스 유형으로, 클러스터 내부에 가상 IP 주소를 할당합니다.
NodePort: 외부에서 접근이 가능한 포트를 노드에 열고, 해당 포트를 통해 서비스에 접근할 수 있도록 합니다.
LoadBalancer: 클라우드 제공업체에서 제공하는 로드 밸런서를 이용하여 외부 트래픽을 서비스로 전달합니다.
ExternalName: 외부 서비스를 쿠버네티스 내부에서 CNAME으로 사용할 수 있도록 합니다.
3.서비스 디스커버리(Service Discovery): 서비스를 생성하면 해당 서비스에 연결된 파드들의 IP 주소와 포트 정보를 DNS(Domain Name System) 서버에 등록합니다. 이를 통해 서비스를 사용하는 클라이언트나 다른 파드가 DNS 이름을 통해 서비스에 접근할 수 있습니다.
4.로드 밸런싱: 여러 개의 파드가 동일한 서비스를 제공하는 경우, 서비스는 로드 밸런싱을 수행하여 트래픽을 각각의 파드에 균등하게 분배합니다. 이를 통해 서비스의 안정성과 성능을 향상시킵니다.
5.서비스 부하 분산(Service Load Balancing): 서비스는 같은 서비스명과 선택기준(Selector)에 맞는 파드들을 그룹화하여 파드들을 대상으로 하는 L4 (Transport Layer) 로드 밸런싱을 수행합니다.
6.서비스 부하 분배(Service Proxy): 각 노드에 kube-proxy가 실행되어, 서비스의 가상 IP 주소로 오는 트래픽을 실제 파드의 IP 주소로 포워딩합니다.
쿠버네티스 서비스는 마이크로서비스 아키텍처와 같이 여러 개의 컨테이너로 구성된 애플리케이션을 관리하고 효율적으로 서비스하며, 애플리케이션의 유지 보수 및 확장성을 쉽게 처리하는 데 중요한 역할을 수행합니다.
Service 실습
실습 사이트 주소 입니다.
Service 를 사용하는 간단한 실습을 해보겠습니다.
우선 front-web 이라는 이름의 Deployment 를 생성하고,
해당 deployment 는 nginx 이미지를 사용하여 실행 시켜줍니다.
deployment 가 잘 생성 되었는지 확인 합니다.
front-web 이라는 이름의 디플로이먼트(Deployment)의 설정을 수정 합니다.
포트 80으로 들어오는 HTTP 트래픽을 처리하도록 만들어 보겠습니다.
front-web 이름의 디플로이먼트(Deployment)를 NodePort 타입의 서비스로 노출하며,
포트 80으로 들어오는 요청을 처리하는 서비스를 생성하는 dongha-svc.yaml 파일로 생성 해보겠습니다.
yaml 파일이 생성 되었으면,
이제 yaml 파일에 name: http 를 추가 해줍니다
추가가 되었으면, 이제 서비스를 생성해보겠습니다.
이렇게 구성을 하게되면 서비스를 완성 시킬 수 있습니다.
이번 Service 실습을 통해 새로운 서비스를 구성하여, 각각의 파드(Pod)도 노드의 NodePort를 통해 노출하도록 설정하여. 즉, 클러스터 내 각 노드들이 해당 파드에 직접 접근할 수 있도록 하는 실습을 진행 해보았는데요.
1. front-web 디플로이먼트를 구성하고,
2. nginx 컨테이너의 80번 포트를 노출하는 http라는 이름의 포트를 추가
3. dongha-svc 라는 이름의 새로운 서비스를 생성하고, 이 서비스는 http 포트를 노출
이렇게 설정하면, front-web 디플로이먼트가 80번 포트를 사용하는 http 포트를 추가하고,
해당 포트를 dongha-svc라는 이름의 서비스로 노출시킵니다.
또한, 노드들이 파드에 직접 접근할 수 있는 NodePort를 설정하여 특정 노드의 IP 주소와 포트로 해당 파드에 접근할 수 있게 됩니다.
이번주는 Kubernetes Service 에 대해 알아보았습니다.
다음번에는 더욱 재밌는 주제로 찾아오겠습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA > DevOps' 카테고리의 다른 글
[K8S] Ingress (0) | 2023.08.19 |
---|---|
[DevOps] CI/CD 개념 및 도구 설명 (0) | 2023.08.18 |
[K8S] NetworkPolicy (0) | 2023.08.01 |
[K8S] Node Upgrade (0) | 2023.07.20 |
[K8S] Node Schedule (0) | 2023.07.06 |
댓글