컨테이너 네트워킹 인터페이스(CNI)
네트워크 네임스페이스와 브리지 네트워크
- 네트워크 네임스페이스: 시스템 내에서 격리된 네트워크 환경을 생성.
- 브리지 네트워크: 여러 네임스페이스를 연결하는 가상 네트워크 장치.
- 가상 케이블: 가상 인터페이스를 통해 네임스페이스와 브리지 네트워크를 연결.
- IP 할당 및 NAT 설정: 네임스페이스에 IP를 할당하고, 외부 통신을 위해 NAT 또는 IP 마스커레이드를 설정.
Docker의 브리지 네트워크
- Docker는 기본적으로 브리지 네트워크를 사용하여 컨테이너 간 통신을 설정.
- Docker는 브리지 네트워크를 통해 컨테이너를 호스트 네트워크에 연결.
다양한 컨테이너 솔루션의 네트워킹 문제 해결
- 여러 컨테이너 솔루션(예: Rocket, Mesos, Kubernetes)은 유사한 네트워킹 문제를 해결.
- 각 솔루션은 네트워킹 문제를 해결하기 위해 약간씩 다른 방식을 사용하지만, 기본 개념은 유사.
컨테이너 네트워크 인터페이스(CNI)
- CNI: 컨테이너 런타임 환경에서 네트워킹 문제를 해결하기 위한 표준을 정의.
- 플러그인: CNI는 네트워크 문제를 해결하기 위한 프로그램을 플러그인으로 정의.
- 브리지 플러그인: 브리지 네트워크 설정을 위한 CNI 플러그인.
CNI의 역할과 기능
- 컨테이너 런타임의 역할:
- 각 컨테이너에 대한 네트워크 네임스페이스 생성.
- 컨테이너가 연결되어야 하는 네트워크 식별.
- 컨테이너 생성 시 add 명령어로 플러그인 호출.
- 컨테이너 삭제 시 del 명령어로 플러그인 호출.
- 네트워크 플러그인 설정을 위한 JSON 파일 사용.
- 플러그인의 역할:
- add, del, check 명령어 지원.
- 컨테이너와 네트워크 네임스페이스에 대한 파라미터 수락.
- 컨테이너에 IP 주소 할당 및 필요한 라우트 설정.
- 결과를 특정 형식으로 반환.
CNI 플러그인 예시
- 기본 플러그인: Bridge, VLAN, IP VLAN, MAC VLAN, Windows용 플러그인.
- IPAM 플러그인: Host Local, DHCP.
- 서드파티 플러그인: Weave, Flannel, Cilium, VMware NSX, Calico, Infoblox 등.
Docker와 CNI의 차이점
- Docker는 CNI 대신 CNM(Container Network Model)을 사용.
- Docker는 자체 네트워킹 표준을 가지고 있으며, CNI 플러그인과 기본적으로 호환되지 않음.
- Kubernetes는 Docker 컨테이너를 생성할 때 CNI 플러그인을 사용하여 네트워크 설정을 수행.
요약
- 네트워크 네임스페이스와 브리지 네트워크를 통해 컨테이너 네트워킹을 설정.
- CNI는 컨테이너 런타임 환경에서 네트워킹 문제를 해결하기 위한 표준을 제공.
- 다양한 플러그인을 통해 네트워킹을 설정하고, 컨테이너 런타임과 플러그인이 표준에 따라 동작
---
Kubernetes 클러스터 네트워킹 구성
마스터 노드와 워커 노드의 네트워킹 구성
- 인터페이스와 주소 설정:
- 각 노드는 네트워크에 연결된 최소한의 인터페이스가 필요.
- 각 인터페이스는 주소가 설정되어야 함.
- 호스트는 고유한 호스트 이름과 MAC 주소를 가져야 함.
- 포트 설정:
- API 서버 (마스터 노드): 6443 포트
- 워커 노드, kube control 도구, 외부 사용자 및 기타 컨트롤 플레인 구성 요소가 이 포트를 통해 API 서버에 접근.
- kubelet (마스터 및 워커 노드): 10250 포트
- kube 스케줄러 (마스터 노드): 10259 포트
- kube 컨트롤러 매니저 (마스터 노드): 10257 포트
- 워커 노드 서비스: 30000~32767 포트
- 외부 접근을 위해 워커 노드에서 서비스를 노출.
- ETCD 서버 (마스터 노드): 2379 포트
- 여러 마스터 노드가 있는 경우, ETCD 클라이언트 간 통신을 위해 추가로 2380 포트가 필요.
- API 서버 (마스터 노드): 6443 포트
네트워킹 구성 체크리스트
- 포트가 올바르게 열려 있는지 확인:
- 방화벽, IP 테이블 규칙, 클라우드 환경(GCP, Azure, AWS)에서 네트워크 보안 그룹 설정.
- VM을 클론하여 생성한 경우, 호스트 이름과 MAC 주소가 고유한지 확인.
참고 사항
- 네트워킹 문제 발생 시, 설정된 포트를 확인하여 문제를 조사.
- Kubernetes 공식 문서에서 포트 목록을 확인 가능.
실습 및 환경 탐색
- 명령어 준비:
- Kubernetes 클러스터의 네트워크 설정을 탐색하고 인터페이스, IP, 호스트 이름, 포트 정보를 확인.
- 향후 섹션에서 사용할 수 있도록 명령어를 준비.
- 간단한 실습:
- 기존 Kubernetes 클러스터를 탐색하고 네트워킹 정보를 확인.
- 환경에 익숙해지기 위해 인터페이스, IP, 호스트 이름, 포트 등을 확인.
- 고급 실습:
- 점진적으로 더 복잡한 실습을 진행하며, Kubernetes 네트워킹 구성에 대한 깊은 이해를 쌓음.
'kubernetes(cka)' 카테고리의 다른 글
[cka] Storage (PV, PVC) (0) | 2024.09.11 |
---|---|
[cka, kubernetes] network 사전학습 (0) | 2024.06.07 |
[Kubernetes, cka] 15. Cluster Maintenance (0) | 2024.05.16 |
[Kubernetes, cka] 14. Init Containers / Self Healing application (0) | 2024.04.15 |
[Kubernetes, cka] 13. Env 설정 / ConfigMap 활용 / Secretes (0) | 2024.04.15 |