
1. Kubernetes 네트워크 개요
Kubernetes(쿠버네티스)는 컨테이너화된 애플리케이션을 관리하는 오케스트레이션 플랫폼으로, 네트워크 통신을 원활하게 하기 위해 다양한 네트워크 컴포넌트를 제공한다. 쿠버네티스 네트워크 구조를 이해하면 클러스터 내 Pod 간 통신, 외부 트래픽 처리, 서비스 디스커버리 등의 개념을 효과적으로 활용할 수 있다.
✅ Kubernetes 네트워크의 주요 목표
- Pod 간 통신이 원활하게 이루어질 것 (각 Pod는 고유한 IP를 가짐)
- 네트워크 정책(NetworkPolicy)을 통한 보안 제어 가능
- 서비스 디스커버리를 통해 동적 애플리케이션 연결 지원
- 로드 밸런싱을 통한 트래픽 관리 및 확장성 제공
2. Kubernetes 네트워크 구조
쿠버네티스의 네트워크는 다음과 같은 주요 컴포넌트로 구성된다.
🔹 1️⃣ Pod 네트워크 (Pod-to-Pod Communication)
- 모든 Pod는 클러스터 내에서 고유한 IP를 할당받음
- Pod 간에는 NAT(Network Address Translation) 없이 직접 통신 가능
- CNI(Container Network Interface) 플러그인을 통해 구현
- 대표적인 CNI: Flannel, Calico, Cilium, WeaveNet 등
🔹 2️⃣ 서비스 네트워크 (ClusterIP, NodePort, LoadBalancer)
- ClusterIP: 내부에서만 접근 가능한 서비스 (기본값)
- NodePort: 외부에서 특정 포트를 통해 접근 가능
- LoadBalancer: 클라우드 제공업체의 로드 밸런서를 사용하여 외부 트래픽을 처리
- Ingress: 여러 서비스에 대한 HTTP/HTTPS 라우팅을 제공하는 API Gateway 역할 수행
🔹 3️⃣ DNS 기반 서비스 디스커버리
- Kubernetes는 CoreDNS를 통해 서비스 디스커버리를 제공
- 각 서비스는 서비스명.네임스페이스.svc.cluster.local 형식의 도메인을 가짐
- Pod는 이 도메인을 통해 다른 서비스에 접근 가능
3. Kubernetes CNI (Container Network Interface)
Kubernetes에서는 CNI 플러그인을 사용하여 네트워크 기능을 제공한다.
CNI 플러그인 특징
Flannel | 간단한 네트워크 오버레이 (VXLAN, host-gw 지원) |
Calico | 네트워크 정책 지원, BGP 기반 라우팅 가능 |
Cilium | eBPF 기반 고성능 네트워크 및 보안 정책 제공 |
WeaveNet | 간단한 설치, 자동 네트워크 복구 기능 제공 |
4. Kubernetes 네트워크 정책 (NetworkPolicy)
NetworkPolicy를 사용하면 특정 Pod 간의 트래픽을 제어할 수 있다.
✅ 기본 개념
- 기본적으로 쿠버네티스 Pod 간의 통신은 모두 허용됨
- NetworkPolicy를 정의하면 특정 트래픽만 허용 가능
- ingress (수신 트래픽) 및 egress (송신 트래픽) 제어 가능
✅ 예제: 특정 네임스페이스에서만 접근 허용
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-namespace-access
namespace: my-namespace
spec:
podSelector:
matchLabels:
app: my-app
ingress:
- from:
- namespaceSelector:
matchLabels:
name: trusted-namespace
5. 서비스 디스커버리와 DNS
Kubernetes에서 서비스 디스커버리는 자동화된 방식으로 동작하며, CoreDNS를 활용하여 클러스터 내에서 Pod 간 통신을 지원한다.
✅ 서비스 디스커버리 방식
- 환경 변수 기반: Pod가 실행될 때 서비스의 IP와 포트가 환경 변수로 주입됨
- DNS 기반 (권장 방법): CoreDNS를 통해 my-service.default.svc.cluster.local과 같은 형식으로 조회 가능
✅ DNS 조회 예제
nslookup my-service.default.svc.cluster.local
6. Ingress 컨트롤러를 활용한 트래픽 관리
쿠버네티스에서는 Ingress를 사용하여 외부 트래픽을 내부 서비스로 라우팅할 수 있다.
✅ 주요 기능
- HTTP/HTTPS 트래픽을 특정 서비스로 전달
- 도메인 기반 라우팅 지원
- TLS(SSL) 인증서 적용 가능
✅ 간단한 Ingress 예제
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
7. 결론
쿠버네티스 네트워크는 Pod-to-Pod 통신, 서비스 디스커버리, 로드 밸런싱, 네트워크 정책 적용 등의 기능을 제공하며, 이를 활용하여 안정적이고 확장 가능한 애플리케이션을 구축할 수 있다.
✅ CNI 플러그인을 선택하여 네트워크를 구성할 수 있음
✅ NetworkPolicy를 활용해 보안을 강화할 수 있음
✅ CoreDNS 기반의 서비스 디스커버리를 활용 가능
✅ Ingress 컨트롤러를 활용하여 트래픽을 효과적으로 라우팅 가능
쿠버네티스 네트워크를 최적화하면 애플리케이션 성능을 향상시키고, 보안을 강화할 수 있다
'IT > Network' 카테고리의 다른 글
[Network] SDN(Software-Defined Networking) 개념과 활용 (0) | 2025.02.28 |
---|---|
[Network] 네트워크 헤더를 제거해야 하는 이유 (0) | 2025.02.27 |
[Network] BGP(Border Gateway Protocol)와 인터넷 경로 선택 (0) | 2025.02.26 |
[Network] 클라우드 네트워크 (AWS VPC, Azure Virtual Network 등) (0) | 2025.02.26 |
[Network] CDN(Content Delivery Network) 구조 & 활용법 (1) | 2025.02.25 |
[Network] 로드 밸런서(Load Balancer) 개념 & 유형 (0) | 2025.02.25 |
[Network] 공개 네트워크 vs 폐쇄형 네트워크 보안 전략 (0) | 2025.02.25 |
[Network] IAM(Identity and Access Management) 개념과 보안 적용 (0) | 2025.02.25 |
댓글