Kubernetes 137

[K8s] 네트워크 유형 - 외부와 Service 간 통신

개요2024.05.22-[K8s] 네트워크 유형 - Pod와 Service 간 통신에서는 Service의 개념과 동작 방식에 대해서 알아보았다. 다만 Service는 기본적으로 ClusterIP 유형으로 생성되어 클러스터 내부에서만 통신이 가능하도록 되어있다. 그렇다면 외부와 통신을 주고받아야 할 때는 어떻게 해야 할까? 쿠버네티스에서는 NodePort 유형의 Service, Load Balancer 유형의 Service 그리고 Ingress를 통해 외부와의 통신을 가능하게 한다.각각에 대해서 정리해 둔다.   NodePortNodePort 유형의 Service는 기본적으로 Cluster IP 유형과 비슷하지만, Node 네트워크의 IP를 통한 접근을 허용하는 등의 몇 가지 기능을 더 갖고 있다. 즉, ..

Kubernetes 2024.06.11

[K8s] 네트워크 유형 - Pod와 Service 간 통신

개요2024.05.18-[K8s] 네트워크 유형 - 컨테이너 간 통신, 2024.05.19-[K8s] 네트워크 유형 - Pod 간 통신에서 쿠버네티스의 4가지 통신 유형 중 2가지 유형을 살펴보았다. 이번 글에서는 Service의 개념과 Pod과 Service 간 통신에 대해 적어두려고 한다.  ServicePod는 각각의 고유한 주소를 가지기 때문에 어떤 애플리케이션의 엔드포인트로 설정할 수도 있다. 하지만 쿠버네티스에서 Pod는 쉽게 대체되기 때문에 새로 생성된 Pod의 주소가 기존 Pod와 동일함을 보장하지 않는다.이러한 문제를 해결하기 위해 애플리케이션 앞에 서버의 목록을 관리하며 서비스 중인 서버에게 트래픽을 전달하는 reverse-proxy나 load balancer를 구성할 수 있다. 이러한..

Kubernetes 2024.06.10

[K8s] 네트워크 유형 - Pod 간 통신

개요2024.05.18-[K8s] 네트워크 유형 - 컨테이너 간 통신에서는 도커, 쿠버네티스 환경에서의 컨테이너 간 통신에 대해서 정리했다.이번 글에서는 Pod 간 통신에 대한 내용을 적어두려고 한다. Pod 간 통신은 단일 노드에서의 통신 그리고 멀티 노드에서의 통신으로 구분할 수 있다.  단일 노드에서의 Pod쿠버네티스의 Pod는 고유한 IP 주소(veth)를 가지므로, IP 주소로 서로 통신할 수 있다.쿠버네티스는 kubenet이라는 기본적이고 간단한 네트워크 플러그인을 제공한다. 다만 kubenet에는 노드 간 네트워킹, 네트워크 정책 설정과 같은 고급 기능은 구현되어 있지 않기 때문에 Calico, Flannel 등과 같은 CNI 기반 네트워크 플러그인 사용을 권장하고 있다. 일례로 kudead..

Kubernetes 2024.06.07

[K8s] 네트워크 유형 - 컨테이너 간 통신

개요쿠버네티스에서 네트워크는 크게 컨테이너 간 통신, Pod 간 통신, Pod와 서비스 간 통신, 외부와 서비스 간 통신으로 나누어진다.쿠버네티스 환경에서 작업하다 보면 네트워크 관련으로 항상 헤매게 되는 것 같아서 정리해두려고 하는데, 그전에 먼저 네트워크 유형에 대해 정리해보려고 한다.   도커먼제 도커 환경에서 기본적인 네트워크 동작을 알아본다.도커 환경에서 같은 호스트에 존재하는 컨테이너 간의 통신은 docker0이라는 가상 네트워크 인터페이스를 통해 이루어진다. docker0은 호스트 네트워크 인터페이스 또는 디폴트 네트워크 네임스페이스라고 칭해진다.그리고 각 컨테이너는 veth라는 고유한 가상 네트워크 인터페이스를 가지기 때문에 각각의 veth IP주소로 통신한다.컨테이너 내에서는 네트워크 네..

Kubernetes 2024.06.06

[Istio] Ingress Gateway - Gateway/VirtualService

개요쿠버네티스 환경에서 동작하는 서비스를 외부에 노출하고 싶다. 보통 서비스를 외부에 노출할 때는 Nginx Ingress Controller를 배포한 뒤 kubernetes Ingress 리소스를 생성해 왔는데, 현재 구성 중인 환경에서는 Istio를 사용 중이다. 그리고 Istio와 Nginx Ingress Controller는 포트 충돌 등의 이유로 함께 사용하지 않는 것 같다. Istio를 사용할 때는 Nginx Ingress Controller 대신 Istio Ingress Gateway를 사용하여 Ingress를 구성하거나 Gateway와 VirtualService를 이용해 서비스를 외부에 노출하는 것으로 보인다. 그림으로 표현하면 아래와 같은 구조가 되는 것 같다. 이 글에서는 ..

Kubernetes 2024.05.20

[Istio] Helm을 이용한 설치

개요 2024.03.06 - [Istio] 다운로드 및 설치에서 istioctl을 이용해 istio를 설치해 보았다. 다만 보통 쿠버네티스 환경에서 애플리케이션을 설치할 때 Helm을 많이 이용하므로, 이번 글에서는 Helm을 이용해 Istio를 설치해보려고 한다. 레포지터리 추가 istio 관련 차트가 저장된 레포지터리를 추가한다. helm repo add istio https://istio-release.storage.googleapis.com/charts helm repo update Chart 설치 1. 네임스페이스 생성 kubectl create namespace istio-system 2. Istio-base 차트 배포 Istio 동작에 필요한 CRD 생성을 위해 배포한다. helm insta..

Kubernetes 2024.04.02

[k8s] metrics-server 설치 후 Metrics API not available 에러 발생 시

현상 Kubernetes 클러스터에서 top 명령어를 사용할 수 있도록 아래의 명령어로 metrics-server를 설치하였다. kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 리소스 배포는 정상적으로 완료했으나 여전히 top 명령어를 사용할 수 없는 상태다. 원인 파악하고 문제를 해결해보자. 원인 파악 확인해 보니 metrics-server pod가 정상적인 Running 상태로 전환되지 않고 있었다. kubectl get pods -n kube-system metrics-server metrics-server pod의 이벤트를 확인해보니 readinessPr..

Kubernetes/삽질 2024.03.29

[Istio] 다운로드 및 설치

개요 2024.02.29 - [Service Mesh] Istio 란에서 Istio에 대한 개념 정도만 간단히 살펴보았는데, 이번 글에서는 공식 문서를 참조하여 Istio를 설치해보려고 한다. https://istio.io/latest/docs/setup/getting-started/ 페이지를 참조해 Istio 릴리즈를 직접 다운로드하여 진행해 본다. 테스트는 Killercoda에서 수행했고, Kubernetes 1.29 버전을 사용했다. Istio 다운로드 Istio 릴리즈를 다운로드한다. curl -L https://istio.io/downloadIstio | sh - 옵션 없이 다운로드를 수행하면 최신 버전을 다운로드한다. 만약 특정 버전을 다운로드하고 싶다면 아래와 같이 버전을 지정할 수 있다. ..

Kubernetes 2024.03.06

[Service Mesh] Istio 란

Istio 분산 어플리케이션에 계층화되는 오픈소스 Service Mesh. Service Mesh의 개념은 2024.02.23 - 서비스 메쉬(Service Mesh) 란에서 조금 살펴봤었다. Istio는 서비스 코드 변경을 최소화하면서 로드 밸런싱이나 서비스 간 인증, 그리고 모니터링 방법을 제공한다. 또한 확장성을 고려하여 설계되어 다양한 배포 요구 사항을 처리할 수 있다. 동작 방식 Service Mesh를 구현한 만큼 Istio는 DataPlane과 ControlPlane이 존재한다. DataPlance은 서비스 간 통신으로, 서비스 메쉬가 없으면 네트워크는 트래픽을 이해하지 못한다. 또한 트래픽의 종류나 출발/목적지 기반의 어떤 결정도 수행할 수 없다. Envoy 프록시는 클러스터에서 동작할 서..

Kubernetes 2024.02.29