코딩과로그

[기록용] 쿠버네틱스 구성요소 - Service 본문

쿠버네틱스

[기록용] 쿠버네틱스 구성요소 - Service

피리음 2023. 4. 10. 23:16
  • Pod는 기본적으로 내부 IP를 갖는다.  포드끼리 통신하려면 서로의 IP 주소를 알아야될 것이다. 근데 Pods는 변경되는 게 일상이다보니 IP 로 특정 노드를 지정하는 것은 꽤나 어려운 일이다.
  • 서비스 객체(Service Object)는 공유 IP를 포드와 그룹으로 묶는다.
  • 서비스 객체는 포드를 클러스터 외부와 통신할 수 있게 한다. 디폴트는 외부 통신이 불가하다. 수정이 필요하다.

 

# 서비스를 생성하여 deployment에 의해서 만들어진 포드를 외부와 통신할 수 있게 해준다.
	# ClusterIP로 설정하면 내부에서만 사용이 가능하다. 정적인 IP를 생성하는 거라 의미는 있지만 지금 중요한 것은 아니다.
    # LoadBalancer 는 고유한 IP를 만들고 이름처럼 포드들에 트래픽을 균등히 분배한다. (클러스터를 실행하고 있는 녀석이 로드밸런싱을 지원해야 된다. AWS 와 큐브박스는 지원한다)
# kubectl expose deployment {deploy-name} --type={ClusterIP | LoadBalancer | NodePort} --port={포드가 expose중인 PORT_NUM}
$ kubectl expose deployment first-dep --type=LoadBalancer --port=8080


$ kubectl get services                                               
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
first-dep    LoadBalancer   10.110.29.253   <pending>     8080:31616/TCP   13s
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          4h26m
~                                                                                  11:25:09 오후

$ minikube service first-dep
|-----------|-----------|-------------|---------------------------|
| NAMESPACE |   NAME    | TARGET PORT |            URL            |
|-----------|-----------|-------------|---------------------------|
| default   | first-dep |        8080 | http://192.168.49.2:31616 |
|-----------|-----------|-------------|---------------------------|
🏃  Starting tunnel for service first-dep.
|-----------|-----------|-------------|------------------------|
| NAMESPACE |   NAME    | TARGET PORT |          URL           |
|-----------|-----------|-------------|------------------------|
| default   | first-dep |             | http://127.0.0.1:35013 |
|-----------|-----------|-------------|------------------------|
🎉  Opening service default/first-dep in default browser...
❗  Because you are using a Docker driver on linux, the terminal needs to be open to run it.
Opening in existing browser session.
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0