반응형
설명
- nginx + spring boot 예제를 활용하여 service 특징 확인
type
- ClusterIP
- 서비스를 클러스터 내에서만 접근 가능
- service type의 default값
- NodePort
- {node_ip}:{node_port} 를 클러스터 외부에서 접근 가능
- LoadBalancer
- 클라우드 공급자의 로드 밸런서를 사용해 서비스를 외부에 노출
- ExternalName
- 프록시 역할?
클러스터 내부에서 접근 예제 - ClusterIP
- webserver-service.yml
apiVersion: v1 kind: Service metadata: name: webserver-service spec: type: ClusterIP ports: - name: http protocol: TCP port: 80 targetPort: 80 selector: app: webserver
- 적용
kubectl apply -f webserver-service.yml
- 서비스 확인
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 30m webserver-service ClusterIP 10.97.97.147 <none> 80/TCP 12m
- 클러스터 내부에서 접근 가능 확인
kubectl run -it test-pod \ --image=byrnedo/alpine-curl \ --rm --restart=Never \ --command -- curl http://webserver-service
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> Hello World </body> </html>
클러스터 외부에서 접근 예제 - ClusterIP
- webserver-service.yml
apiVersion: v1 kind: Service metadata: name: webserver-service spec: type: ClusterIP ports: - name: http protocol: TCP port: 80 targetPort: 80 externalIPs: - 192.168.56.102 - 192.168.56.103 selector: app: webserver
- 적용
kubectl apply -f webserver-service.yml
- 서비스 확인
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 36m webserver-service ClusterIP 10.97.97.147 192.168.56.102,192.168.56.103 80/TCP 18m
- 클러스터 외부에서 접근 가능 확인
# 노드 IP : 192.168.56.102, 192.168.56.103 curl 192.168.56.102
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> Hello World </body> </html>
클러스터 외부에서 접근 예제 - NodePort
- webserver-service.yml
apiVersion: v1 kind: Service metadata: name: webserver-service spec: type: NodePort ports: - name: http protocol: TCP port: 80 targetPort: 80 nodePort: 30080 # 30000-32767 사이값, 설정값 없으면 랜덤으로 지정 selector: app: webserver
- 적용
kubectl apply -f webserver-service.yml
- 서비스 확인
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 60m webserver-service NodePort 10.97.97.147 <none> 80:30080/TCP 42m
- 클러스터 외부에서 접근 가능 확인
# 노드 IP : 192.168.56.102, 192.168.56.103 curl 192.168.56.102:30080
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> Hello World </body> </html>
참고
반응형
'Development > Kubernetes' 카테고리의 다른 글
[Kubernetes] Helm Templates (0) | 2020.12.29 |
---|---|
[Kubernetes] Helm 설치 (0) | 2020.12.29 |
[Kubernetes] 예제 (0) | 2020.12.29 |
[Kubernetes] 명령어 (0) | 2020.12.29 |
[Kubernetes] Minikube 설치 (0) | 2020.12.29 |