yaml파일을 통하거나 deploy를 통해 파드를 생성하거나 pod는 service를 통해 외부에 접근이 가능하다.
쿠버네티스에서 서비스는 파드의 논리적 집합과 그것들에 접근할 수 있는 정책을 정의하는 추상적 개념이다.
Service.yaml에서 어떤 방식으로 외부에 노출시킬지에 대한 type에는 여러 종류가 있다.
- ClusterIP (default) - 클러스터 내부에서만 접근 가능한 IP
- NodePort - Port번호를 통해 외부에서 접근 (NAT 컨샙)
- Load Balancer - 외부의 Load Balancer를 사용하는 방법
- ExternalName - kube-dns 컴포넌트로 DNS를 이용하는 방법
서비스는 추상적이지만 service와 pods는 내부에서 각기 다른 IP를 갖는다.
따라서 port를 가지며 각 포트를 아래의 3가지를 통해 타겟팅이 가능하다.
- NodePort
- Port
- TargetPort
예를 들어 리눅스 서버의 IP가 192.87.12.2라면 192.87.12.2:30005 주소를 통해 pod에 접근할 수 있다.
해당 범위, 30000 ~ 32767 포트를 주로 사용한다.
예제
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app.kubernetes.io/name: proxy
spec:
containers:
- name: nginx
image: nginx:stable
ports:
- containerPort: 80
name: http-web-svc
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app.kubernetes.io/name: proxy
ports:
- name: name-of-service-port
protocol: TCP
port: 80
targetPort: http-web-svc
참조 : https://kubernetes.io/ko/docs/concepts/services-networking/service/
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스를 활용한 네이티브 데브옵스 - 4장 오브젝트 다루기 (0) | 2024.09.27 |
---|---|
쿠버네티스를 활용한 네이티브 데브옵스 - 3장 쿠버네티스 구축하기 (0) | 2024.09.18 |
Kubernetes - minikube 실행 (0) | 2024.09.18 |
Kubernetes란? (0) | 2023.05.14 |
Kubernetes - 도커를 이용한 쿠버네티스 예제 (0) | 2023.03.25 |