Services란 포드에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 방법이다. 즉, 서비스를 통해 포드에 접근할 수 있다.
이 글에서는 Services 목록 및 정보를 확인하고, 생성하는 방법에 대해 정리한다.
Services 목록 확인
get 명령어로 Services 목록을 확인한다. 서비스의 이름, 유형 등을 확인할 수 있다.
kubectl get service
사진에서 확인할 수 있는 kubernetes 서비스는 kubernetes 시작 시 생성된 기본 서비스이다.
Services 상세 정보 확인
describe 명령어로 Services의 상세 정보를 확인한다. Port, TargetPort, Label, Endpoints 등의 정보를 확인할 수 있다.
kubectl describe service <NAME>
# 예시
kubectl describe service kubernetes
Port는 서비스가 클러스터 내에 노출한 포트이다. 즉, 서비스는 이 포트에 대해서 보이며, 이 포트로 보내진 요청은 서비스에 의해 선택된 포드로 전달된다.
TargetPort는 포드로 전달되는 요청이 도달하는 포트이다. 서비스가 동작하기 위해서는 애플리케이션이 TargetPort에 대한 네트워크 요청을 listening 해야 한다.
포드 연결 서비스 생성
expose 명령으로 특정 pod에 요청을 전달하는 서비스를 생성한다.
kubectl expose pod <POD_NAME> --port=<PORT> --name=<SERVICE_NAME>
# 예시
kubectl expose pod redis --port=6379 --name=redis-service
# 포트 및 타입 지정
kubectl expose pod httpd --name=httpd --port=80 --type=ClusterIP
또는 Service 정의 yaml 파일을 사용하여 생성한다.
apiVersion: v1
kind: Service
metadata:
name: webapp-service # Service 이름
spec:
type: NodePort # Service 유형
ports: # Port 정의
- targetPort: 8080
port: 8080
nodePort: 30080
selector: # 연결 Pods
name: simple-webapp
참고 문서
https://kubernetes.io/ko/docs/concepts/services-networking/service/
https://kimmj.github.io/kubernetes/port-targetport-nodeport-in-kubernetes/