Service.yaml

로로·2023년 11월 12일
0

서비스(Service)

Pod를 외부와 연결시켜주는 오브젝트
포트를 외부로 노출해 사용자들이 접근하거나, 다른 디플로이먼트의 포드들이 내부적으로 접근이 필요한 경우 생성
서비스 구성시 파드 고유 IP가 변경되더라도 호출 IP는 변경되지 않음

  • ClusterIP : 클러스터 내 접근가능, 외부접근 불가능
  • NodePort : 클러스터의 모든 노드에 동일하게 개방
  • Load Balancer : 로드 밸런스를 동적으로 프로비저닝하여 포드에 연결

apiVersion: v1
kind: Service
metadata:
  name: {{PN}}-svc			# 서비스명
  namespace: {{NS}}
spec:
  type: ClusterIP | NodePort | LoadBalancer
  selector:					# 어떤 라벨을 갖는 포드에 접근할 수 있게 만들 것인지 결정
    app: {{PN}}-pod			# metadata.labels.app와 동일한 Pod
  ports:
    - name: web-port
  # - protocol: TCP
      port: {{PORT}}		# 쿠버네티스 내부에서만 사용할 수 있는 고유한 IP
      targetPort: {{POD-PORT}}  # 연결하고 싶은 Pod의 포트
      # nodePort : {{NODE-PORT}} NodePort인 경우 30000-32767

명령어

$ kubectl apply -f hostname-svc-clusterip.yaml
$ kubectl get services
$ kubectl get svc # services
$ kubectl delete svc hostname-svc-clusterip
$ kubectl delete -f hostname-svc-clusterip.yaml

접속 확인 방법

# 서버에 접속한 뒤
$ curl {ClusterIP}:{PORT} --silent
$ curl {{{PN}}-svc}:{PORT} --silent

참고 :
https://hungc.tistory.com/187
https://velog.io/@rhee519/deployment-service-ingress
yaml문법 참고 : https://subicura.com/k8s/prepare/yaml.html#%E1%84%80%E1%85%B5%E1%84%87%E1%85%A9%E1%86%AB%E1%84%86%E1%85%AE%E1%86%AB%E1%84%87%E1%85%A5%E1%86%B8

profile
청로하~🏝️

0개의 댓글

관련 채용 정보