Devops/Kubernetes21 [Cilium] Cilium 설치 후 Node NotReady 및 coredns Pending 서론 온프레미스 환경에서 kubeadm으로 쿠버네티스 클러스터를 구성한 후, CNI로 Cilium을 설치하며 생긴 이슈이다. cilium을 정상적으로 설치한 후 cilium cli으로 배포된 cilium 파드의 정상적인 상태까지 확인했다. 하지만 지속적으로 Node 상태를 확인하면 "cni plugin not initialized"라는 이유로 NotReady가 되어 있었고, Coredns도 계속 Pending 상태로 있었다. 해결 기존 설치된 CNI의 영향을 의심하여, kubeadm reset과 /etc/cni 삭제 및 iptables도 flush를 해줬으나 해결하지 못하였고, 아래 링크를 통하여 혹시나 해본 것이 잘 되었다. https://discuss.kubernetes.io/t/k8s-cni-.. 2025. 2. 12. [Kubernetes] 한 노드에 동일한 파드 스케줄링 제한 개요 쿠버네티스 클러스터 환경에서 운영을 할 때에는, 생각하지 못한 다양한 상황을 많이 접할 수 있다. 그중 하나는 Deployments의 파드가 재 스케줄될 때, 상황에 따라 하나의 노드에 같은 파드가 두 개 이상 스케줄될 수 있다는 것이다. 이것이 문제가 되는 이유는 Deployments의 Replicas가 2인 경우 하나의 노드에 이 파드가 2개가 생성된다면, 단일 장애 지점(SPOF)이 되어버린다는 것이다. 가용성을 위하여 파드를 2개로 설정을 했음에도, 노드에 장애가 발생하면 가용성을 보장받지 못하는 상황이 되어버린다는 것이다. 물론 쿠버네티스에는, 이를 방지하기 위한 설정이 존재한다. 이제 해당 옵션을 알아볼 것이다. 아래는 replicas가 2인 nginx라는 deployment의 .. 2024. 11. 24. [Calico] Multiple Interface에서 특정 Network Interface만 사용 or 제외 https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart Quickstart for Calico on Kubernetes | Calico DocumentationInstall Calico on a single-host Kubernetes cluster for testing or development in under 15 minutes.docs.tigera.io Calico를 처음에 설치할 때, Tigera operator를 설치하고 이후 Custom Resource를 설치한다. 일반적인 상황에서는 이 부분을 수정할 일이 없다고 보나, 클러스터의 특정 제약 조건(IP 대역 지정 / 특정 인터페이스 사용 등)에 의해 수정할 일이.. 2024. 11. 7. [Containerd] Image Pull의 Registry에 Http 또는 Self-Signed Certification 사용 시 기본적으로 Containerd에서 이미지를 Pull을 할 때에는 Https를 사용하여 Pull을 한다. 여기서 Registry의 Url이 Http로 되어 있거나, 인증서가 공식적으로 발급된 게 아니라면(자기 서명 인증서 등), 에러를 반환한다. 그래서 Containerd에서 CLI를 이용하여 이미지를 Pull 하려면 아래와 같은 --skip-verify나 --plain-http와 같은 옵션들이 존재한다. 여기서 쿠버네티스의 CRI로 사용하게 된다면, 당연히 위의 옵션을 이용할 수 없다. 그렇기에 /etc/containerd/config.toml을 수정해야 한다. 다음과 같이 [plugins."io.containerd.grpc.v1.cri".registry.configs]의 하위에 내용을 추가.. 2024. 11. 5. [Kubernetes] Pgadmin4 Ingress 적용 데이터베이스에 접속하여 관리를 할 수 있는 툴이 여러 가지 있는데, 사람들이 가장 많이 사용하는 툴로 Dbeaver가 있고, PostgreSQL 같은 경우 Pgadmin4라는 전용 툴도 따로 존재한다. (다른 예 : MySQL의 Workbench) 여기서 Pgadmin4 같은 경우, 웹으로 접속하여 설치형 애플리케이션과 동일하게 이용할 수 있는 컨테이너 이미지가 존재하고, 이를 쿠버네티스 Ingress를 적용하여 접속하는 방법을 알아볼 것이다. 문제점 Kubernetes에서 Ingress로 클러스터 내부의 서비스를 이용할 때, 일반적으로 애플리케이션 API는 Prefix에 오는 Path를 제거해 주는 방식으로 많이 이용하는데, 이는 구현된 API의 로직에 따라 에러가 발생할 수 있다. Prefix를 제.. 2024. 7. 7. [Kubernetes/Calico] 파드 IP와 네트워크 인터페이스 노드의 CIDR 쿠버네티스 환경에서 파드를 생성하게 되면, 노드에 배정받은 IP 대역을 기반으로 파드의 IP를 배정하게 된다. 아래의 명령어로 초기 쿠버네티스 클러스터를 구축할 때 설정했던, pod-cidr을 기반으로 노드에 배정된 대역을 확인할 수 있다. kubectl describe node [노드 이름] | grep CIDR 그리고 위 CIDR을 토대로 파드 IP가 배정되는 부분을 확인해 볼 것이다. 파드의 IP 배정 파드 생성 파드 조회 CIDR을 기반으로 192.168.1.4라는 IP가 파드에 배정이 된 것을 볼 수 있다. 생성된 네트워크 인터페이스 확인 이러한 파드들은 생성이 될 때, Calico에서 각각의 네트워크 인터페이스를 생성하게 되고, 이는 cali로 시작하는 이름의.. 2024. 5. 27. 이전 1 2 3 4 다음 more