티스토리 뷰

728x90

동일 포드 내 컨테이너 간 통신

포드 안의 모든 컨테이너는 동일한 네트워크 및 UTS 네임스페이스에서 실행되기 때문에 같은 네트워크 환경을 공유합니다. 이는 마치 하나의 컴퓨터에서 여러 프로그램이 동시에 실행되는 것과 비슷합니다. 각 컨테이너는 동일한 IP 주소와 호스트 이름을 사용하며, 네트워크 인터페이스도 공유합니다. 하지만, 같은 포드 내의 컨테이너들이 같은 포트 번호를 사용하면 문제가 생길 수 있으므로, 서로 다른 포트를 사용해야 합니다.

  • 동일 포드 내 컨테이너들은 같은 네트워크와 UTS 네임스페이스를 공유함.
  • 같은 IP 주소와 호스트 이름을 사용함.
  • 컨테이너 간 통신이 간단해지고, 네트워크 인터페이스도 공유됨.
  • 동일 포드 내에서 같은 포트 번호 사용 시 포트 충돌이 발생할 수 있음.

 

플랫 인터 포드 네트워크(Flat Inter-Pod Network)

쿠버네티스 클러스터 내에서 모든 포드가 동일한 네트워크 공간에서 서로 간에 IP 주소를 통해 직접 통신할 수 있는 네트워크 구조를 의미합니다. 이 방식에서는 각 포드가 고유한 IP 주소를 가지고 있으며, 다른 포드와의 통신 시 네트워크 주소 변환(NAT) 없이 직접 연결이 가능합니다.

 

NAT(Network Address Translation)는 내부 네트워크의 사설 IP 주소를 외부 네트워크에 접속할 수 있는 공인 IP 주소로 변환하는 기술입니다. 이를 통해 여러 장치가 하나의 공인 IP 주소를 공유하여 인터넷에 접속할 수 있으며, 외부로부터 내부 네트워크를 보호하는 보안 기능도 제공합니다.

 

 


컨테이너를 포드 전체에 적절하게 구성하기

  • 다수의 포드로 멀티티어 애플리케이션 분할하기
  • 각각 스케일링이 가능한 포드로 분할하기

기본적으로, 특별한 이유가 있어서 동일한 포드에서 컨테이너를 실행하는 상황이 아니라면, 항상 별도의 포드에서 컨테이너가 실행되게 해야 한다

 

 


Multi container pods design patterns

쿠버네티스에서 멀티 컨테이너 포드 디자인 패턴은 서로 다른 기능을 가진 여러 컨테이너를 하나의 포드 안에서 협력하도록 구성하는 방식입니다. 대표적인 디자인 패턴으로는 사이드카(Sidecar), 어댑터(Adapter), 그리고 앰배서더(Ambassador) 패턴이 있습니다.

1. 사이드카 (Sidecar) 패턴

사이드카 패턴은 주 컨테이너와 보조 컨테이너가 함께 동작하도록 구성하는 방식입니다. 보통 주 컨테이너의 기능을 확장하거나 지원하는 작업을 담당합니다. 예를 들어, 로그 수집기, 프록시 서버, 혹은 설정 파일 동기화 작업을 담당하는 컨테이너를 사이드카로 배치할 수 있습니다.

  • 사용 사례: 애플리케이션 로그 수집, 데이터 백업, 설정 관리.
  • 특징: 주 컨테이너와 밀접하게 연결되어 동작하며, 주 컨테이너의 기능을 보완함.

2. 어댑터 (Adapter) 패턴

어댑터 패턴은 애플리케이션의 데이터나 로그 형식을 변환하여 다른 시스템과 호환될 수 있도록 돕는 컨테이너를 추가하는 방식입니다. 이 패턴을 사용하면 레거시 시스템이나 다양한 데이터 포맷을 사용하는 환경에서 포드의 데이터가 외부 시스템과 호환되도록 할 수 있습니다.

  • 사용 사례: 로그 형식 변환, 프로토콜 변환, 데이터 포맷 변환.
  • 특징: 데이터나 요청을 다른 포맷으로 변환해, 포드와 외부 시스템 간의 호환성을 유지함.

3. 앰배서더 (Ambassador) 패턴

앰배서더 패턴은 주 컨테이너가 외부 서비스와 통신할 때 중간에 위치해 요청을 처리하는 컨테이너를 추가하는 방식입니다. 앰배서더 컨테이너는 외부와의 통신을 프록시하거나, 네트워크 요청을 개선하는 등의 역할을 합니다.

  • 사용 사례: 네트워크 요청 프록시, TLS 종료, API 게이트웨이.
  • 특징: 주 컨테이너가 외부 서비스와 직접 통신하지 않고, 앰배서더 컨테이너를 통해 간접적으로 통신함.

YAML로 pod 만들기

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

 

 

kubectl apply -f {yaml 파일명}

 

You'll rarely create individual Pods directly in Kubernetes—even singleton Pods. This is because Pods are designed as relatively ephemeral, disposable entities.
(쿠버네티스에서 개별 포드를 직접 생성하는 일은 드뭅니다. 심지어 단일 포드조차도 그렇습니다. 이는 포드가 비교적 일시적이고, 쉽게 교체할 수 있는 엔터티로 설계되었기 때문입니다.)

 


참고자료

728x90
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함