[Kubernetes] Service - LoadBalancer ( + METALLB : on-prem 환경의 LB)
DevOps/Kubernetes2022. 5. 23. 00:38[Kubernetes] Service - LoadBalancer ( + METALLB : on-prem 환경의 LB)

✔️ Service - LoadBalancer LoadBalancer = 외부용 LoadBalancer + NodePort + ClusterIp 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다. 외부 로드 밸런서가 라우팅되는 NodePort와 ClusterIP 서비스가 자동으로 생성된다. 클라이언트들에게 192.168.100.100:31313, 192.168.100.101:31313, 192.168.100.102:31313 로 서비스를 제공하는 것은 의미가 없다. 외부용 DNS를 사용하면(www.abc.com) ip 영역은 커버할 수 있지만 포트까지는 해결할 수 없다. 사용자들이 www.abc.com:31313 으로 접근하는 것은 매우 불편하다. 따라서 우리는 다음과 같이 LB라는 서..

[Kubernetes] Service - NodePort
DevOps/Kubernetes2022. 5. 23. 00:21[Kubernetes] Service - NodePort

✔️ Service - NodePort svc.spec.type ClusterIP: 클러스터 내에서 사용하는 LB NodePort: 클러스터 외부에서 접근하는 포인트 LoadBalancer: 클러스터 외부에서 접근하는 LB vagrant@k8s-node1  ~  kubectl explain svc.spec.type "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current..

[Kubernetes] Service - Service Discovery (2)
DevOps/Kubernetes2022. 5. 21. 01:17[Kubernetes] Service - Service Discovery (2)

✔️ Challenge default NS에 myweb-svc 서비스를 만드시오 dev 라는 NS를 만들어서 nettool 파드를 띄우시오 그렇다면 nettool Pod(dev NS) ↔ myweb-svc SVC(default NS) 어떻게 통신할 것인가 ? vagrant@k8s-node1  kubectl create ns dev namespace/dev created vagrant@k8s-node1  ~/kubespray/inventory/mycluster/group_vars/k8s_cluster  ➦ e7508d7d  kubectl get ns NAME STATUS AGE default Active 4d6h dev Active 3d4h kube-node-lease Active 4d6h kube..

DevOps/Kubernetes2022. 5. 21. 00:43[Kubernetes] Service - Service Discovery (1)

✔️ Service Discovery ✔️ 환경 변수를 이용한 Service Discovery Service Discovery는 클라우드 환경에서 중요하다. 클라이언트가 있고 서버가 있을 때 서버가 ASG(AutoScaling Group)을 통해 확장하거나 축소한다. 만약 확장한다면 새로 생성된 서버의 ip를 어떻게 알 수 있을까 ? 클라우드 레벨에서는 새로 생성된 서버의 ip를 확인할 수 있지만 클라이언트의 어플리케이션은 이 정보를 어떻게 알 수 있을까? 일반적으로 서버 앞에 LB를 두고 LB가 자동으로 ASG과 연동이 되면서 스케일 인이 되면 백엔드로 자동으로 등록되고 스케일 아웃 시에는 백엔드에서 제거한다. 유일한 진입점(LB)을 만들어 해결한다. 그리고 LB에 이름을 붙인다. 클라이언트의 App은..

[Kubernetes] Service - ClusterIP
DevOps/Kubernetes2022. 5. 20. 21:50[Kubernetes] Service - ClusterIP

쿠버네티스의 네트워크 형태는 내부용 서비스, 외부 노출용 서비스, 특수한 형태(내부에서 외부로 나갈 때) 등이 있다. DB와 같이 외부로 노출되면 안되는 컨테이너는 어떻게 접근해야 할까 ? ✔️ Service - ClusterIP 쿠버네티스(클러스터) 내부에서만 사용 가능한 가상 IP를 가진 엔드포인트를 제공하는 로드밸런서 구성(L4) ClusterIP는 클러스터 내부에 새로운 IP를 할당하고 여러개의 파드를 바라보는 로드밸런서 기능을 제공한다. 그리고 서비스 이름을 내부 도메인 서버에 등록하여 파드 간에 서비스 이름으로 통신할 수 있다. 클러스터 내부에서만 접근할 수 있으며, 외부에서 접근이 불가능하므로 포트 포워딩이나 프록시를 통해 접근해야 한다. 서비스 타입을 별도로 지정하지 않으면 ClusterI..

[Kubernetes] Service & DNS (서비스와 DNS)
DevOps/Kubernetes2022. 5. 20. 15:54[Kubernetes] Service & DNS (서비스와 DNS)

✔️ Service & DNS 서비스 | Kubernetes 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 쿠버네티스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하고, 그것들 간에 로드-밸런스를 수행할 수 있다. RS(ReplicaSet)을 만들고 복제본 개수를 3으로 하면 파드 3개가 만들어지고 파드마다 고유한 ip가 부여된다. 컨테이너가 여러개 있더라도 ip는 파드에 하나만 부여된다. 컨테이너의 개수와 상관없이 같은 ip를 갖는다. 컨테이너에서 web app을 실행하고 있다면 클라이언트 입장에서 누구를 어떻게 찾아가야 하는지 알 수 없다. 그래서 우리는 Service라는 리소스를 만들게 되며 Service 리소스는 각 파드와 연결된다. SVC(..

image