작성중...
서비스 API 카테고리
컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스
- 서비스
- ClusterIP
- ExternalIP (ClusterIP의 한 종류)
- NodePort
- LoadBalancer
- Headless (None)
- ExternalName
- None-Selector
- 인그레스
쿠버네티스 클러스터 네트워크와 서비스
파드
# 쿠버네티스 API에 접속할 수 있도록 쿠버네티스 서비스가 생성됨
$ kbuectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.3.240.1 <none> 443/TCP 5d10h
sample-clusterip ClusterIP 10.3.251.192 <none> 8080/TCP 76m
ClusterIP 서비스 생성
ClusterIP는 쿠버네티스 클러스터 외부(노드)에서 트래픽을 수신할 필요가 없는 환경에서 클러스터 내부 로드밸런서를 사용한다.
기본적으로 ClusterIP가 발급되어 있다.
외부 네트워크(노드)에서 파드로 트래픽을 수신하는 순서
1. ClusterIP 서비스(클러스터 내부 로드밸런서) (10.3.251.192.8080)
2. 파드 (10.0.2.124:80)
apiVersion: v1
kind: Service
metadata:
name: sample-clusterip
spec:
type: ClusterIP
ports:
- name: "http-port"
protocol: "TCP"
port: 8080
targetPort: 80
selector:
app: sample-app
port : 파드(내부 로드밸런서, ClusterIP 서비스)가 수신할 포트 번호
targetPort: 컨테이너가 수신할 포트 번호
설정 항목 | 개요 |
spec.ports[].port | ClusterIP에서 수신할 포트 번호 |
spec.ports[].targetPort | 목적지 컨테이너 포트 번호 |
# 일시적으로 파드를 기동하여 ClusterIP로 전송되는 트래픽이 분산되는 것을 확인
$ kubectl run --image=amsy810/tools:v2.0 --restart=Never --rm -i testpod \
--command -- curl -s http://sample-clusterip:8080
Host=sample-clusterip Path=/ From=sample-deployment-7c6d ClientIP=10.0.2.168 XFF=
pod "testpod" deleted
(여러 번 실행하면 비슷한 빈도로 세 개의 파드명이 표시된다.)
Host=sample-clusterip Path=/ From=sample-deployment-7c87 ClientIP=10.0.2.169 XFF=
pod "testpod" deleted
Host=sample-clusterip Path=/ From=sample-deployment-7c64 ClientIP=10.0.2.170 XFF=
pod "testpod" deleted
ClusterIP 가상 IP 정적 지정
apiVersion: v1
kind: Service
metadata:
name: sample-clusterip-vip
spec:
type: ClusterIP
clusterIP: 10.3.251.194 # 실습 환경에 맞춰 IP를 변경
ports:
- name: "http-port"
protocol: "TCP"
port: 8080
targetPort: 80
selector:
app: sample-app
# 메니페스트에 작성된 ClusterIP 변경
$ sed -i -e 's|10.3.251.194|10.3.251.195|g' sample-clusterip-vip.yaml
# 이미 할당된 clusterIP 주소를 변경하려는 경우
$ kubectl apply -f sample-clusterip-vip.yaml
The Service "sample-clusterip-vip" is invalid: spec.clusterIP: Invalid value:
"10.3.251.195": field is immutalbe
'Kubernetes' 카테고리의 다른 글
서비스 API 카테고리(LoadBalancer) (0) | 2024.02.08 |
---|---|
서비스 API 카테고리(ExternalIP, NodePort) (0) | 2024.02.07 |
서비스 API 카테고리(서비스) (0) | 2024.01.20 |
워크로드 API 카테고리(크론잡) (0) | 2024.01.20 |
워크로드 API 카테고리(잡) (0) | 2024.01.14 |