네트워크 요구사항
외부 네트워크 요구사항
Anthos clusters on bare metal은 운영을 위해 인터넷 연결이 필요합니다. Anthos clusters on bare metal은 Container Registry에서 클러스터 구성요소를 검색하고 Connect를 통해 클러스터를 등록합니다.
공용 인터넷(HTTPS 사용), 가상 사설망(VPN) 또는 Dedicated Interconnect를 통해 Google에 연결할 수 있습니다.
내부 네트워크 요구사항
Anthos clusters on bare metal은 클러스터 노드 간의 Layer 2 또는 Layer 3 연결로 작동할 수 있으며 부하 분산기 노드가 동일한 Layer 2 도메인에 있어야 합니다. 부하 분산기 노드는 제어 영역 노드 또는 전용 노드 집합이 될 수 있습니다. 구성 정보는 부하 분산기 선택 및 구성을 참조하세요.
Layer 2 네트워크 요구사항은 제어 영역 노드 풀 또는 전용 노드 집합에서 부하 분산기를 실행하는 경우에 적용됩니다.
부하 분산기 머신 요구사항은 다음과 같습니다.
- 특정 클러스터의 모든 부하 분산기는 동일한 Layer 2 도메인에 있습니다.
- 모든 VIP는 부하 분산기 머신 서브넷에 있고 서브넷의 게이트웨이로 라우팅할 수 있어야 합니다,
- 사용자는 인그레스 부하 분산기 트래픽을 허용해야 합니다.
포드 네트워킹
Anthos clusters on bare metal 1.7.0 이상 버전을 사용하면 노드당 최대 250개의 pod를 구성할 수 있습니다. Kubernetes는 각 pod가 고유 IP 주소를 가질 수 있도록 각 노드에 CIDR 블록을 할당합니다. CIDR 블록의 크기는 노드당 최대 pod 수에 해당합니다. 다음 표에는 노드당 구성된 최대 포드를 기준으로 Kubernetes가 각 노드에 할당하는 CIDR 블록의 크기가 나와 있습니다.
노드당 최대 포드 | 노드당 CIDR 블록 | IP 주소 수 |
---|---|---|
32 | /26 | 64 |
33 – 64 | /25 | 128 |
65 – 128 | /24 | 256 |
129 - 250 | /23 | 512 |
노드당 250개 pod를 실행하려면 Kubernetes가 각 노드에 /23 CIDR 블록을 예약해야 합니다. 클러스터의 clusterNetwork.pods.cidrBlocks
가 /16
의 기본값으로 구성되었다고 가정하면 이 클러스터의 한도는 (2(23-16))=128개 노드가 됩니다. 이 한도를 초과하여 클러스터를 확장하려면 clusterNetwork.pods.cidrBlocks
의 값을 늘리거나 nodeConfig.podDensity.maxPodsPerNode
의 값을 낮추면 됩니다.
고가용성을 가진 단일 사용자 클러스터 배포
다음 다이어그램은 단일 네트워크 구성에서 베어메탈용 Anthos 클러스터의 여러 주요 네트워킹 개념을 보여줍니다.
- 제어 영역 노드는 부하 분산기를 실행하며, 모두 같은 Layer 2 네트워크에 있으며, 작업자 노드를 포함한 다른 연결에는 Layer 3 연결만 필요합니다.
- 구성 파일은 워커 노드 풀의 IP 주소를 정의합니다.
구성 파일은 다음과 같은 목적으로 VIP를 정의합니다.
- 서비스
- 인그레스
- Kubernetes API를 통한 제어 영역 액세스
- Google Cloud 연결도 필요합니다,
포트 사용량
이 섹션에서는 클러스터 및 부하 분산기 노드에서 UDP 및 TCP 포트를 사용하는 방법을 보여줍니다.
마스터 노드
프로토콜 | Direction | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
UDP | 수신 | 6081 | GENEVE 캡슐화 | 자체 |
TCP | 수신 | 22 | 관리자 클러스터 노드 프로비저닝 및 업데이트 | 관리자 워크스테이션 |
TCP | 수신 | 6444 | Kubernetes API 서버 | 전체 |
TCP | 수신 | 2379 - 2380 | etcd 서버 클라이언트 API | kube-apiserver, etcd |
TCP | 수신 | 10250 | kubelet API | 자체, 제어 영역 |
TCP | 수신 | 10251 | kube-scheduler | 자체 |
TCP | 수신 | 10252 | kube-controller-manager | 자체 |
TCP | 모두 | 4240 | CNI 상태 확인 | 전체 |
워커 노드
프로토콜 | Direction | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 수신 | 22 | 사용자 클러스터 노드 프로비저닝 및 업데이트 | 관리자 클러스터 노드 |
UDP | 수신 | 6081 | GENEVE 캡슐화 | 자체 |
TCP | 수신 | 10250 | kubelet API | 자체, 제어 영역 |
TCP | 수신 | 30000~32767 | NodePort 서비스 | 자체 |
TCP | 모두 | 4240 | CNI 상태 확인 | 전체 |
부하 분산기 노드
프로토콜 | Direction | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 수신 | 22 | 사용자 클러스터 노드 프로비저닝 및 업데이트 | 관리자 클러스터 노드 |
UDP | 수신 | 6081 | GENEVE 캡슐화 | 자체 |
TCP | 수신 | 443* | 클러스터 관리 | 전체 |
TCP | 모두 | 4240 | CNI 상태 확인 | 전체 |
TCP | 수신 | 7946 | 메탈 LB 상태 확인 | LB 노드 |
UDP | 수신 | 7946 | 메탈 LB 상태 확인 | LB 노드 |
* 이 포트는 controlPlaneLBPort
필드를 사용하여 클러스터 구성 파일에 구성할 수 있습니다.
멀티 클러스터 포트 요구사항
멀티 클러스터 구성에서 추가된 클러스터에 다음 포트가 포함되어야 관리자 클러스터와 통신할 수 있습니다.
프로토콜 | Direction | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 수신 | 22 | 클러스터 노드 프로비저닝 및 업데이트 | 모든 노드 |
TCP | 수신 | 443* | 추가된 클러스터의 Kubernetes API 서버 | 제어 영역, LB 노드 |
* 이 포트는 controlPlaneLBPort
필드를 사용하여 클러스터 구성 파일에 구성할 수 있습니다.
firewalld 포트 구성
Anthos clusters on bare metal 1.7.0부터 Red Hat Enterprise Linux(RHEL) 또는 CentOS에서 Anthos clusters on bare metal를 실행하기 위해 firewalld를 사용 중지할 필요가 없습니다. firewalld를 사용하려면 이 페이지의 포트 사용량에 설명된 대로 마스터, 작업자, 부하 분산기 노드에서 사용하는 UDP 및 TCP 포트를 열어야 합니다. 다음 예시 구성에서는 firewalld 명령줄 클라이언트인 firewall-cmd
를 사용하여 포트를 여는 방법을 보여줍니다.
마스터 노드 예시 구성
다음 명령어 예시 블록에서는 마스터 노드를 실행하는 서버에서 필요한 포트를 여는 방법을 보여줍니다.
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250-10252/tcp
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
PODS_CIDR을 포드에 예약된 CIDR 블록인 clusterNetwork.pods.cidrBlocks
로 바꿉니다. 포드의 기본 CIDR 블록은 192.168.0.0/16
입니다.
워커 노드 예시 구성
다음 명령어 예시 블록에서는 워커 노드를 실행하는 서버에서 필요한 포트를 여는 방법을 보여줍니다.
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
PODS_CIDR을 포드에 예약된 CIDR 블록인 clusterNetwork.pods.cidrBlocks
로 바꿉니다. 포드의 기본 CIDR 블록은 192.168.0.0/16
입니다.
부하 분산기 노드 예시 구성
다음 명령어 예시 블록에서는 부하 분산기 노드를 실행하는 서버에서 필요한 포트를 여는 방법을 보여줍니다.
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reloadfirewall-cmd --reload
PODS_CIDR을 포드에 예약된 CIDR 블록인 clusterNetwork.pods.cidrBlocks
로 바꿉니다. 포드의 기본 CIDR 블록은 192.168.0.0/16
입니다.