728x90
반응형
# 서비스와 클러스터IP 소개
- 로드밸런싱, 포드를 선택하는 역할
- port: 서비스를 할 포트
- targetPort: pod의 포트
- selector는 label과 관련되어 있고, 해당 selector를 기준으로 로드밸런싱 등 작업을 수행한다.
- yaml 파일들중 ports 처럼 복수의 값을 부여하는 경우 - 을 기준으로 단을 구분한다.
# 서비스 관련 실습은 GKE에서 실행
kubectl create deploy --image=gasbugs/http-go http-go --port=8080 --dry-run=client -o yaml > http-go-deploy.yaml
vim http-go-deploy.yaml
# 서비스 추가하기
쿠버네티스 공식사이트 검색 > service > service-Kubernetes > kind: 검색
# 서비스 내용 추가
apiVersion: v1
kind: Service
metadata:
name: http-go-svc
spec:
selector:
run: http-go
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: http-go
name: http-go
spec:
replicas: 1
selector:
matchLabels:
run: http-go
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: http-go
spec:
containers:
- image: gasbugs/http-go
name: http-go
ports:
- containerPort: 8080
resources: {}
status: {}
- 서비스포트 -> pod 포트
- port: 서비스할 포트
- port: pod들의 포트
# 작성한 yaml파일 실행하기
kubectl create -f http-go-deploy.yaml
kubectl get all
# 서비스 정보 확인하기
- ip 까지 할당 받았는지 확인하기
kubectl get pod -o wide
- 서비스의 ip 기억하기
kubectl describe svc
- Endspoints 에 서비스ip와 port를 확인 할 수 있다.
# 스케일링 하기
kubectl scale deploy http-go --replicas=5
kubectl get pod -w
kubectl get pod -o wide
kubectl describe svc
- http-go-svc 의 정보를 확인하면 ip가 총 5개가 할당된것을 확인 할 수 있다.
# edit으로 svc를 수정해보자.
kubectl edit svc http-go-svc
spec 정보에 sessionAffinity 라는 정보를 수정해보자.
sessionAffinity: ClientIP
- 저장이 안될경우 wq! 로 저장을 한다.
kubectl get svc
# 클러스터 IP 정보를 가지고 접속해보자
kubectl run -it --rm --image=busybox bash
wget -O- -q [ 클러스터 IP]
wget -O- -q 10.108.2.7
- 접속을 해보면 해당 서비스는 로드밸런싱 되지 않는다. 이유는 클라이언트IP를 부여해 놓았기 때문이다.
- 내부의 서비스를 공유하기 위한 서비스라고 생각하면 쉽다.
728x90
반응형
'⭐ Kubernetes & EKS > 서비스 (Service)' 카테고리의 다른 글
K8S에서 Service의 주요 역할 (0) | 2024.08.21 |
---|---|
포트별로 서비스 갯수 및 형태를 나누기 (0) | 2023.03.21 |
service.yaml 파일에 healthcheck 설정 (0) | 2022.10.14 |
외부로 서비스하는 방법들과 노드포트 실습 (0) | 2021.09.09 |