210-223
클러스터의 네트워크 계층이 있음
파드 사이의 통신은 어떻게? -> 네트워크 솔류션을 직접 구현 해야함 -> 요구사항은 밝혀둠
CNI -> 쿠버네티스가 파드 만드는 동시에 네으퉈크 설정 스크립트를 실행 함
kubelet 은 컨테이너 실행될 때마다 cin-conf-dir, cni-bin-dir참조 -> 네트워크 스트크립트 실행
ps -aux | grep kubelet -> CNI에 관한 kubelet 설정확인 가능
ls /opt/cni/bin 모든 CNI 플러그인 실행 가능..
/etc/cni/net.d conf파일이 있음 CNI의 알파벳 순서로 한가지 선택
WeaveWokrs
라우팅 테이블의 상위 호환
파드로 배포가 가장 쉬움
kubectl apply -f "https://cloud.weave.wokrs~" -> 데몬셋으로 배포됨
노드에서 가상 브릿지가 IP가 서브넷에 어떻게 할당되는지 ->
CNI에게 질의
관리법 중복 IP 할당 없이 관리해야함 파일에 IP를 저장 후 파일에 IP가 있나 확인
host-local 플러그인 사용
/etc/cni/net.d/net-script.conf 의 ipam에서 플러그인 선택가능
파드 끼리가 아닌 파드의 서비스를 통해 파드간 통신을 보통 함
서비스 생성 시 모든 파드에서 접근 가능 -> 서비스는 클러스터에 걸쳐 생성 클러스터 내에서만 접근 가능 -> ClusterIP
서비스 생성할때 미리 할당한 범위에서 IP를 받음
노드에서 실행되는 kube-proxy는 ip받아 테이블을 만듬 어떤 IP로 가야하는지
IP와 포트 조합으로
userspace, IPVS, iptables - 프록시 파드에 연결,
파드와 서비스는 같은 IP대역 할당 금지
iptables -L -t nat | grep service
cat /var/log/kube-proxy.log 어떤 rule이 추가되었는지 확인 가능
Cluster DNS
클러스터 각 노드에는 각각의 이름과 ip가 있음 ->DNS에 등록 되어있음
쿠버네티스는 기본 DNS 사용함
쿠버네티스 dns 는 서비스가 생성될 때마다 등록
다른 네임스페이스에서 접근하려면 풀 네임 사용해야함
web-service.apps[NS].svc.cluster.local
pod에 대한 기록도 dns에 등록 가능