Calico CNI 플러그인 구성
이 문서는 Calico 오픈 소스 CNI 플러그인과 IPAM 플러그인을 CNI 네트워크 구성 파일로 설정하는 방법을 정리한 레퍼런스예요. 최소 구성부터 데이터스토어, 로깅, IPAM 옵션, 쿠버네티스 정책 설정까지 CNI 구성에 들어갈 수 있는 항목을 하나씩 설명해요. JSON/YAML 예제와 옵션 이름은 원문 그대로 유지했으니 그대로 복사해 쓰면 돼요.
출처: 문서
본문
SECONDARY: 오퍼레이터로 설치하면 Calico CNI 플러그인을 직접 구성할 필요가 없어요. 오퍼레이터 구성 전체 레퍼런스는 설치 API 레퍼런스 문서를 참고하세요.
Calico CNI 플러그인은 표준 CNI 구성 메커니즘을 통해 구성해요.
네트워킹과 IPAM에 Calico를 사용하는 최소 구성 파일은 다음과 같아요.
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"ipam": {
"type": "calico-ipam"
}
}
노드가 노드 호스트명과 다른 NODENAME으로 등록된 calico/node 컨테이너를 사용한다면, 이 노드의 CNI 플러그인도 같은 nodename으로 구성해야 해요.
{
"name": "any_name",
"nodename": "<NODENAME>",
"type": "calico",
"ipam": {
"type": "calico-ipam"
}
}
추가 구성은 아래에서 자세히 설명하는 대로 넣을 수 있어요.
일반 (Generic)
데이터스토어 타입
다음 옵션으로 Calico 데이터스토어 타입을 구성할 수 있어요.
datastore_type(기본값: etcdv3)
Calico CNI 플러그인은 다음 데이터스토어 타입을 지원해요.
- etcdv3 (기본값)
- kubernetes
etcd 위치
다음 옵션은 datastore_type이 etcdv3일 때만 유효해요.
다음 옵션으로 etcd 클러스터 접근을 구성하세요.
| 옵션 이름 | 기본값 | 설명 | |
|---|---|---|---|
etcd_endpoints |
None | 콤마로 구분된 엔드포인트 목록이에요. 예: http://127.0.0.1:2379,http://127.0.0.2:2379 |
string |
etcd_discovery_srv |
None | SRV 레코드로 etcd 엔드포인트를 찾을 도메인 이름이에요. etcdEndpoints와 동시에 쓸 수 없어요. 예: example.com (선택 사항) |
string |
etcd_key_file |
None | CNI 플러그인 클라이언트 인증서와 짝을 이루는 개인 키가 담긴 파일 경로예요. CNI 플러그인이 상호 TLS 인증에 참여해 etcd 서버에 자신을 식별할 수 있게 해줘요. 예: /etc/calico-cni/key.pem (선택 사항) |
string |
etcd_cert_file |
None | CNI 플러그인에 발급된 클라이언트 인증서가 담긴 파일 경로예요. CNI 플러그인이 상호 TLS 인증에 참여해 etcd 서버에 자신을 식별할 수 있게 해줘요. 예: /etc/calico-cni/cert.pem (선택 사항) |
string |
etcd_ca_cert_file |
None | etcd 서버 인증서를 발급한 인증 기관(CA)의 루트 인증서가 담긴 파일 경로예요. CNI 플러그인이 루트 인증서에 서명한 CA를 신뢰하도록 구성해요. 이 파일에는 루트 인증서가 여러 개 들어 있을 수 있고, 그러면 CNI 플러그인은 포함된 각 CA를 모두 신뢰해요. | string |
다음 옵션은 deprecated되었어요.
etcd_authority(기본값은127.0.0.1:2379)etcd_authority를etcd_endpoints와 동시에 설정하면etcd_endpoints가 사용돼요.
etcd_scheme(기본값은http)
로깅
로깅은 항상 stderr로 나가요. 그리고 기본적으로 각 호스트의 /var/log/calico/cni/cni.log에도 로그가 기록돼요.
로깅은 netconf에서 다음 옵션으로 구성할 수 있어요.
| 옵션 이름 | 기본값 | 설명 |
|---|---|---|
log_level |
INFO | 로깅 레벨이에요. 허용 레벨은 ERROR, WARNING, INFO, DEBUG예요. |
log_file_path |
/var/log/calico/cni/cni.log |
각 호스트에서 CNI 로그 파일을 기록할 위치예요. 이 옵션을 제거하면 파일 로깅을 끌 수 있어요. |
log_file_max_size |
100 | 로그 파일이 로테이션되기 전까지 도달할 수 있는 최대 파일 크기(MB)예요. |
log_file_max_age |
30 | 오래된 로그 파일이 삭제되기 전까지 호스트에 보관되는 최대 기간(일)이에요. |
log_file_max_count |
10 | 정리되기 전까지 호스트에 허용되는 로테이션된 로그 파일의 최대 개수예요. |
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"log_level": "DEBUG",
"log_file_path": "/var/log/calico/cni/cni.log",
"ipam": {
"type": "calico-ipam"
}
}
IPAM
Calico IPAM을 사용할 때는 다음 플래그가 어떤 IP 주소를 할당할지 결정해요. 참고: 이 플래그는 불리언 값이 아니라 문자열이에요.
assign_ipv4(기본값:"true")assign_ipv6(기본값:"false")
CNI_ARGS를 사용해 IP를 원하는 값으로 설정하면 특정 IP 주소를 고를 수 있어요.
기본적으로 Calico IPAM은 사용 가능한 모든 IP 풀에서 IP 주소를 할당해요.
선택적으로 다음 속성으로 가능한 IPv4, IPv6 풀 목록을 지정할 수도 있어요.
ipv4_pools: CIDR 문자열 또는 풀 이름의 배열이에요. (예:"ipv4_pools": ["10.0.0.0/24", "20.0.0.0/16", "default-ipv4-ippool"])ipv6_pools: CIDR 문자열 또는 풀 이름의 배열이에요. (예:"ipv6_pools": ["2001:db8::1/120", "namedpool"])
CNI 구성 예제:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"ipam": {
"type": "calico-ipam",
"assign_ipv4": "true",
"assign_ipv6": "true",
"ipv4_pools": ["10.0.0.0/24", "20.0.0.0/16", "default-ipv4-ippool"],
"ipv6_pools": ["2001:db8::1/120", "default-ipv6-ippool"]
}
}
SECONDARY:
ipv6_pools는assign_ipv6가"true"로 설정된 경우에만 존중돼요.
CNI 구성에서 지정한 IP 풀은 이미 만들어져 있어야 해요. 존재하지 않는 IP 풀을 구성에 지정하면 오류가 발생해요.
컨테이너 설정
다음 옵션으로 컨테이너 네임스페이스 안의 설정을 구성할 수 있어요.
- allow_ip_forwarding (기본값은
false)
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"ipam": {
"type": "calico-ipam"
},
"container_settings": {
"allow_ip_forwarding": true
}
}
Readiness Gates
다음 옵션은 파드 네트워킹을 구성하기 전에 지정한 엔드포인트가 준비될 때까지 CNI 플러그인을 기다리게 해줘요.
readiness_gates
URL 배열을 받는 선택적 속성이에요. 지정한 각 URL은 준비 상태가 폴링되고, 모든 readiness_gates가 준비되면 파드 네트워킹 시작이 계속돼요.
CNI 구성 예제:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"ipam": {
"type": "calico-ipam"
},
"readiness_gates": ["http://localhost:9099/readiness", "http://localhost:8888/status"]
}
쿠버네티스 전용 설정
Calico CNI 플러그인을 Kubernetes와 함께 사용할 때는, Kubernetes 파드에 할당된 라벨을 찾기 위해 플러그인이 Kubernetes API 서버에 접근할 수 있어야 해요. 접근을 구성하는 권장 방법은 네트워크 구성의 kubernetes 섹션에 kubeconfig 파일을 지정하는 거예요. 예를 들면:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"kubernetes": {
"kubeconfig": "/path/to/kubeconfig"
},
"ipam": {
"type": "calico-ipam"
}
}
편의상 API 위치를 직접 구성할 수도 있어요. 예를 들면:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"kubernetes": {
"k8s_api_root": "http://127.0.0.1:8080"
},
"ipam": {
"type": "calico-ipam"
}
}
Kubernetes 정책 활성화
Kubernetes NetworkPolicy 리소스를 사용하고 싶다면 네트워크 구성에 정책 타입을 설정해야 해요. 지원되는 정책 타입은 k8s 하나뿐이에요. 설정했다면 policy, profile, workloadendpoint 컨트롤러를 활성화한 상태로 calico/kube-controllers도 실행해야 해요.
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"policy": {
"type": "k8s"
},
"kubernetes": {
"kubeconfig": "/path/to/kubeconfig"
},
"ipam": {
"type": "calico-ipam"
}
}
type: k8s를 사용할 때 Calico CNI 플러그인은 모든 네임스페이스의 Pods 리소스에 대한 읽기 전용 Kubernetes API 접근이 필요해요.
정책 설정 타임아웃 활성화
Calico CNI 플러그인을 구성하면 다음 조건 중 하나가 발생하기 전까지 새 파드가 컨테이너를 시작하지 않도록 막을 수 있어요.
- 파드의 정책 프로그래밍이 완료됨.
- 지정한 시간이 경과함.
이 기능을 켜면, 파드의 정책이 호스트에 의해 프로그래밍되기 전에 파드가 시작하려다 생기는 오류를 피할 수 있어요.
Tab: Operator
정책 설정 타임아웃은 기본 operator.tigera.io/v1/installation 리소스의 calicoNetwork spec에서 linuxPolicySetupTimeoutSeconds 필드를 설정해 구성해요.
다음 예제는 파드가 컨테이너 시작을 최대 10초까지, 또는 파드의 데이터 플레인이 프로그래밍될 때까지 지연시키도록 CNI를 구성해요.
kind: Installation
apiVersion: operator.tigera.io/v1
metadata:
name: default
spec:
calicoNetwork:
linuxPolicySetupTimeoutSeconds: 10
Tab: Manifest
정책 설정 타임아웃은 CNI 구성에서 policy_setup_timeout_seconds 옵션을 설정해 구성해요.
CNI 구성 예제:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"policy_setup_timeout_seconds": 10,
"ipam": {
"type": "calico-ipam"
}
}
Calico CNI 플러그인은 Felix의 endpoint-status 디렉터리를 읽어 파드에 대한 데이터 플레인 프로그래밍이 끝났는지 판단해요. 설정하지 않으면 Calico CNI 플러그인은 /var/run/calico/endpoint-status에서 이 디렉터리를 찾아요. /var/run/calico 경로는 보통 Calico DaemonSet에 마운트되어서, Felix 컨테이너가 쓰고 (호스트 네임스페이스의) Calico CNI 플러그인이 읽을 수 있어요. endpoint-status 디렉터리를 활성화하고 Felix 컨테이너 안의 어느 디렉터리에 기록할지 조정하려면, Felix에 endpointStatusPathPrefix 옵션을 구성해야 해요.
Calico CNI 플러그인이 호스트 파일시스템의 어디에서 endpoint-status 디렉터리를 찾을지 조정하려면 endpoint_status_dir 옵션을 설정해야 해요.
CNI 구성 예제:
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"policy_setup_timeout_seconds": 10,
"endpoint_status_dir": "/path/to/endpoint-status",
"ipam": {
"type": "calico-ipam"
}
}
IPAM
host-local IPAM 사용하기
Calico는 기본 calico-ipam 대신 host-local IPAM을 사용하도록 구성할 수 있어요. host-local IPAM은 호스트별로 미리 정해진 CIDR을 사용하고 할당 정보를 각 노드에 로컬로 저장해요. 클러스터의 필요에 따라 주소 블록과 개별 주소를 동적으로 할당하는 Calico IPAM과는 대조적이에요.
host-local IPAM은 보통 Kubernetes 라우트 컨트롤러와의 통합이 필요한 클러스터에서만 쓰여요. 참고로 파드에 특정 주소나 풀을 요청하는 기능 같은 일부 Calico 기능은 Calico IPAM이 있어야 동작하고, host-local IPAM이 켜져 있으면 동작하지 않아요.
Tab: Operator
host-local IPAM 플러그인은 operator.tigera.io/Installation API에서 Spec.CNI.IPAM.Plugin 필드를 HostLocal로 설정해 구성해요.
Calico는 Spec.IPPools에 IPv4 풀이 구성되어 있으면 host-local IPAM 플러그인으로 노드의 IPv4 pod CIDR에서 IPv4 주소를 할당하고, IPv6 풀이 구성되어 있으면 노드의 IPv6 pod CIDR에서 IPv6 주소를 할당해요.
다음 예제는 host-local IPAM 플러그인으로 파드에 듀얼 스택 IP를 할당하도록 Calico를 구성해요.
kind: Installation
apiVersion: operator.tigera.io/v1
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- cidr: 192.168.0.0/16
- cidr: 2001:db8::/64
cni:
type: Calico
ipam:
type: HostLocal
Tab: Manifest
CNI host-local IPAM 플러그인을 사용할 때는 subnet 필드(최상위 또는 "range" 안)에 usePodCidr과 usePodCidrIPv6이라는 특별한 값 두 개를 쓸 수 있어요. 이 값이 있으면 플러그인이 Kubernetes API의 Node.podCIDR 필드를 근거로 사용할 subnet을 결정해요. Calico는 range의 gateway 필드를 사용하지 않으므로 이 필드는 필수가 아니고, 있어도 무시돼요.
SECONDARY:
usePodCidr과usePodCidrIPv6는subnet필드의 값으로만 쓸 수 있어요.rangeStart나rangeEnd에는 쓸 수 없어서,subnet을usePodCidr로 설정했다면 그 값들은 의미가 없어요.
Calico는 host-local IPAM 플러그인의 routes 필드를 다음처럼 지원해요.
routes필드가 없으면 Calico는 파드 안에 기본0.0.0.0/0루트와/또는::/0루트를 설치해요(파드에 IPv4 주소와/또는 IPv6 주소가 있는지에 따라요).routes필드가 있으면 Calico는 routes 필드 안의 루트만 파드에 프로그래밍해요. Calico는 파드로의 포인트투포인트 링크를 구현하기 때문에gw필드는 필수가 아니고, 있어도 무시돼요. Calico가 설치하는 모든 루트의 다음 홉은 Calico의 링크 로컬 IP예요.
Calico CNI 플러그인 구성:
node_name- CIDR 값을 찾을 때 사용할 노드 이름이에요(기본값은 현재 호스트명)
{
"name": "any_name",
"cniVersion": "0.1.0",
"type": "calico",
"kubernetes": {
"kubeconfig": "/path/to/kubeconfig",
"node_name": "node-name-in-k8s"
},
"ipam": {
"type": "host-local",
"ranges": [[{ "subnet": "usePodCidr" }], [{ "subnet": "usePodCidrIPv6" }]],
"routes": [{ "dst": "0.0.0.0/0" }, { "dst": "2001:db8::/96" }]
}
}
usePodCidr이나 usePodCidrIPv6 옵션을 사용할 때 Calico CNI 플러그인은 Nodes 리소스에 대한 읽기 전용 Kubernetes API 접근이 필요해요.
node와 typha 구성하기
Kubernetes API 데이터스토어와 함께 host-local IPAM을 사용할 때는, calico/node와 Typha 배포 양쪽 모두에 USE_POD_CIDR=true 환경 변수를 설정해 Node.podCIDR 필드를 사용하도록 구성해야 해요.
upgrade-ipam init 컨테이너 비활성화하기
manifest 기반 Calico 설치에서 host-local IPAM을 사용한다면, 매니페스트를 적용하기 전에 매니페스트의 calico-node DaemonSet 정의에서 upgrade-ipam init 컨테이너를 제거해야 해요.
Calico가 이미 설치되어 있다면 다음 명령으로 init 컨테이너를 제거할 수 있어요.
kubectl get ds calico-node -n kube-system -o json | \
jq 'del(.spec.template.spec.initContainers[]? | select(.name == "upgrade-ipam"))' | \
kubectl apply -f -
Kubernetes 어노테이션 사용하기
네임스페이스별 또는 파드별 IP 풀 지정하기
위에서 설명한 대로 CNI 구성에 IP 풀을 지정하는 것 외에도, Calico IPAM은 다음 Kubernetes 어노테이션으로 네임스페이스별 또는 파드별 IP 풀을 지원해요.
-
cni.projectcalico.org/ipv4pools: 파드에 할당할 주소를 고를 수 있는, 구성된 IPv4 풀의 목록이에요.예:
annotations: 'cni.projectcalico.org/ipv4pools': '["default-ipv4-ippool"]' -
cni.projectcalico.org/ipv6pools: 파드에 할당할 주소를 고를 수 있는, 구성된 IPv6 풀의 목록이에요.예:
annotations: 'cni.projectcalico.org/ipv6pools': '["2001:db8::1/120"]'
이 어노테이션으로 IP 풀을 지정하면 CNI 구성에 지정된 IP 풀을 덮어써요.
SECONDARY:
ipv4pools나ipv6pools어노테이션을 사용하려면 해당 IP 풀이 미리 존재해야 해요. IP 풀의 일부(subset)를 요청하는 것은 지원되지 않아요. 어노테이션에서 요청한 IP 풀은 구성된 IPPool 리소스와 정확히 일치해야 해요.
SECONDARY: Calico CNI 플러그인은 네임스페이스별 어노테이션 지정을 지원해요. 네임스페이스와 파드 양쪽 모두 이 어노테이션을 가지면 파드의 정보가 사용돼요. 그렇지 않고 네임스페이스만 어노테이션을 가지면, 그 안의 모든 파드에 네임스페이스의 어노테이션이 사용돼요.
특정 IP 주소 요청하기
Calico IPAM에서 Kubernetes 어노테이션으로 특정 IP 주소를 요청할 수도 있어요. 특정 IP 주소를 요청하는 어노테이션은 두 개예요.
-
cni.projectcalico.org/ipAddrs: 파드에 할당할 IPv4와/또는 IPv6 주소의 목록이에요. 요청한 IP 주소는 Calico IPAM에서 할당되며, 구성된 IP 풀 안에 있어야 해요.예:
annotations: 'cni.projectcalico.org/ipAddrs': '["192.168.0.1"]' -
cni.projectcalico.org/ipAddrsNoIpam: IPAM을 우회해 파드에 할당할 IPv4와/또는 IPv6 주소의 목록이에요. IP 충돌과 라우팅은 수동으로, 또는 다른 시스템이 처리해야 해요. Calico는 파드의 IP 주소가 BGP 모드에서 Calico IP 풀 안에 속할 때만 파드에 루트를 배포해요. VXLAN 모드에서 동작할 때는 Calico가 ipAddrsNoIpam 루트를 배포하지 않아요. Calico IP 풀에 없는 IP 주소를 할당하거나, VXLAN 캡슐화를 사용하는 Calico IP 풀 안에 속한 IP 주소를 할당한다면 그 IP 주소로의 라우팅이 다른 메커니즘으로 처리되는지 직접 확인해야 해요.예:
annotations: 'cni.projectcalico.org/ipAddrsNoIpam': '["10.0.0.1"]'ipAddrsNoIpam 기능은 기본적으로 비활성화되어 있어요. CNI 네트워크 구성의 feature_control 섹션에서 활성화할 수 있어요.
{ "name": "any_name", "cniVersion": "0.1.0", "type": "calico", "ipam": { "type": "calico-ipam" }, "feature_control": { "ip_addrs_no_ipam": true } }WARNING: 이 기능은 IP 스푸핑으로 네트워크 정책을 우회할 수 있게 해줘요. 사용자가 임의의 IP 주소를 선택하지 못하도록 적절한 어드미션 컨트롤이 갖춰져 있는지 확인해야 해요.
SECONDARY:
ipAddrs와ipAddrsNoIpam어노테이션은 함께 쓸 수 없어요.- 이 어노테이션들로는 IPv4/IPv6 하나 또는 IPv4 하나와 IPv6 하나만 지정할 수 있어요.
ipAddrs나ipAddrsNoIpam을ipv4pools나ipv6pools와 함께 사용하면ipAddrs/ipAddrsNoIpam이 우선해요.
플로팅 IP 요청하기
Calico에서 Kubernetes 어노테이션으로 파드의 플로팅 IP 주소를 요청할 수 있어요.
SECONDARY: 광고(advertisement)가 제대로 동작하려면 지정한 주소가 IP 풀에 속해야 해요.
-
cni.projectcalico.org/floatingIPs: 파드의 워크로드 엔드포인트에 할당될 플로팅 IP의 목록이에요.예:
annotations: 'cni.projectcalico.org/floatingIPs': '["10.0.0.1"]'floatingIPs 기능은 기본적으로 비활성화되어 있어요. CNI 네트워크 구성의 feature_control 섹션에서 활성화할 수 있어요.
{ "name": "any_name", "cniVersion": "0.1.0", "type": "calico", "ipam": { "type": "calico-ipam" }, "feature_control": { "floating_ips": true } }WARNING: 이 기능은 그 파드를 위한 트래픽이 아니었을 수 있는 트래픽을 파드가 받게 허용할 수 있어요. 사용자가 임의의 플로팅 IP 주소를 선택하지 못하도록 적절한 어드미션 컨트롤이 갖춰져 있는지 확인해야 해요.
IP 풀 node selector 사용하기
노드는 자신을 선택하는 IP 풀에서만 워크로드 주소를 할당해요. 기본적으로 IP 풀은 모든 노드를 선택하지만, nodeSelector 필드로 이를 구성할 수 있어요. 자세한 내용은 IP 풀 리소스 문서를 참고하세요.
더 자세한 내용이에요.
예제:
-
라벨
rack=0을 포함하는 노드에만 IP를 할당하는 IP 풀을 만들어요(또는 업데이트해요).calicoctl create -f -<<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: rack-0-ippool spec: cidr: 192.168.0.0/24 ipipMode: Always natOutgoing: true nodeSelector: rack == "0" EOF -
노드에
rack=0라벨을 붙여요.kubectl label nodes kube-node-0 rack=0
전체 예제는 토폴로지에 따라 IP 주소 할당하기 사용 가이드를 참고하세요.
더 자세한 내용이에요.
CNI 네트워크 구성 리스트
CNI 0.3.0 스펙은 여러 CNI 플러그인을 "체이닝"하는 것을 지원해요. Calico는 기본으로 활성화되는 다음 Kubernetes CNI 플러그인을 지원해요. 다른 CNI 플러그인을 체이닝하는 것도 동작할 수 있지만, 우리는 다음 테스트된 CNI 플러그인만 지원해요.
포트 매핑 플러그인
Calico가 Kubernetes host port 기능을 구현하는 데 필요하고, 기본으로 활성화되어 있어요.
SECONDARY: 노드가 100개 이상, 서비스가 4000개 이상인 클러스터에서는 노드를 드레인하는 데 시간이 오래 걸릴 수 있는 portmap 플러그인 CNI 이슈를 알아 두세요.
비활성화하려면 Calico 매니페스트의 CNI 네트워크 구성에서 portmap 섹션을 제거하세요.
{
"type": "portmap",
"snat": true,
"capabilities": { "portMappings": true }
}
우선순위
IP 주소 할당에 이 방법 중 하나 이상을 사용하면 다음 우선순위가 적용돼요. 1이 가장 높아요.
- Kubernetes 어노테이션
- CNI 구성
- IP 풀 node selector
SECONDARY: Calico IPAM은 이미 실행 중인 워크로드에 IP 주소를 다시 할당하지 않아요. 새로 구성한 IP 풀의 IP 주소로 실행 중인 워크로드를 업데이트하려면 워크로드를 다시 만들어야 해요. 프로덕션에 들어가기 전이나 유지보수 창(maintenance window) 동안에 하는 것을 권장해요.
veth 인터페이스의 num_queues 지정하기
CNI 구성의 num_queues 옵션으로 num_rx_queues와 num_tx_queues를 설정할 수 있어요. 기본값: 1
예를 들면:
{
"num_queues": 3
}
더 알아보기 (Learn more)
오퍼레이터로 설치했다면 CNI 구성 파일을 직접 건드릴 필요가 없고, 설치 API에서 같은 옵션들을 설정해요. 어노테이션으로 IP 풀과 고정 IP를 다루는 방법은 IPAM 사용 가이드에 더 자세히 정리되어 있어요. host-local IPAM은 특수한 경우에만 쓰인다는 점도 기억해 두세요.