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

듀얼 스택 또는 IPv6 전용 구성하기

원문 보기 위키 갱신

Calico Open Source에서 IP 풀, 노드 IP 자동 감지, CNI 플러그인 구성을 통해 듀얼 스택 또는 IPv6 전용 파드 네트워킹을 세팅하는 방법을 소개해요. IPv4만 쓰는 기본 모드에서 IPv6 전용, 또는 둘을 함께 쓰는 듀얼 스택까지 선택할 수 있어요. 이 문서의 작업은 새 클러스터 대상이라는 점을 먼저 알아 두세요.

출처: 문서

본문

큰 그림

워크로드 통신을 위해 Calico IP 주소 할당을 듀얼 스택 또는 IPv6 전용으로 구성해요.

가치

IPv6를 통한 워크로드 통신은 IPv4와 함께, 또는 대신으로 점점 더 원하는 구성이 되고 있어요. Calico는 다음을 지원해요:

  • IPv4 전용 (기본값)

    각 워크로드는 IPv4 주소를 받고, IPv4로 통신할 수 있어요.

  • 듀얼 스택

    각 워크로드는 IPv4와 IPv6 주소를 모두 받고, IPv4 또는 IPv6로 통신할 수 있어요.

  • IPv6 전용

    각 워크로드는 IPv6 주소를 받고, IPv6로 통신할 수 있어요.

시작하기 전에

Calico 요구 사항

  • Calico IPAM

Kubernetes 버전 요구 사항

  • 듀얼 스택은 1.16 이상
  • 한 번에 한 IP 스택(IPv4 또는 IPv6)만 사용한다면 어떤 Kubernetes 버전이든 가능

Kubernetes IPv6 호스트 요구 사항

  • 다른 호스트에서 접근 가능한 IPv6 주소
  • sysctl 설정 net.ipv6.conf.all.forwarding이 1로 설정되어 있어야 해요. 이렇게 하면 Kubernetes 서비스 트래픽과 Calico 트래픽이 모두 적절히 포워딩돼요.
  • 기본 IPv6 라우트

Kubernetes IPv4 호스트 요구 사항

  • 다른 호스트에서 접근 가능한 IPv4 주소
  • sysctl 설정 net.ipv4.conf.all.forwarding이 1로 설정되어 있어야 해요. 이렇게 하면 Kubernetes 서비스 트래픽과 Calico 트래픽이 모두 적절히 포워딩돼요.
  • 기본 IPv4 라우트

방법

SECONDARY: 다음 작업은 새 클러스터를 위한 거예요.

IPv6 전용 활성화

탭: Operator

오퍼레이터로 IPv6 전용 클러스터를 구성하려면, 설치 시점에 기본 Installation을 수정해서 IPv6 풀 하나만 포함하고 IPv4 풀은 없도록 해요. 예를 들면:

apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    ipPools:
      - blockSize: 122
        cidr: 2001::00/64
        encapsulation: None
        natOutgoing: Enabled
        nodeSelector: all()

탭: Manifest

  1. IPv6 파드 CIDR과 서비스 IP 범위로 새 Kubernetes 클러스터를 준비해요.

  2. Calico Kubernetes 설치 가이드를 사용해 클러스터와 데이터스토어 타입에 맞는 Calico 매니페스트를 내려받아요.

  3. CNI 구성(매니페스트의 calico-config ConfigMap)을 수정해서 IPv4 할당은 끄고 IPv6 할당은 켜요.

        "ipam": {
            "type": "calico-ipam",
            "assign_ipv4": "false",
            "assign_ipv6": "true"
        },
    
  4. 다음 변수 설정을 calico-node 컨테이너 환경에 추가해서 IPv6 지원을 구성해요.

    변수 이름 값
    IP6 autodetect
    FELIX_IPV6SUPPORT true

    SECONDARY: IPv6 IP 풀에 사설 IP 주소가 포함되어 있다면, 사설 IP 주소를 할당받은 파드는 기본적으로 아웃바운드 NAT를 수행할 수 없어요.

    이런 파드에 아웃바운드 NAT를 활성화하려면 calico-node 컨테이너 환경에 CALICO_IPV6POOL_NAT_OUTGOING: true를 추가해요.

  5. kubeadm으로 프로비저닝되지 않은 클러스터(아래 참고 참조)는, 다음 변수 설정을 calico-node 컨테이너 환경에 추가해서 기본 IPv6 IP 풀을 구성해요:

    변수 이름 값
    CALICO_IPV6POOL_CIDR kube-controller-manager와 kube-proxy에 클러스터 CIDR로 구성한 IPv6 범위와 동일한 값

    SECONDARY: kubeadm으로 프로비저닝된 클러스터에서는 Calico가 IPv4/IPv6 파드 CIDR을 자동 감지하기 때문에 별도 구성이 필요하지 않아요.

  6. 수정한 매니페스트를 kubectl apply -f로 적용해요.

    새 파드는 IPv6 주소를 받고, IPv6로 서로 통신하며 외부 세계와도 통신할 수 있어요.

(선택 사항) 호스트가 IPv4 주소를 찾지 않도록 업데이트

IPv4 주소나 노드 간 연결성이 없어서 워크로드를 IPv6 전용으로 운영하고 싶다면, Calico가 IPv4 주소를 찾지 않도록 다음 추가 단계를 완료해요.

  1. IP를 none으로 설정해서 IPv4 IP 자동 감지를 비활성화해요.

  2. 다음 방법 중 하나로 IPv6용 Calico BGP 라우터 ID를 계산해요.

    • calico/node에 환경 변수 CALICO_ROUTER_ID=hash를 설정해요. 그러면 Calico가 호스트명을 기준으로 라우터 ID를 계산해요.
    • 각 노드에 개별적으로 고유한 CALICO_ROUTER_ID 값을 전달해요.

듀얼 스택 활성화

  1. Kubernetes 사전 조건과 활성화 단계를 따라 새 클러스터를 준비해요.

탭: Operator

오퍼레이터로 듀얼 스택 클러스터를 구성하려면, 설치 시점에 기본 Installation을 수정해서 IPv4 풀과 IPv6 풀을 모두 포함하도록 해요. 예를 들면:

apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
   # Configures Calico networking.
  calicoNetwork:
    ipPools:
      - blockSize: 26
        cidr: 10.48.0.0/21
        encapsulation: IPIP
        natOutgoing: Enabled
        nodeSelector: all()
      - blockSize: 122
        cidr: 2001::00/64
        encapsulation: None
        natOutgoing: Enabled
        nodeSelector: all()

탭: Manifest

  1. Calico Kubernetes 설치 가이드를 사용해 클러스터와 데이터스토어 타입에 맞는 Calico 매니페스트를 내려받아요.

  2. CNI 구성(매니페스트의 calico-config ConfigMap)을 수정하고, 두 필드를 모두 true로 설정해서 IPv4와 IPv6 주소 할당을 모두 활성화해요.

        "ipam": {
            "type": "calico-ipam",
            "assign_ipv4": "true",
            "assign_ipv6": "true"
        },
    
  3. 다음 변수 설정을 calico-node 컨테이너 환경에 추가해서 IPv6 지원을 구성해요.

    변수 이름 값
    IP6 autodetect
    FELIX_IPV6SUPPORT true

    SECONDARY: IPv6 IP 풀에 사설 IP 주소가 포함되어 있다면, 사설 IP 주소를 할당받은 파드는 기본적으로 아웃바운드 NAT를 수행할 수 없어요.

    이런 파드에 아웃바운드 NAT를 활성화하려면 calico-node 컨테이너 환경에 CALICO_IPV6POOL_NAT_OUTGOING: true를 추가해요.

  4. kubeadm으로 프로비저닝되지 않은 클러스터(아래 참고 참조)는, 다음 변수 설정을 calico-node 컨테이너 환경에 추가해서 기본 IPv6 IP 풀을 구성해요:

    변수 이름 값
    CALICO_IPV6POOL_CIDR kube-controller-manager와 kube-proxy에 IPv6 클러스터 CIDR로 구성한 IPv6 범위와 동일한 값

    SECONDARY: kubeadm으로 프로비저닝된 클러스터에서는 Calico가 IPv4/IPv6 파드 CIDR을 자동 감지하기 때문에 별도 구성이 필요하지 않아요.

  5. 수정한 매니페스트를 kubectl apply -f로 적용해요.

    새 파드는 IPv4와 IPv6 주소를 모두 받고, IPv4 또는 IPv6로 서로 통신하며 외부 세계와도 통신할 수 있어요.

추가 리소스

더 알아보기 (Learn more)

IPv6 전용과 듀얼 스택 모두 새 클러스터에서만 세팅해야 해요. 노드에는 접근 가능한 주소, 포워딩 sysctl, 기본 라우트가 준비되어 있어야 해요. kubeadm 클러스터에서는 CIDR이 자동 감지되니 CALICO_IPV6POOL_CIDR 설정이 필요 없어요.