이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

Kubernetes 131

Kubernetes 모니터링 : node-exporter 란?

Node Exporter node-exporter 란?Prometheus 재단이 공식적으로 지원하고 있는 Exporter 중 하나이며Prometheus로 모니터링 시스템을 구축 시 System Metrics를 수집을 위해 가장 우선적으로 고려되는 Exporter이기도 함. Exporter 란?Exporter란 특정 Metrics을 수집해서 엔드포인트에 노출시키는 소프트웨어 혹은 에이전트를 의미함.node-exporter가 UNIX 계열 서버의 cpu, memory 등의 Metrics을 수집할 수 있는 것처럼,DB, 하드웨어, 메세지 시스템, 저장소 등 여러 시스템에 대한 Exporter가 존재하며,CollectD 등 기존의 서버 모니터링에 사용되는 에이전트들과 통합할 수 있는 Exporter도 존재함. ..

CNI 리서치 : Flannel CNI 배포 후 Cluster의 Pod IP 할당과정

Flannel CNI 배포 후 Cluster의 Pod IP 할당과정  Flannel initcontainer 역할flannel daemonset이 node에 배포되면 먼저 initcontainer에 의해 환경이 구성됨 Flannel CNI plugin 배포Flannel CNI plugin은 default 로 /opt/cni/bin directory에 배포 되어있음.default CNI plugin들은 kubelet이 배포되면서 함께 배포됨.실제로 CNI를 배포하지 않고 kubelet만 배포해보면 하면 아래와 같이 기본 CNI Plugin만 배포되어있음.이후 cluster에서 flannel CNI를 배포하면 flannel daemonset의 initcontainer에 의해아래와 같이/opt/cni/bin ..

CNI 리서치 : Kubernetes의 CNI Flow

Kubernetes의 CNI Flow kubernetes cluster에 CNI가 설정되는 과정1. kubernetes cluster 의 node에 kubelet이 배포되면 CNI 기본 plugin도 함께 배포가 됨.2. kubelet containerd CRI를 통해 container runtime tool의 설정파일 내용을 수정함즉 containerd의 경우 /etc/containerd/config.toml에 CNI 설정이 추가됨.  Pod network namespace에 IP가 할당되는 과정1. Pod배포를 위해 kube-apiserver가 kubelet을 호출2. kubelet은 container 생성을 위해 CRI를 통해 container runtime 호출3. container runtime..

CNI 리서치 : containerd 로 생성한 conatiner에 CNI 사용

containerd 로 생성한 conatiner에 CNI 사용CNI 리서치: CNI 개념  글의 실습을 통해서 CNI가 어떻게 동작하는지 파악 완료함.이제 Container를 생성한 경우 CNI가 어떻게 적용되는지 확인해보도록 함. test 과정kubernetes에서 pod 생성 시 container에 IP를 할당하는 과정을 최대한 비슷하게 진행해봄.test는 nerdctl tool을 통해 containerd 로 pause container 생성 후CNI로 network interface를 할당해봄.이후 nginx container를 배포하는데 pause container의 network namespace를 공유하도록 해서pause container IP로 접근 시 nginx에 정상접근 되는지 확인함 t..

CNI 리서치 : CNI 개념

CNI 개념 정리  목표flannel, calico를 통해 container에 IP가 할당되는 과정을 알아보기 위해CNI 동작원리를 파악해봄   CNI 란?CNI : Container Network InterfaceCNI는 CNCF(Cloud Native Computing Foundation) 프로젝트로Linux Container의 network namespace에 network interface를 설정할 수 있도록 도와주는 라이브러리로 구성되어 있음.CNI는 오직 "컨테이너의 네트워크 연결성"과  "컨테이너 삭제시 관련된 네트워크 리소스 해제" 에 대해서만 관여함.그 외의 구체적인 사안에 대해서는 특별히 제한을 두지 않아서 다양한 CNI 구현체가 존재함. Kubernetes, Openshift와 같은 ..

windows worker node에 kube-proxy와 flannel CNI 문제

오류 상황windows worker node에 kube-proxy와 flannel cni 배포되었지만할당된 IP주소가 flannel 대역과 맞지 않음. [오류 메세지]windows node에 배포된 container의 ip들이172.23 대역으로 할당됨.  [원인]원인 파악을 위해 windows node에 crictr을 설치함crictr 설치 명령어$CriCtlVersion = '1.22.0'curl.exe -LO "https://github.com/kubernetes-sigs/cri-tools/releases/download/v${CriCtlVersion}/crictl-v${CriCtlVersion}-windows-amd64.tar.gz"tar.exe xvzf ".\crictl-v${CriCtlVers..

CreateComputeSystem kube-flannel: The directory name is invalid.

오류 상황windows worker node에 kube-proxy와 flannel cni가 정상적으로 배포되고 있지 않음  [오류 메세지]kubectl describe 명령으로 windows node에 배포된 flannel, kube-proxy pod를 확인해보면 아래와 같은 오류 메세지를 확인가능.Error: failed to create containerd task: hcsshim::CreateComputeSystem kube-flannel: The directory name is invalid. 원인해당 오류는 windows update 관련 오류임.windows worker node 추가할 시 KB4489899 update가 되어있어야 한다고하는데KB4489899 관련 패키지가 설치되어있지 않아서..

hcnCreateNetwork failed in Win32: The object already exists

오류 상황Windows worker node에 kube-proxy와 flannel cni가 정상적으로 배포되고 있지 않음또는 windows node를 재기동하면 해당 오류가 발생하기도 함.[오류 메세지]kubectl describe 명령으로 확인해보면 아래와 같은 오류 메세지를 확인가능.Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandboxhcnCreateNetwork failed in Win32: The object already exists 원인아래 그림과 같이 vnet에 대한 가상 인터페이스가 생성되어있지 않아서 발생하는 오류임.  해결법 C:\k\StartKubelet.ps1파..

Kubernetes Windows node 추가 (containerD)

Kubernetes Windows node 추가 (containerD)목표IIS web server container 와 같이 linux가 아닌 windows OS에서 실행가능한 container가 있음.해당 container를 실행하기 위해서는 windows worker node가 필요함이를 test해보기 위해 linux kubernetes cluster에 windows worker node를 추가하는 작업을 진행해봄. Windows OS Container Runtime tool은 Containerd로 진행함. Test 환경 on-premise 환경에서 진행.linux cluster로 Master Node, Linux worker Node로 구성되어있는 상태에서 Windows node를 추가해봄. [M..

Flannel Subentlen, Network 설정

Flannel Subentlen, Network 설정 변경 방법 net-conf.json: | { "Network": "10.100.0.0/16", "Subnetlen": 24, "Backend": { "Type": "$FLANNEL_BACKEND" } }설정 중 Network, Subnetlen에 원하는 값을 입력. 설정 예시Netowrk가 "10.100.0.0/16"로 설정되고 Subnetlen이 24로 설정된다면CIDR 블록은 256개 이상의 가상 서브넷을 지원할 수 있음. CIDR 표기법에서 "10.100.0.0/16"은 IP 주소 범위가 "10.244.0.0"에서 "10.244.255.255"까지이며, 총 65,536개의 IP 주소가 ..

Kubernetes/Flannel 2024.07.15
반응형