비클러스터 호스트 알아보기
Kubernetes 클러스터 밖의 호스트와 VM에 Calico를 설치하는 방법을 소개해요. 정책만 적용하는 모드와 네트워킹+정책 모드 중 무엇을 고를지 판단하는 기준을 다뤄요. 클러스터에 들어가지 못하는 물리 머신이나 레거시 애플리케이션도 파드와 동일한 Calico 네트워크 정책으로 보호할 수 있다는 점이 핵심이에요.
출처: 문서
본문
큰 그림
네트워킹과/또는 네트워킹 정책용 Calico를 설치해서 비클러스터 호스트와 VM을 보호해요.
이런 점이 좋아요
환경의 모든 호스트가 파드/워크로드를 실행하는 것은 아니에요. Kubernetes 클러스터로 옮길 수 없는 물리 머신이나 레거시 애플리케이션이 있지만, 여전히 클러스터의 파드와 안전하게 통신해야 할 수 있어요. Calico를 사용하면 파드에 쓰는 것과 같은 견고한 Calico 네트워크 정책으로 이런 비클러스터 호스트에 정책을 적용할 수 있어요.
개념
비클러스터 호스트와 호스트 엔드포인트
비클러스터 호스트는 Kubernetes 클러스터에 속하지 않은 애플리케이션을 실행하는 컴퓨터예요. Calico 네트워크 정책을 사용하면 **호스트 엔드포인트(host endpoints)**로 이런 호스트 인터페이스를 보호할 수 있어요. 호스트 엔드포인트는 레이블을 가질 수 있고, 파드/워크로드 엔드포인트의 레이블과 똑같이 동작해요.
장점은 레이블 셀렉터를 사용해 워크로드 엔드포인트와 호스트 엔드포인트 양쪽 모두에 적용되는 네트워크 정책 규칙을 쓸 수 있다는 거예요. 각 셀렉터는 어느 쪽을 참조하거나(또는 둘을 섞거나) 할 수 있어요. 예를 들어 모든 호스트에 즉시 적용되는 비클러스터 호스트용 클러스터 전역 정책을 쓸 수 있어요. Calico 네트워크 정책으로 호스트와 VM 사이의 트래픽을 제한하는 방법은 호스트 보호하기를 참고하세요.
etcd3 데이터베이스를 사용한다면 아래에서 설명하는 대로 네트워킹을 포함해 Calico를 설치할 수도 있어요.
비클러스터 호스트의 설치 옵션
| Calico 설치 방식 | 필요한 것 | 사용 사례 | 지원되는 설치 방법 |
|---|---|---|---|
| 정책만 | etcd3 또는 Kubernetes 데이터스토어 | Calico 네트워크 정책을 사용해 비클러스터 호스트의 방화벽을 제어해요. | 패키지 매니저 유/무 바이너리 설치 |
| 네트워킹과 네트워크 정책 | etcd3 데이터스토어 | 네트워킹 Calico 네트워킹(BGP, 또는 VXLAN/IP-in-IP 오버레이)으로 다음 통신을 처리해요: - pod ↔ pod - pod ↔ host 참고: Calico는 host ↔ host 네트워킹을 처리하지 않아요; 하부 네트워크가 이를 이미 처리하도록 준비되어 있어야 해요. 정책 Calico 네트워크 정책으로 비클러스터 호스트의 방화벽을 제어해요. | Docker 컨테이너 |
시작하기 전에
지원 대상
- 이 릴리스의 모든 플랫폼, 단 Windows는 제외해요
필요 사항
- 비클러스터 호스트가 Calico의 시스템 요구 사항을 충족해야 해요. 패키지 매니저로 설치하고 싶다면 비클러스터 호스트가 Ubuntu나 RedHat에서 파생된 시스템이어야 해요.
- 데이터스토어를 준비해요; Calico가 클러스터에 설치되어 있다면 이미 데이터스토어가 있어요
kubectl또는calicoctl을 설치해요. (kubectl은 Kubernetes 데이터스토어에서만 동작해요.)
다음 단계
설치 방법을 선택하세요.
SECONDARY: 네트워킹과/또는 정책으로 제어하려는 각 비클러스터 호스트에 Calico를 설치해야 해요.
| 설치 방법 | 네트워킹 | 정책 |
|---|---|---|
| Docker 컨테이너 | ✓ | ✓ |
| 패키지 매니저로 바이너리 설치 | ✓ | |
| 패키지 매니저 없이 바이너리 설치 | ✓ |
더 알아보기 (Learn more)
정책만 필요하면 어떤 데이터스토어든 바이너리 설치로 충분하고, 네트워킹까지 필요하면 etcd3 + Docker 컨테이너 조합이 필요해요. 호스트 엔드포인트는 레이블을 지원하므로 파드 정책과 셀렉터를 섞어 쓸 수 있다는 점이 설계의 핵심이에요. host ↔ host 통신은 Calico가 처리하지 않는다는 제약도 기억하세요.