Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #8] CoreDNS + Cilium DNS 안정화 전략 실습

ygtoken 2025. 3. 26. 18:10
728x90

목표: Cilium을 활용한 DNS 요청의 안정성 확보와 CoreDNS의 성능 최적화를 통해,
MinIO와 같은 서비스의 DNS 응답 시간 단축 및 안정성 향상을 실습합니다.


🔎 이번 글에서 수행할 작업 요약

  1. Cilium DNS-aware 기능 활성화 및 설정
  2. CoreDNS의 성능 최적화를 위한 설정 변경
  3. DNS 안정성 테스트 및 성능 비교
  4. Cilium을 활용한 네트워크 요청 흐름 제어

🧠 1단계: Cilium DNS-aware 기능 활성화

이 단계의 목적: Cilium의 DNS-aware 기능을 활성화하여,
DNS 요청을 패킷 수준에서 처리할 수 있도록 설정합니다.

# Cilium DNS-aware 기능을 활성화하는 설정 확인
kubectl -n kube-system get configmap cilium-config -o yaml | grep enable-dns
# enable-dns-proxy 설정 확인
enable-dns-proxy: "true"  # ✅ DNS-aware 기능 활성화
# Cilium ConfigMap에서 DNS 설정 변경 후 재시작
kubectl -n kube-system rollout restart ds cilium

✅ enable-dns-proxy가 활성화되면, Cilium이 DNS 요청을 처리하고 패킷 수준에서 모니터링할 수 있게 됩니다.


⚙️ 2단계: CoreDNS 최적화

이 단계의 목적: CoreDNS의 성능을 최적화하고, DNS 캐시 설정 및 리소스 제한을 조정하여
DNS 응답 시간을 단축시킵니다.

# CoreDNS ConfigMap을 가져와서 캐시 설정을 추가
kubectl -n kube-system get configmap coredns -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        log
        cache 60                          # ✅ 캐시 시간 60초로 설정
        forward . /etc/resolv.conf
        loop
        reload
    }
# CoreDNS 리소스 설정 확인 및 필요시 CPU, 메모리 리소스 증가
kubectl -n kube-system describe deployment coredns

캐시 설정리소스 할당을 최적화하면 DNS 요청의 속도와 안정성이 향상됩니다.


🧪 3단계: DNS 안정성 테스트

이 단계의 목적: DNS 요청 안정성을 테스트하고, Cilium DNS-aware 기능과 CoreDNS 설정의
성능 개선 효과를 측정합니다.

# DNS 요청을 확인하기 위해 test pod 실행
kubectl run dns-test --image=busybox:1.28 -n default -- sleep 3600

# 파드에 접속하여 nslookup 실행
kubectl exec -it dns-test -n default -- sh
nslookup minio.minio.svc.cluster.local
# ioping으로 네트워크 지연 시간 측정
ioping -c 10 /mnt/test-vol

Cilium DNS-awareCoreDNS 최적화 후, DNS 요청 시간이 단축되고,
네트워크의 안정성도 향상되었음을 확인할 수 있습니다.


🔍 4단계: Cilium을 활용한 네트워크 요청 흐름 제어

이 단계의 목적: Cilium의 고급 네트워크 정책 기능을 활용하여,
MinIO와 클라이언트 간의 DNS 요청 흐름을 제어하고 더욱 정확한 라우팅을 설정합니다.

# DNS 요청을 Cilium 네트워크 정책으로 제어하기
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
  name: allow-minio-dns
  namespace: etl
spec:
  endpointSelector:
    matchLabels:
      app: spark
  egress:
    - toEndpoints:
        - matchLabels:
            app: minio
      toPorts:
        - ports:
            - port: "9000"
              protocol: TCP
          rules:
            http:
              - method: "GET"
              - method: "POST"
              - method: "HEAD"

✅ Cilium 네트워크 정책을 사용하여 DNS 요청을 필터링하고,
MinIO 서비스와의 안전한 연결을 보장할 수 있습니다.


📎 요약 및 핵심 정리

  • Cilium DNS-aware 기능을 활성화하여 DNS 요청을 패킷 수준에서 최적화하고,
    CoreDNS에서의 캐시와 리소스 설정을 통해 DNS 성능을 향상시킬 수 있었습니다.
  • CoreDNS 캐시Cilium의 DNS-aware 기능은 DNS 안정성을 높이며,
    MinIO와 같은 서비스를 더 빠르고 안정적으로 사용할 수 있도록 해줍니다.
  • Cilium을 활용해 네트워크 정책을 제어하고 DNS 요청을 효율적으로 필터링할 수 있어,
    서비스의 보안성과 성능을 더욱 강화할 수 있습니다.

 

728x90