쿠버네티스 서비스란

  • 쿠버네티스 네트워크이다.
  • api 서비스이다.
  • service는 쿠버네티스에 동일한 레이블을 가진 파드들을 하나의 ip로 묶어서 관리를 요청한다.
    • 쿠버네티스는 동일한 레이블을 갖고 있는 pod를 하나의 virtual ip로 묶는다.
    • virtual ip는 로드밸런스 ip가 된다.
    • 즉 이러한것이 만들어지도록 요청하는것이 쿠버네티스 서비스이다.

서바스 타입

  • cluster ip

    • 기본 cluspte의 역할로 로드밸런서 ip를 만듦

    • 예제

      kind: Service
      metadata:
      name: ${name}
      spec:
      type: ClusterIP
      clusterIP: ${ip}
      selector:
      app: ${app}
      ports:
      - protocol: TCP
      port: ${virtual ip port}
      targetPort: ${pod port}
  • node port

    • cluster ip 기능에 추가로 포트까지 지원함

    • 즉 로드밸런서 ip에 포트까지 붙일 수 있도록 지원

    • 외부에서 들어올수 있는 노드의 포트가 열림

    • 워커 노드가 1,2,3이 있고 각각에 pod가 하나씩 있을때

      • 2번 워커노드의 열린 포트로 클라이언트가 요청을 하면

      • 해당 워커노드가 로드밸런싱을 하여 1,2,3번의 내부 pod 중 하나로 요청을 보내준다.

        kind: Service
        metadata:
        name: ${name}
        spec:
        type: NodePort
        clusterIP: ${ip}
        selector:
        app: ${app}
        ports:
        - protocol: TCP
        port: ${virtual ip port}
        targetPort: ${pod port}
        nodePort : ${node port}
  • loadbalaner

    • 클러스터 Ip 에 추가로 실제 로드밸런서 장비의 포트와 virtual 로드밸런서 포트를 연결
    • 물리 로드밸런서가 node port 로 요청을 전달
  • external Name

    • 네이밍 서비스를 만든다.
    • dns 서비스를 클러스터 내부안에서 지원해준다.
    • 보통 외부 서버로 요청을 연결하는 경우에 사용한다.
  • 확인해보기

    • ip : lb ip
    • endpoints : 실제 연결되는 ip
  • kubectl describe svc clusterip-service

  • 서바스 중단

  • kubectl delete service -all

헤드리스 서비스

  • clusterip가 없는 서비스로 단일 진입점이 따로 필요 없을때 사용됨
  • 하지만 endpoint로는 묶어줌
  • pod들의 endpoint를 dns resolving service 쓸 수 있도록 함
  • 즉 pod하나하나에 대한 dns를 core dns에 등록하여 각각 쓸 수 있음
    apiVersion: v1
    kind: Service
    metadata:
    name: ${name}
    spec:
    type: ClusterIP
    clusterIP: None #이부분으로 사실상 헤드리스 서비스 명시!
    ###kube-procy
  • 쿠버네티스의 백엔드를 구현
  • 즉 clusert ip를 쓰면, 실제로는 실제 각 노드별로 iptables가 있어서, 이게 요청을 받으면 각 내부 pod중 한개로 전달하는 방식이다.
  • 그래서 실제 노드에서 iptables확인해보면 iptables가 찍힌다.
  • node port를 쓰는 경우 해당 포트를 리슨함

'쿠버네티스' 카테고리의 다른 글

ha 쿠버네티스(multimaster 쿠버네티스)  (0) 2022.04.05
job/cronjob  (0) 2022.04.04
StatefulSet  (0) 2022.04.04
daemonset  (0) 2022.04.04
ReplicaSet  (0) 2022.04.04

+ Recent posts