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

파드에 플로팅 IP 추가하기

원문 보기 위키 갱신

플로팅 IP는 Kubernetes 파드에 도달하기 위한 추가 IP 주소예요. Calico IPAM으로 파드에 하나 이상의 플로팅 IP를 붙이면, 외부 클라이언트가 어떤 IP 프로토콜로든 워크로드에 접근할 수 있어요. 이 문서에서는 플로팅 IP를 활성화하고 파드에 설정하는 방법을 다뤄요.

출처: 문서

본문

큰 그림

Kubernetes 파드에 도달하기 위한 추가 IP 주소로 사용할 수 있는 플로팅 IP를 하나 이상 설정해요.

이런 점이 좋아요

Kubernetes 서비스처럼, 플로팅 IP는 시점에 따라 다른 파드가 뒤에 있을 수 있는 네트워크 서비스에 도달하기 위한 안정적인 IP 주소를 제공해요. Kubernetes 서비스 대비 주요 장점은 플로팅 IP가 모든 프로토콜에서 동작한다는 점이에요: TCP, UDP, SCTP만 되는 게 아니에요. Kubernetes 서비스와 달리 플로팅 IP는 한 번에 하나의 파드만 앞에 두며, 로드 밸런싱에는 사용할 수 없어요.

개념

플로팅 IP는 워크로드 엔드포인트에 할당되는 추가 IP 주소예요. 클러스터 안에서 옮겨 다니며 시점에 따라 다른 워크로드 엔드포인트를 대표할 수 있다는 의미에서 "플로팅(떠다니는)"해요. 워크로드 자체는 보통 플로팅 IP를 알지 못해요. 호스트가 들어오는 트래픽에 네트워크 주소 변환(NAT)을 적용해서, 워크로드에 패킷을 전달하기 전에 플로팅 IP를 워크로드의 실제 IP로 바꿔요.

Kubernetes 서비스는 네트워크 상의 다른 엔드포인트가 파드 집합에 접근할 수 있게 하는 클러스터 IP를 할당해요 (nodePort 및/또는 외부 로드 밸런서 IP도 함께 할당할 수 있어요). 많은 경우 Kubernetes 서비스는 플로팅 IP와 비슷한 사용 사례를 처리할 수 있고, 네이티브 Kubernetes 개념이라 Kubernetes 사용자에게는 보통 이쪽이 권장돼요. Kubernetes 서비스로는 UDP, TCP, SCTP 외의 프로토콜을 사용할 수 없다는 점만 다르죠 (이런 프로토콜의 사용은 꽤 드물어요).

시작하기 전에...

이 How to의 기능에는 다음이 필요해요:

  • Calico CNI 플러그인

확인하려면 Kubernetes 노드 중 하나에 ssh로 접속해서 CNI 플러그인 설정, 보통 /etc/cni/net.d/에 있는 파일을 살펴보세요. 10-calico.conflist 파일이 보이면 Calico CNI 플러그인을 사용 중인 거예요.

방법

플로팅 IP 활성화하기

Tab: Operator

Kubernetes 파드를 위한 플로팅 IP는 현재 오퍼레이터가 관리하는 Calico 클러스터에서는 지원되지 않아요.

Tab: Manifest

기본적으로 플로팅 IP는 비활성화되어 있어요. 플로팅 IP를 활성화하려면 다음 단계를 따르세요.

kube-system 네임스페이스의 calico-config ConfigMap을 수정해요. cni_network_config 섹션의 "calico" 플러그인 설정 부분에 다음 스탠자를 추가해요.

    "feature_control": {
         "floating_ips": true
     }

예를 들어 수정 후에는 cni_network_config가 다음과 비슷하게 보여요.

 cni_network_config: |-
    {
      "name": "k8s-pod-network",
      "cniVersion": "0.3.0",
      "plugins": [
        {
          "type": "calico",
          "log_level": "info",
          "datastore_type": "kubernetes",
          "nodename": "__KUBERNETES_NODE_NAME__",
          "mtu": __CNI_MTU__,
          "ipam": {
              "type": "calico-ipam"
          },
          "policy": {
              "type": "k8s"
          },
          "kubernetes": {
              "kubeconfig": "__KUBECONFIG_FILEPATH__"
          },
          "feature_control": {
              "floating_ips": true
          }
        },
        {
          "type": "portmap",
          "snat": true,
          "capabilities": {"portMappings": true}
        }
      ]
    }

플로팅 IP를 사용하도록 파드 설정하기

Tab: Operator

Kubernetes 파드를 위한 플로팅 IP는 현재 오퍼레이터가 관리하는 Calico 클러스터에서는 지원되지 않아요.

Tab: Manifest

파드에 키 cni.projectcalico.org/floatingIPs를, 값은 대괄호로 묶은 IP 주소 목록으로 어노테이션하세요. 클러스터의 나머지 부분에 올바르게 광고되려면 모든 플로팅 IP가 설정된 IP 풀 범위 안에 있어야 해요.

예를 들면:

"cni.projectcalico.org/floatingIPs": "[\"10.0.0.1\"]"

주소를 둘러싼 안쪽 큰따옴표에 이스케이프된 \"가 사용된 점에 주의하세요.

더 알아보기 (Learn more)

플로팅 IP는 모든 프로토콜에서 동작하지만 로드 밸런싱은 안 돼요. Operator 설치에서는 아직 지원되지 않으니 매니페스트 설치에서만 사용할 수 있어요. 플로팅 IP는 반드시 설정된 IP 풀 범위 안에 있어야 해요.