1. Service
Kubermetes Services는 내부의 컴포넌트끼리, 그리고 애플리케이션 외부와 통신할 수 있게 해준다.
Kubermetes Services는 애플리케이션을 다른 애플리케이션이나 사용자와 연결하는데 도움이 된다.
예를 들어서, 우리 애플리케이션은 다양한 섹션을 실행하는 파드의 그룹들이 있다. 프론트엔드를 유저에게 서빙하는 그룹, 백엔드 프로세스를 실행하는 그룹, 외부 데이터 소스에 연결하는 그룹들이 있을 것이다. 이러한 파드 그룹 간 연결을 가능하게 하는 것이 Service이다. Service를 통해 프론트엔드 애플리케이션을 엔드 유저가 사용할 수 있게 하고, 백엔드와 프론트엔드 POD 간 통신을 돕고, 외부 데이터 소스 연결 설정에 도움을 준다.
즉, 서비스는 애플리케이션의 마이크로 서비스 간에 Loose Coupling을 가능하게 한다.
2. Service의 외부통신
먼저 기존 설정을 살펴보면, Kubernetes 노드에는 IP 주소가 있다. 지금 이 주소는 192.168.1.2 내 노트북도 같은 네트워크에 있고, IP 주소는 192.168.1.10이다. 그리고 내부 파드 네트워크 범위는 10.244.0.0 . 지금 파드의 IP는 10.244.0.2
지금 저는 파드와 다른 네트워크에 있으므로 파드에 ping하거나 접속할 수 없다. 어떻게 웹페이지를 볼 수 있을까? 먼저, Kubernetes 노드에 SSH로 연결하면 curl을 수행하여 파드의 웹페이지에 접속할 수 있다. 또는, 노드에 GUI가 있다면 브라우저를 열어서 http://10.244.0.2 를 입력하여 웹페이지를 볼 수 있다.
하지만만 이것은 Kubernetes 노드 내부에서 접근하는 방법이다. 우리가 정말로 원하는 것은 SSH 연결 없이 내 노트북에서 웹 서버에 접속하는 것을 원한다.
그 방법은 아래에,
우리는 노트북에서 SSH연결 없이 Kubernetes 노드의 IP에 접근하고, 웹 서버에 접속하고 싶다. 따라서 노트북에서 노드로, 노드에서 파드로 중간에 리퀘스트를 매핑할 무언가가 필요하다. 이 역할을 하는 것이 Kubernetes Service. 파드, replicaset, deployment과 마찬가지로 Kubernetes Service는 오브젝트이다.
3. Service Type
쿠버네티스에는 3가지 타입의 Service가 있다. (NodePort, ClusterIP, LoadBalancer)
1) NodePort
NodePort는 노드와 노드 내 POD에서 내부 POD에 접근 가능하도록 만드는 서비스이다.
2) ClusterIP
Cluster IP 서비스는 서로 다른 서비스(ex. 프론트엔드 서버, 백엔드 서버) 간에 소통을 가능하게 하기 위해 클러스터 안에 Virtual IP를 생성한다.
3) LoadBalancer
세 번째 타입은 LoadBalancer이다. 예를 들어 frontent tier 웹 서버에 걸쳐있는 부하를 분산시킬 수 있다.
'Computer Science > Kubernetes 정리' 카테고리의 다른 글
Kubernetes 정리 9 : Services ClusterIP (0) | 2023.02.16 |
---|---|
언제 딸지 모르겠지만 Kubernetes 자격증 팁!! (0) | 2023.02.15 |
Kubernetes 정리 7 : Deployments (0) | 2023.02.15 |
Kubernetes 정리 5 : ReplicaSets (0) | 2023.02.15 |
Kubernetes 정리 4 : Kube Scheduler (0) | 2023.02.13 |