유튜브 영상/리얼리눅스
도커/쿠버네티스/클라우드 네트워크 - 무료세미
book_lover
2024. 12. 25. 23:15
도커 네트워크의 이해
▶ docker0 - bridge 소프트화(가상화)
브릿지(Bridge)는 두 개 이상의 네트워크 세그먼트를 함께 연결하는 네트워킹 장치
OSI 모델의 데이터 링크 계층에서 작동하며 장치의 MAC 주소를 사용하여 프레임을 전달할지 필터링할지 결정
- bridge란 2개이상의 네트워크를 L2레벨로 연결하여 1개의 싱글 LAN(docker0)으로 통신
- veth란 Pair 가상 네트워크 인터페이스 (두개의 namespace를 연결)
쿠버네티스 Ingress
- 여러 pod Service 객체로 묶어서 관리
ClusterIP 서비스
ClusterIP는 Kubernetes에서 기본 서비스 유형으로, 클러스터 내부에서만 접근 가능한 가상 IP를 제공합니다.
특징
- 내부 통신 전용: ClusterIP는 클러스터 내부의 리소스(Pod 등) 간 통신을 가능하게 합니다. 외부에서는 접근할 수 없습니다
- 로드 밸런싱: ClusterIP는 연결된 여러 Pod에 요청을 분산 처리합니다. 이는 IP/Port 기반(L4) 로드 밸런싱을 수행합니다
- DNS 지원: ClusterIP 서비스는 DNS 이름을 통해 연결할 수 있어 Pod의 IP가 변경되더라도 안정적으로 접근이 가능합니다
- 자동 생성된 IP: ClusterIP는 동적으로 생성되며, 클러스터 내에서 고유합니다. 필요 시 정적 IP를 지정할 수도 있습니다
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
Ingress
Ingress는 클러스터 외부에서 내부 서비스로 HTTP(S) 요청을 라우팅하는 역할을 합니다.
특징
- 외부 트래픽 관리: Ingress는 외부에서 들어오는 요청을 특정 서비스로 라우팅하며, 주로 L7 계층(HTTP/HTTPS)에서 동작합니다
- 도메인 및 경로 기반 라우팅: 여러 도메인이나 경로에 따라 요청을 적절한 서비스로 분배할 수 있습니다.
- SSL/TLS 지원: HTTPS 트래픽 처리를 위한 인증서를 관리하고 적용할 수 있습니다.
- Ingress 컨트롤러 필요: Ingress 리소스는 실제로 동작하려면 NGINX, HAProxy, Traefik 등의 Ingress 컨트롤러가 필요합니다
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
위 설정은 example.com으로 들어오는 요청을 my-service의 포트 80으로 전달합니다.
ClusterIP와 Ingress의 관계
- ClusterIP는 클러스터 내부에서만 접근 가능한 서비스이지만, Ingress를 통해 외부 트래픽이 ClusterIP 서비스로 전달될 수 있습니다.
- 일반적으로 실무에서는 ClusterIP 서비스를 생성한 뒤, Ingress를 통해 외부 트래픽을 처리하는 구조를 사용합니다. 이렇게 하면 클러스터 내부와 외부 간의 네트워크를 효율적으로 분리하고 관리할 수 있습니다.
요약
특징 | ClusterIP | Ingress |
접근 범위 | 클러스터 내부 전용 | 클러스터 외부에서 내부로 연결 |
기능 계층 | L4 (IP/Port 기반) | L7 (HTTP/HTTPS 기반) |
주요 역할 | Pod 간 통신 및 로드 밸런싱 | 외부 트래픽 라우팅 및 SSL 지원 |
사용 목적 | 내부 네트워크 엔드포인트 제공 | 외부 요청 처리 및 경로 기반 라우팅 |
ClusterIP와 Ingress는 함께 사용되어 클러스터 내부와 외부 간의 트래픽 흐름을 효과적으로 관리합니다.