쿠버 공부 - 서비스

00_8_3·2021년 5월 19일
0

쿠버네티스 공부

목록 보기
8/11

쿠버네티스 서비스란

서비스 개념

컨트롤러와 서비스
디플로이먼트 컨트롤러(다른 컨트롤러도)로 만들어진 pod들의 진입점 ip를 갖는다.

deployment.yaml

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: webui-svc
spec:
  clusterIP: 10.96.100.100 // 보통 생략한다. 버츄얼 IP, LB Ip
  selector:
    app:webui
  ports:
  - protocol: TCP
    port: 80 // 클러스터 IP의 포트
    targetPort: 80 // Pod의 포트

서비스 타입 4가지

ClusterIP

: 단일 진입점, 가장작고 가장 기본, virtual IP, service API
랜덤 진입(라운드 로빈 X)

apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
spec:
  type: ClusterIP  // 타입지정
  clusterIP: 10.100.100.100  //고정 ip
  selector:
    app: webui  // 셀렉터를 통해 labels를 묶어준다.
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

NodePort

: 클러스트 ip가 생성된 후,모든 워크 노드에 외부에서 접속 가능한 포트 예약, Node까지 확장

Default NodePort 범위 : 30,000-32,767

apiVersion: v1
kind: Service
metadata:
  name: nodeport-service
spec:
  type: NodePort  //
  clusterIP: 10.100.100.100
  selector:
    app: webui
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30200  // 10.100.100.100:30200으로 접속하면 Pod에 랜덤으로 접속

LoadBalancer

: 퍼블릭 클라우드(aws gcp Azure)에서만 사용가능, 로드밸런서 기능

ExternalName

: DNS기능 지원

<서비스이름>.default.svc.cluster.local ==> google.com 로 연결됨

서비스 사용하기

헤드리스 서비스

  • ClusterIP가 없는 서비스로 단일 진입점이 필요 없을 때 사용
  • 서비스와 연결된 Pod의 엔드포인트로 DNS 레코드가 생성됨 ( DNS 리졸빙 서비스 지원?)

core DNS

<>.default.pod.cluster.local

  • StatefulSet에서 유용하게 사용가능
apiVersion: v1
kind: Service
...

spec:
  type: ClusterIP
  clusterIP: None // 헤드리스 서비스 설정
  selector:
    app: webui

kube-proxy

로드밸런스 역할, 쿠버네티스의 네트웍 서비스를 지원

iptables의 룰을 만들어준다.

0개의 댓글