푸잉이의 기술블로그
[Day18] Certified Kubernetes Administrator (CKA) with Practice Tests 본문
[Day18] Certified Kubernetes Administrator (CKA) with Practice Tests
data고수 2023. 1. 26. 02:13210강. CNI in kubernetes
CNI란?
:(Container Network Interface)는 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준.
컨테이너의 발전이 가속화 됨에 따라 다양한 형태로 컨테이너 런타임과 오케스트레이터 사이의 네트워크 계층을 구현하는 방식이 다양하게 분리됨 -> 각자만의 방식으로 발전하는 것을 막기 위해 공통된 인터페이스 제공
-쿠버네티스는 기본적으로 매우 제한적인 네트워크 기능만을 제공하는 kubenet이라는 자체 CNI 플러그인을 기본 제공함.
-Kubenet 사용 안하고, 서드파티 CNI 플러그인 사용하는 이유?
:Kubenet은 컨테이너 사이 노드 간 교차 네트워킹 조차 지원하지 않아 network policy, public 클라우드와의 통합, 대규모 트래픽에 대한 안정성 등 다양한 기능을 제공하는 서드파티 CNI를 사용
<View kubelet options>
-ps -aux | grep kubelet
:CNI 플러그인을 클러스터에 설치하면 클러스터 각 노드의 Kubelet 서비스에 config됨.
-ls /opt/cni/bin
: 실행할 수 있는 CNI plugin 목록.
-ls /etc/cni/net.d
: CNI Configuration 파일 확인 -> kubelet이 어떤 플러그인을 사용하는지 확인 가능
-cat /etc/cni/net.d/10-bridge.conf
211강. CNI weave
일반적으로 중간에 라우터를 둬 여러 node로 라우팅하는 방식은 어려움
-> 노드 수 증가-> 라우팅 테이블에 많은 엔트리 존재 -> 라우팅 테이블 엔트리는 많은 수를 지원 x
=> 대안: agent 를 두어 패킷을 주고 받는 방식
각 node에 weave agent 파견, weave CNI는 각 노드마다 weave 브릿지 생성
브릿지에 IP 할당 후, POD 붙임
weave를 우체국이라고 생각
다른 Node의 pod로 패킷을 전송할 때 보내는 node의 weave agent가 패킷을 캡슐화한 후(택배 포장) 다른 node로 보냄
-> 패킷을 받은 node는 agent 를 통해 패킷을 decapsulate하여(택배 포장 뜯고) pod한테 전달.
클러스터 안에서 delpoy 됨
216강. IP Address Management (IPAM)-Weave
Pod에 IP주소를 할당하는 주체 = CNI PLUGIN

수동으로 네트워크를 구축했을 때, 플러그인 내에서 namespace 에 ip주소를 할당하는 섹션 있음 (3번째 줄)
IP가 중복되지 않도록 Host-local plugin
:각각의 호스트 local 에서 ip 주소를 관리하는 방식
문제점: 스크립트 내부에서 플러그인을 적용해야하는 문제

/etc/cni/net.d/net-script.conf 경로에 있는 cni 설정 파일에는 ipam을 설정할 수 있는 section 존재
스크립트에 직접 하드코딩 하지 않고 적절한 plugin 사용 가능
219강. Serivce networking
*Pod IP를 이용한 애플리케이션 통신 문제점
쿠버네티스로 서비스하는 애플리케이션은 POD를 수동으로 삭제하고 다시 실행하거나, ReplicaController를 이용하여 pod가 죽더라도 다시 실행됨 -> 재실행되면 CNI에 의해 POD IP 재할당 됨 -> 서비스 장애 발생 위험 높음
POD IP재할당으로 통신이 되지 않는 문제해결
POD IP가 변경되어도 계속해서 통신할 수 있도록 POD 네트워크 레벨을 추상화하여 통신 문제 해결
POD 네트워크로 패킷을 전달하는 프록시 개념 도입-> 서비스
프록시가 동작할 수 있도록 각 NODE 설정을 담당하는 쿠버네티스 COMPONENT -> KUBE-PROXY
로드밸런싱 기능은 Pod를 수동으로 여러개 띄우거나 pod를 2개이상 실행할 때 동작
-서비스 특징
Endpoints
:서비스가 패킷을 전달하고자 하는 pod 집합
-> 쿠버네티스가 자동으로 endpoints 안의 pod을 제거/생성 관리
-서비스 타입
ClusterIP: 쿠버네티스 클러스터에서만 서비스에 접근
NodePort: 외부에서 노드를 통해 서비스에 접근
LoadBalancer: 외부 로드밸런서를 (ex 클라우드 공급자) 통해 서비스에 접근
모든 node에 서비스를 사용할 수 있는 이유
: kube-proxy는 demonset으로 실행되어 모든 node에 존재 -> 모든 node에서 서비스를 이용해 pod로 접근 가능
222강. DNS in kubernetes
DNS resolution within the cluster
cluster를 설정하면 dns를 배포함
<cluster 일 경우>
namespace가 달라지면 (ex apps 생성)
curl http://web-service.apps 로 뒤에 계속 추가하면 됨
<pod 일 경우>
hostname이 10-244-2-4로 할당됨
curl http://10-244-2-4.apps.pod.cluster.local로 로 접근 가능
223강. CoreDNS in kubernetes
쿠버네티스가 어떻게 DNS를 실행할까?
cat /etc/hosts로 pod ip address 확인 가능
cat /etc/resolv.conf 도 naeserver 도 포함하여 확인 가능
dns에 다 저장됨
pod는 -로 hostname 구분
<cluster>
cat /etc/coredns/Corefile
kubectl get service -n kube-system
host web-service를 눌리면 전체 entry가 나옴
출처)
https://ykarma1996.tistory.com/179
Calico?Weave? CNI에 관하여
Kubernetes를 설치하여 사용할때 항상 CNI를 설치해야 core-DNS서비스가 정상동작하고, 네트워크 폴리시 등의 보안 정책을 적용할 수 있었기에, 그냥 무의식적으로 설치하여 사용했었는데 막상 다시
ykarma1996.tistory.com
https://seungjuitmemo.tistory.com/232
K8S Pod Networking과 Weave CNI 정리
< Pod Networking > 클러스터 내에서 Pod간의 네트워킹은 다음을 만족해야 한다. - 모든 포드는 ip 주소를 가져야 한다. - 같은 노드의 포드끼리 통신가능해야한다. - 모든 포드는 NAT없이 다른 노드의 포
seungjuitmemo.tistory.com
https://zerojsh00.github.io/posts/CNI-Weave/
(K8S) CNI Weave의 기초 개념
이 글은 Mumshad Mannambeth가 강의한 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 커리큘럼을 토대로 공부한 내용을 정리하였음을 밝힙니다.
zerojsh00.github.io