본문 바로가기

Devops/Kubernetes20

[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.
[Kubernetes] 쿠버네티스 컴포넌트(Controlplane) 인증서 재발급 쿠버네티스 클러스터를 구축하면 Api-server는 모든 통신을 함에 있어 기본적으로 Https 통신을 한다. 이로 인하여 각 쿠버네티스 컴포넌트는 Api-server와 통신을 할 때, 클러스터의 초기화 및 합류하는 시점에서 인증서와 개인 키를 발급하고 통신에 사용한다. 기본적으로 인증서의 유효 기간은 1년이며, 이번 내용은 발급된 인증서의 유효 기간 확인 및 재발급에 대하여 다룰 것이다.Kubeadm으로 쿠버네티스 클러스터를 구축하고, Controlplane의 /etc/kubernetes 경로의 하위 파일들을 보면 아래와 같다.    이는 각 쿠버네티스 컴포넌트의 설정 값이 포함된 파일들이 있고, 그 내용은 아래 양식과 같다. 여기서 각 컴포넌트들의 인증서와 개인 키 값이 conf 파일에 내장되어 있는.. 2024. 5. 2.