본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

여러 IP 풀 만들기

원문 보기 위키 갱신

Calico는 기본 설치 시 IPv4 풀 하나를 만들지만, 필요에 따라 여러 IP 풀을 추가로 구성할 수 있어요. 이 문서에서는 설치 시점 또는 운영 중인 클러스터에서 추가 IP 풀을 만드는 방법을 소개합니다. 분리된 주소 범위, IPv6, 토폴로지 기반 주소 할당 같은 용도에 활용할 수 있어요.

출처: 문서

본문

여러 IP 풀 이해하기

Calico를 설치하면 기본적으로 IPv4 풀 하나가 만들어져요. 이 IP 풀은 파드에 IP 주소를 할당하고, 필요하다면 클러스터 내부의 터널에도 사용됩니다.

때로는 추가 IP 풀을 구성하고 싶을 수 있어요. 예를 들면:

Calico 설치 시 여러 IP 풀 만들기

Tab: Operator

custom-resources.yaml 안의 Installation 리소스를 편집해 여러 개의 고유한 IP 풀을 포함시킬 수 있어요. 다음 예제는 서로 다른 노드 집합에 할당되는 두 개의 IP 풀을 만듭니다.

apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    ipPools:
    - name: pool-zone-1
      cidr: 192.168.0.0/24
      encapsulation: VXLAN
      nodeSelector: "zone == 'zone-1'"
    - name: pool-zone-2
      cidr: 192.168.1.0/24
      encapsulation: VXLAN
      nodeSelector: "zone == 'zone-2'"

Calico를 설치한 뒤에는 다음 명령으로 IP 풀이 만들어졌는지 확인할 수 있어요:

kubectl get ippools

오퍼레이터가 IP 풀을 관리하지 않도록 하기

어떤 경우에는 오퍼레이터 내부의 IP 풀 관리를 비활성화하고, 대신 calicoctl이나 kubectl로 IP 풀을 만들고 지우고 싶을 수 있어요. 그렇게 하려면 custom-resources.yaml의 Installation 리소스를 편집해 빈 IP 풀 목록을 지정하면 됩니다.

apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    ipPools: []

이 구성에서는 오퍼레이터가 Calico 컴포넌트를 설치하기 전에 IP 풀을 만들 때까지 기다려요.

Tab: Manifest

매니페스트로 Calico를 설치할 때는 calicoctl로 여러 IP 풀을 관리할 수 있어요. 완전한 제어를 원한다면 그 전에 기본 IP 풀 생성을 비활성화하세요.

  1. calico.yaml의 calico-node DaemonSet에 다음 환경 변수를 추가해 기본 IP 풀을 비활성화합니다.

    env:
    - name: NO_DEFAULT_POOLS
       value: "true"
    

1. 그다음 `calico.yaml`을 설치합니다.

1. 원하는 IP 풀을 만듭니다. 예를 들어 다음 명령들은 서로 다른 노드 집합에 할당되는 두 개의 IP 풀을 만들어요.

 ```bash
 calicoctl create -f -<<EOF
 apiVersion: projectcalico.org/v3
 kind: IPPool
 metadata:
   name: pool-zone-1
 spec:
   cidr: 192.168.0.0/24
   vxlanMode: Always
   natOutgoing: true
   nodeSelector: zone == "zone-1"
 EOF
calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: pool-zone-2
spec:
  cidr: 192.168.1.0/24
  vxlanMode: Always
  natOutgoing: true
  nodeSelector: zone == "zone-2"
EOF

더 알아보기 (Learn more)

nodeSelector를 활용하면 존(zone)이나 하드웨어 특성별로 주소 공간을 나눌 수 있어요. 기본 풀을 비활성화하는 방법(NO_DEFAULT_POOLS 또는 빈 ipPools)도 상황에 맞게 선택하세요.