단일 노드 쿠버네티스 클러스터
노드에는 기본적으로 IP 주소가 있다. IP 주소를 통해 쿠버네티스 노드에 접근할 수 있다. 혹은 SSH를 이용한 접근이 가능하다.
쿠버네티스 설정 시 내부 네트워크가 10.244.0.0 대역으로 생성된다. 그리고 이 네트워크 대역으로 모든 Pod가 연결되어 여러 개의 pod를 배포하면 각각 별도의 IP가 할당되어 서로 통신할 수 있게 된다.
* Docker의 경우, 컨테이너레에 항상 IP 주소가 자동으로 할당된다.
다중 노드 쿠버네티스 클러스터
Node에 Pod를 생성하면 10.244.0.0 대역의 네트워크와 연결되고, 각 Pod는 해당 네트워크 대역의 IP를 할당받는다.
그렇다면 다중 노드에서는 어떻게 작동할 것인가?
하나의 쿠버네티스 클러스터 안에 192.168.1.2(Node A)와 192.168.1.3(Node B)이 할당된 두 개의 노드가 있다고 가정해보자.
계속 말했듯이 pod는 10.244.0.0 대역에 연결되고, 각 pod마다 10.244.x.x IP를 할당받는다고 했다.
그럼 두 개의 노드를 생성했을 때 A 노드에도 10.244.0.0 대역의 네트워크가 생성될 것이고, B 노드에도 10.244.0.0 대역의 네트워크가 생성될 것이다.
이 상황에서는 IP 충돌 문제가 발생하게 된다...
* 다른 클러스터에서 생성됐을 경우, 별개의 네트워크로 간주되기 때문에 IP 충돌이 일어나지 않는다.
쿠버네티스는 이러한 네트워킹 문제를 자동으로 설정해주지 않는다....
직접 네트워킹 솔루션을 설정해줘야 하는데, 필수 요구 사항을 살짝 살펴보자면,,,
1. 쿠버네티스 클러스터의 모든 컨테이너 또는 Pod가 NAT 없이 통신할 수 있어야 한다.
2. 모든 노드와 컨테이너가 서로 통신할 수 있어야 한다.
→ 네트워크 충돌이 일어나면 절대 안 된다는 뜻이다, , ,
하지만 여러가지 네트워크 솔루션 Cisco ACI Network, Cilium, Big Cloud Fabric, Vmware NSX-T, Calico 등이 존재한다.
직접 시스템에 쿠버네티스 클러스터를 설정할 경우, Calico, Flannel과 같은 솔루션을 이용할 수 있다.
Vmware 환경에서는 NSX-T를 사용하는 것이 좋다.
네트워크 솔루션은 IPS를 관리하고 각각의 Pod에 다른 네트워크 주소를 할당하는 역할을 한다. → 각 Pod에 고유한 IP 주소를 할당한다.
그리고 라우팅 기술을 사용하여 클러스터 내에 있는 다른 노드와 포드 사이의 통신을 가능하게 만들어준다. → 쿠버네티스 네트워크 요구 사항에 부합!!!
'쿠버네티스' 카테고리의 다른 글
Kubernetes Services 2 - ClusterIP, Load Balancer (0) | 2024.11.14 |
---|---|
Kubernetes Services 1 - NodePort (0) | 2024.11.14 |
YAML 파일을 쿠버네티스에 적용하기 - Deployments (0) | 2024.11.13 |
YAML 파일을 쿠버네티스에 적용하기 - ReplicaSet (0) | 2024.11.12 |
YAML 파일을 쿠버네티스에 적용하기 - Pod (0) | 2024.11.11 |