CKA 자격증 따기 - day17
Container Networking Interface(CNI)
1. Create Network Namespace
2. Create Bridge Network/Interface
3. Create VETH Pairs(Pipe, Virtual Cable)
4. Attach vEth to Namespace
5. Attach Oher vEth to Bridge
6. Assign IP Address
7. Bring the interfaces up
8. Enable NAT - IP Masquerade
- 도커 역시 여러 네임스페이스를 연결하는 방식과 동일한 방식이다.
 - 타 컨테이너 솔루션도 같은 방식으로 네트워크 문제를 해결한다. (
rkt, MESOS) - 2 ~ 8번까지 단일 표준 접근 방식으로 
bridge라고 부름(프로그램이나 스크립트로 만듬) 
# rkt또는 k8s가 세컨테이너를 생성할때마다 브리지 플러그인을 호출하고 전달
bridge add 2e34dcf34 /var/run/netns/23e4dcf34
- 위에 있는 
bridge프로그램은 CNI용 플러그인이다. - CNI 플러그인 기본
    
- BRIDGE
 - VLAN
 - IPVLAN
 - MACVLAN
 - WINDOWS
 - host-local
 - DHCP
 
 - CNI 플러그인 벤더
    
- weaveworks
 - flannel
 - cilium
 - NSX
 - Calico
 - infoblox
 
 - CNI는 컨테이너 런타임이나 플로그인을 위한 몇가지 요소들을 정의한다.
    
- 각 컨테이너에 대한 네트워크 네임스페이스 생성을 담당 하도록 지정
 - 컨테이너가 런타임에 연결한 다음 호출해야 하는 네트워크를 식별해야 한다.
 - 컨테이너 런타임은 컨테이너가 추가, 삭제 되면 네트워크 플러그인(bridge)를 호출한다.
 - 네트워크 설정은 JSON 파일 형식으로 관리한다.
 - 모든 컨테이너 런타임은 CNI를 구현해야만한다.
 
 - 
    
docker는
CNI를 구현하지 않고CNM이라는 자체 표준을 구현- 비슷하나 약간의 차이가 있어서 Docker와 통합되지 않음
 - k8s도 아래 방식으로 CNI를 구현
 
# cni network가 없어서 아래 명령어는 실패 $ docker run --network=cni-bridge nginx # 따라서 직접 만들어서 해결해야됌 $ docker run --network=none nginx $ bridge add 2e43dcf34 /var/run/netns/2e34dcf34 
      
댓글남기기