본문 바로가기
반응형

분류 전체보기750

[kubernetes] Ingress 사용하는 이유 Gateway API를 사용한다는 소리도 있으나 아직은 국내에서 그다지 많이 사용하지 않아 Ingress를 중점으로 보는게 좋지 않을까 생각이 듭니다. "Ingress object를 사용하면 사용하는 로드 밸런서의 수를 줄일 수 있다"는 말은 Kubernetes 클러스터에서 외부 트래픽을 서비스(Pod)로 전달하는 과정에서 Ingress를 활용하면 로드 밸런서의 효율성을 극대화할 수 있다는 의미입니다.이를 이해하기 위해 Kubernetes의 트래픽 흐름과 Ingress가 제공하는 이점을 살펴보겠습니다.1. Kubernetes에서 외부 트래픽 처리 방식a. Service와 LoadBalancer 타입Kubernetes에서 LoadBalancer 타입의 Service를 사용하면 클라우드 제공자(AWS, GC.. 2024. 12. 23.
[Kubernetes] externalTrafficPolicy와 internalTrafficPolicy externalTrafficPolicy와 internalTrafficPolicy는 Kubernetes에서 서비스(Service) 리소스를 정의할 때 사용되는 두 가지 중요한 설정입니다. 이들은 트래픽 라우팅 방식을 지정하여 클러스터 외부와 내부 간의 네트워크 흐름을 어떻게 처리할지를 결정합니다.1. externalTrafficPolicyexternalTrafficPolicy는 클러스터 외부에서 유입되는 트래픽을 처리하는 방법을 정의합니다. 이 설정은 LoadBalancer나 NodePort 서비스 유형에 대해 사용됩니다.Cluster (기본값):트래픽이 클러스터의 모든 노드에 라우팅됩니다.로드밸런서가 들어오는 트래픽을 여러 파드로 분배할 때 클러스터 내 모든 노드에서 파드로 전달되는 방식입니다. 이 경우.. 2024. 12. 21.
service와 clusterIP의 관계에 대해 알아보자 Kubernetes의 Service Port와 IP는 클러스터 내부에서 동작하는 네트워크 환경과 밀접하게 연관되어 있습니다. 이를 Cluster Port와 Cluster IP라고 볼 수 있지만, 약간의 세부적인 이해가 필요합니다.1. Service IP와 Cluster IPService IP는 Kubernetes의 ClusterIP라고도 불립니다.ClusterIP는 Kubernetes 클러스터 내에서 서비스에 접근하기 위한 고정된 IP 주소입니다.클러스터 내부에서만 접근 가능하며, 외부에서는 직접 접근할 수 없습니다(ClusterIP 타입의 Service인 경우).이 IP는 클러스터의 네트워크 CIDR(예: 10.x.x.x) 범위 내에서 자동으로 할당됩니다.클라이언트가 Service에 요청을 보낼 때 사.. 2024. 12. 21.
Service와 kube-proxy의 차이 Service는 Kubernetes API의 리소스 객체로, 클러스터의 모든 노드에서 실행되는 kube-proxy가 Service에 정의된 네트워크 규칙을 관리하고 적용합니다. ServiceService는 Kubernetes의 리소스 오브젝트입니다.Service는 특정 Pod 집합(Endpoints)과 클라이언트 간의 통신 경로를 정의합니다.Service는 Kubernetes API 서버를 통해 생성되고 관리됩니다.Service 자체는 실행되거나 Pod처럼 동작하지 않으며, 로직을 수행하는 프로세스가 아닙니다.Service는 kube-proxy와 상호작용하며 네트워크 규칙이 적용됩니다.kube-proxykube-proxy는 Kubernetes 클러스터의 각 노드에서 DaemonSet 형태로 실행되는 컴포.. 2024. 12. 21.
CNI, Kube-proxy, Service 의 특징 및 통신과정 1. CNI, kube-proxy, Service의 역할CNI (Container Network Interface): Pod 네트워킹 담당Pod 간의 네트워크 연결을 설정하고 관리.각 Pod에 고유 IP를 할당하고, Overlay 네트워크(예: VXLAN) 또는 라우팅 기반 네트워크를 통해 노드 간 트래픽을 지원.주요 책임:Pod 간 네트워크 트래픽 처리.IP 주소 관리.네트워크 플러그인 제공(예: Calico, Flannel, Cilium).Service: 트래픽의 추상화된 접근 경로 제공Pod이 동적으로 생성/삭제되어도 Service를 통해 안정적인 통신 가능.ClusterIP, NodePort, LoadBalancer 등으로 트래픽 라우팅 경로를 제공.주요 책임:로드 밸런싱을 통해 여러 Pod으로 .. 2024. 12. 21.
kube-proxy와 cni의 비교 Kubernetes에서 네트워킹은 **CNI(Container Network Interface)**와 kube-proxy의 조합으로 동작합니다. 여기서 CNI는 Pod 간 통신을 지원하며, kube-proxy는 Service와 Pod 간 트래픽 라우팅을 담당합니다. IPVS 모드를 선택할 필요성은 kube-proxy가 처리하는 서비스 네트워크 성능과 요구사항에 따라 달라집니다.CNI와 kube-proxy의 역할 비교기능CNIKube-proxy역할Pod 간 통신 네트워크 설정. 각 Pod에 IP를 할당하고 네트워크 연결.서비스 트래픽을 적절한 Pod으로 전달. ClusterIP, NodePort 처리.범위Pod-간 네트워크 (L3 수준)서비스-엔드포인트 네트워크 (L4 수준)주요 기술Calico, Flan.. 2024. 12. 21.
[kubernetes] IPVS에 대해 알아보자! Kubernetes의 IPVS 모드는 네트워크 트래픽 라우팅을 위해 **Linux 커널의 IP 가상 서버(IPVS, IP Virtual Server)**를 사용하는 kube-proxy의 실행 모드 중 하나입니다. IPVS는 iptables보다 더 효율적이고 고성능의 트래픽 처리와 부하 분산 기능을 제공합니다.IPVS란?**IP Virtual Server (IPVS)**는 Linux 커널에서 제공하는 L4(Transport Layer) 부하 분산 기술입니다.네트워크 트래픽을 가상 IP 주소(Virtual IP)로 받아 백엔드 서버(Pod 등)로 분산합니다.Connection Tracking 기능을 통해 상태 기반(stateful) 연결 관리가 가능합니다.주요 특징:부하 분산 알고리즘 지원.고속 패킷 처리... 2024. 12. 21.
Sticky bit를 사용하는 이유가 뭘까? 777 권한일때 권한을 775로 바꾸면 수정이 불가능하니 되니 sticky bit 안써도 되는거 아닌가라는 생각이 들었습니다. 디렉토리의 권한을 775로 변경하면, 일반 사용자(그룹에 속하지 않은 사용자)가 쓰기 권한을 잃게 되므로 특정 상황에서는 Sticky Bit를 사용하지 않아도 의도치 않은 파일 삭제나 수정이 방지될 수 있습니다. 그러나 두 접근 방식에는 서로 다른 목적과 적용 사례가 있습니다. 이를 비교해서 살펴보겠습니다.775 권한과 Sticky Bit의 차이특성775 권한Sticky Bit특성775 권한Sticky bit접근 제한특정 그룹 사용자만 파일 추가/삭제 가능모든 사용자가 파일 추가 가능파일 삭제/수정 제한그룹 외 사용자는 디렉토리 내 작업 불가소유자만 자신의 파일 삭제/수정 가능공.. 2024. 12. 21.
[kubenetes] Probe 에 대해 알아보자 Kubernetes의 Probe는 Pod 내 컨테이너의 상태를 주기적으로 확인하는 메커니즘으로, 컨테이너의 상태를 기반으로 서비스가 정상적으로 동작하는지 진단합니다. Probe는 컨테이너의 진단 시점을 결정하고, 서비스 관리에 중요한 역할을 합니다.Probe의 유형과 서비스 진단 시점Liveness Probe (활성 상태 진단)목적: 컨테이너가 여전히 실행 중인지 확인.진단 시점:컨테이너가 내부적으로 멈췄거나 무한 루프에 빠졌을 경우, 이를 감지하여 컨테이너를 재시작.사용 시나리오:컨테이너가 종료되지 않았지만, 요청을 처리하지 못하는 상태일 때.예: Deadlock, 응답이 없는 상태.결과 동작:실패 시: Kubernetes가 컨테이너를 강제로 재시작.설정 예제:livenessProbe:  httpGet.. 2024. 12. 20.
[kubernetes] taint와 toleration Kubernetes의 Taint와 Toleration은 클러스터의 Node에 특정 제약 조건을 추가하여 Pod가 실행될 수 있는 Node를 제한하는 메커니즘입니다. 이를 통해 특정 Node에서 실행될 수 있는 Pod를 제어하거나, 중요하거나 특별한 Node를 보호하는 데 사용됩니다.1. Taint란?Taint는 Node에 설정되는 속성으로, 해당 Node에서 특정 Pod가 실행되지 못하도록 "오염"시키는 역할을 합니다.Pod가 Taint를 허용하지 않으면 그 Node에 스케줄링되지 않습니다.Taint는 다음과 같은 형식으로 구성됩니다: =:key: 식별자 역할을 하는 이름.value: Taint에 추가적인 정보를 제공.effect: Taint가 작동하는 방식.NoSchedule: 해당 Node에 스케줄링.. 2024. 12. 19.
Kubernetes의 Node Scheduling Kubernetes의 Node Scheduling은 클러스터에서 Pod가 실행될 적절한 Node를 선택하는 과정입니다. Kubernetes Scheduler가 이를 담당하며, 특정 Pod가 실행될 Node를 결정하기 위해 다양한 조건과 제약을 고려합니다.Node Scheduling의 주요 과정Scheduling 후보 Node 필터링 (Filtering)Scheduler는 클러스터 내에서 실행 가능한 Node를 찾기 위해 필터링 과정을 수행합니다.예를 들어, 다음 조건에 맞지 않는 Node는 제외됩니다:Node가 충분한 리소스(CPU, 메모리 등)를 가지고 있는지.Pod의 nodeSelector, nodeAffinity, 또는 taints에 맞는 Node인지.Node 상태가 Ready인지.적합한 Node .. 2024. 12. 19.
Kubernetes의 플랫 네트워크 1. 컨테이너 네트워크 모델 (Container Network Model)과거의 포트 매핑 문제도커와 같은 단일 컨테이너 실행 환경에서는 컨테이너 내부의 애플리케이션에 접근하려면 호스트의 특정 포트를 컨테이너의 포트와 매핑해야 했습니다. 예:애플리케이션 컨테이너가 내부적으로 8080 포트를 사용한다고 가정.외부에서 접근하려면 호스트 포트(예: 30000)를 컨테이너 포트(예: 8080)에 매핑해야 합니다: docker run -p 30000:8080 my-app문제점:복잡한 관리여러 컨테이너에서 동일한 포트를 사용하면 충돌이 발생할 수 있어, 포트를 수동으로 관리해야 함.수십 개 이상의 컨테이너를 다룰 경우 포트 매핑이 복잡해짐.동적 스케일링의 제약컨테이너를 동적으로 생성하고 스케일링하려면, 각각의 새로.. 2024. 12. 16.
반응형