Portmap
Portmap (HostPort)
Kubernetes HostPort 기능을 CNI 체이닝으로 활성화하는 방법을 설명할게요. Cilium 1.8부터는 eBPF 기반 kube-proxy replacement가 HostPort를 기본 지원하므로, 특별한 경우에만 이 방식을 써요.
본문
Cilium 1.8부터 Kubernetes HostPort 기능은 Cilium의 eBPF 기반 kube-proxy replacement를 통해 기본적으로 지원돼요. 따라서 CNI 체이닝은 더 이상 필요하지 않아요. 자세한 내용은 Container HostPort Support 섹션을 참고하세요.
하지만 Cilium이 kubeProxyReplacement=false로 배포된 경우에는, HostPort를 구현하는 portmap 플러그인과의 CNI 체이닝을 통해 HostPort 기능을 활성화할 수 있어요. 이 가이드는 체이닝 경우에 후자를 활성화하는 방법을 설명해요.
Kubernetes HostPort 기능에 대한 더 일반적인 정보는 업스트림 문서를 확인하세요: Kubernetes hostPort-CNI plugin documentation.
참고: HostPort를 사용하기 전에 Kubernetes Configuration Best Practices를 읽어 이 기능의 영향에 대해 이해하세요.
portmap 플러그인을 활성화한 채 Cilium 배포하기
portmap 바이너리를 설치해요. 일부 Kubernetes 배포판이 이를 대신 처리해 주는데, 그 경우에는 아무것도 할 필요 없어요. 하지만 워커 노드에서 portmap을 사용할 수 없다면 /opt/cni/bin/에 설치해야 해요. 바이너리는 CNI 프로젝트 releases 페이지에서 찾을 수 있어요.
Helm 저장소를 설정해요.
Helm Repository
helm repo add cilium https://helm.cilium.io/
Cilium 차트는 OCI 레지스트리(Quay.io 및 Docker Hub)에서도 사용할 수 있어요. 추가 설정 없이 oci:// URL로 직접 설치할 수 있어요. 차트 서명 검증과 digest 기반 설치를 포함한 자세한 내용은 OCI Registry 섹션을 참고하세요.
Helm으로 Cilium 릴리스를 배포해요.
Helm Repository
helm install cilium cilium/cilium --version 1.20.2 \
--namespace kube-system \
--set cni.chainingMode=portmap
OCI Registry
helm install cilium oci://quay.io/cilium/charts/cilium 1.20.2 \
--namespace kube-system \
--set cni.chainingMode=portmap
참고:
cni.chainingMode=portmap옵션은 다른 설치 가이드와 함께 조합할 수 있어요.
Cilium이 DaemonSet으로 배포되면 새 CNI 구성이 작성돼요. 새 구성은 이제 HostPort를 활성화해요. 이후 스케줄링되는 모든 새 파드는 HostPort 기능을 사용할 수 있게 돼요.
기존 파드 재시작하기
새 CNI 체이닝 구성은 이미 클러스터에서 실행 중인 파드에는 적용되지 않아요. 기존 파드는 연결이 가능하고 Cilium이 그쪽으로 로드밸런싱하겠지만, 정책 강제는 적용되지 않고 기존 파드에서 시작되는 트래픽에 대한 로드밸런싱은 수행되지 않아요. 이 파드들에 체이닝 구성을 적용하려면 재시작해야 해요.