Kubernetes Service

0️⃣1️⃣·6일 전
0

쿠버네티스

목록 보기
2/4

서비스

  • 외부와 접하는 단일 엔드포인트 뒤에 있는 클러스터에서 실행되는 애플리케이션을 노출시키는 역할
  • 셀렉터를 이용하여 쿠버네티스 파드에 대한 접근을 추상화
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
  • 이 명세는 my-service라는 새로운 서비스 오브젝트를 생성하고, app.kubernetes.io/name=MyApp 레이블을 가진 파드의 TCP 9376 포트를 대상으로 한다.
  • 쿠버네티스는 이 서비스에 서비스 프록시가 사용하는 IP 주소를 할당한다.
  • 서비스 셀렉터의 컨트롤러는 셀렉터와 일치하는 파드를 지속적으로 검색하고, my-service라는 엔드포인트 오브젝트에 대한 모든 업데이트를 POST한다.
  • 외부 시스템이나 마이그레이션 도중에는 서비스 셀렉터없이 서비스를 생성할 수 있다.

엔드포인트

  • 네트워크 엔드포인트의 목록을 정의
  • 일반적으로 트래픽이 어떤 파드에 보내질 수 있는지를 정의하기 위해 서비스가 참조
  • 엔드포인트슬라이스
    • 특정 서비스의 하위 네트워크 엔드포인트 부분집합을 나타내는 오브젝트

서비스 디스커버리

  • 쿠버네티스는 서비스를 찾는 두 가지 기본 모드를 지원한다.
    • 환경 변수
      • 파드가 노드에서 실행될 때, kubelet은 각 활성화된 서비스에 대한 환경 변수 세트를 추가한다.
      • 서비스 네임을 프리픽스로 하고, PORT, HOST, ADDR 등의 환경 변수를 추가한다.
    • DNS
      • 서비스 이름과 네임 스페이스 조합으로 DNS 레코드를 만든다.

서비스 퍼블리싱

  • 서비스를 클러스터 밖에 위치한 외부 IP 주소에 노출하기 위함

ClusterIP

  • 서비스를 클러스터-내부 IP에 노출시킨다. 이 값을 선택하면 클러스터 내에서만 서비스에 도달할 수 있다. 이것은 서비스의 type을 명시적으로 지정하지 않았을 때의 기본값이다.

NodePort

  • 고정 포트로 각 노드의 IP에 서비스를 노출시킨다. 노드 포트를 사용할 수 있도록 하기 위해, 쿠버네티스는 ClusterIP인 서비스를 요청했을 때와 마찬가지로 클러스터 IP 주소를 구성한다.

LoadBalancer

  • 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다.

ExternalName

  • 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 내용에 매핑한다. 어떠한 종류의 프록시도 설정되지 않는다.
post-custom-banner

0개의 댓글