반응형
servie 타입 : 프록시처럼 네트워크 트래픽을 pod로 포워딩행 주는 역할을 하는 k8s의 API 오브젝트
여러 pod가 같은 서비스를 제공할 때 대표되는 역할을 수행한다.
- ClusterIP (default) : 서비스를 클러스터-내부 IP에 노출시킨다.
- NodePort : 고정 포트 (NodePort)로 각 노드의 IP에 서비스를 노출시킨다.
- LoadBalancer : 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다.
- ExternalName: 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠 (예:foo.bar.example.com)에 매핑한다.
my-service라는 오브젝트를 생성하고 app 이름이 MyApp인 파드세트를 대상으로 서비스 제공
80포트를 pod릐 9376포트로 매핑
targetPort를 지정하지 않으면 port와 같은 값으로 설정되고
Service spec에서 type을 지정하지 않으면 ClusterIP로 기본 설정된다.
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
멀티포트인 경우
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
- name: https
protocol: TCP
port: 443
targetPort: 9377
NodePort 타입인 경우
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
selector:
app: MyApp
ports:
# 기본적으로 그리고 편의상 `targetPort` 는 `port` 필드와 동일한 값으로 설정된다.
- port: 80
targetPort: 80
# 선택적 필드
# 기본적으로 그리고 편의상 쿠버네티스 컨트롤 플레인은 포트 범위에서 할당한다(기본값: 30000-32767)
nodePort: 30007
LoadBalancer 타입인 경우
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
clusterIP: 10.0.171.239
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 192.0.2.127
참고 : https://kubernetes.io/ko/docs/concepts/services-networking/connect-applications-service/
https://kubernetes.io/ko/docs/concepts/services-networking/_print/
반응형
'IT Tech > Cloud' 카테고리의 다른 글
Pets vs Cattle (0) | 2021.08.23 |
---|---|
[YAML] PV, PVC 만들기 (0) | 2021.08.22 |
[YAML] POD생성 (0) | 2021.08.22 |
[k8s] Helm (0) | 2021.08.20 |
[k8s] 튜토리얼, 학습사이트 (0) | 2021.08.18 |