기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
VPC 구성
클러스터 전용 VPC
기본적으로 eksctl create cluster는 클러스터에 대한 전용 VPC를 생성합니다. 이는 보안을 비롯한 다양한 이유로 기존 리소스에 대한 간섭을 방지하기 위한 것일 뿐만 아니라 기존 VPC의 모든 설정을 감지하기 어렵기 때문입니다.
-
에서 사용하는 기본 VPC CIDR은
eksctl입니다192.168.0.0/16.-
(
/19) 서브넷 8개(프라이빗 3개, 퍼블릭 3개, 예약 2개)로 나뉩니다.
-
-
초기 노드 그룹은 퍼블릭 서브넷에 생성됩니다.
-
를 지정하지 않으면 SSH 액세스가 비활성화
--allow-ssh됩니다. -
노드 그룹은 기본적으로 포트 1025~65535에서 컨트롤 플레인 보안 그룹의 인바운드 트래픽을 허용합니다.
참고
us-east-1 eksctl에서는 기본적으로 퍼블릭 서브넷 2개와 프라이빗 서브넷 2개만 생성합니다.
VPC CIDR 변경
다른 VPC와의 피어링을 설정해야 하거나 단순히 더 크거나 더 작은 범위의 IPs 필요한 경우 --vpc-cidr 플래그를 사용하여 변경할 수 있습니다. AWS VPC에서 사용할 수 있는 CIDR 블록 선택에 대한 지침은 AWS 문서를 참조하세요.
IPv6 클러스터를 생성하는 경우 cluser 구성 파일VPC.IPv6Cidr에서를 구성할 수 있습니다. 이 설정은 CLI 플래그가 아닌 구성 파일에만 있습니다.
IPv6 IP 주소 블록을 소유한 경우 자체 IPv6 풀을 가져올 수도 있습니다. 자체 풀을 가져오는 방법은 Amazon EC2로 자체 IP 주소 가져오기(BYOIP)를 참조하세요. 그런 다음 cluser config 파일의 VPC.IPv6Cidr를 사용하여 Eksctl을 구성합니다.
기존 VPC 사용: kops와 공유
kops
kops로 클러스터를 이전에 생성한 경우, 예를 들어 다음과 유사한 명령을 사용합니다.
export KOPS_STATE_STORE=s3://kops kops create cluster cluster-1.k8s.local --zones=us-west-2c,us-west-2b,us-west-2a --networking=weave --yes
동일한 VPC 서브넷을 사용하여 동일한 AZs에 EKS 클러스터를 생성할 수 있습니다(참고: 최소 2AZs/서브넷 필요).
eksctl create cluster --name=cluster-2 --region=us-west-2 --vpc-from-kops-cluster=cluster-1.k8s.local
기존 VPC 사용: 기타 사용자 지정 구성
eksctl는 사용자 지정 VPC 및 서브넷 토폴로지에 대한 일부 유연성을 제공하지만 완전하지는 않습니다.
--vpc-private-subnets 및 --vpc-public-subnets 플래그를 사용하여 프라이빗 및/또는 퍼블릭 서브넷을 제공하여 기존 VPC를 사용할 수 있습니다. 구성이 다르기 때문에 서브넷이 실제로 프라이빗인지 퍼블릭인지 확인하는 간단한 방법이 없기 때문에 사용하는 서브넷이 올바르게 분류되었는지 확인하는 것은 사용자의 몫입니다.
이러한 플래그가 주어지면 eksctl create cluster는 VPC ID를 자동으로 결정하지만 인터넷/NAT 게이트웨이와 같은 라우팅 테이블이나 기타 리소스는 생성하지 않습니다. 그러나 초기 노드 그룹 및 컨트롤 플레인에 대한 전용 보안 그룹을 생성합니다.
서로 다른 AZs에 최소 2개의 서브넷을 제공해야 하며이 조건은 EKS에서 확인합니다. 기존 VPC를 사용하는 경우 EKS 또는 Eksctl에서 다음 요구 사항을 적용하거나 확인하지 않으며 EKS는 클러스터를 생성합니다. 클러스터의 일부 기본 함수는 이러한 요구 사항 없이 작동합니다. (예를 들어, 태그 지정이 반드시 필요한 것은 아니며, 테스트 결과 서브넷에 태그가 설정되지 않은 상태에서 기능 클러스터를 생성할 수 있는 것으로 나타났습니다. 하지만 항상 이를 유지하고 태그를 지정하는 것은 권장되지 않습니다.)
표준 요구 사항:
-
지정된 모든 서브넷은 동일한 VPC, 동일한 IPs
-
필요에 따라 충분한 수의 IP 주소를 사용할 수 있음
-
필요에 따라 충분한 수의 서브넷(최소 2개)
-
서브넷에는 최소한 다음 태그가 지정됩니다.
-
kubernetes.io/cluster/<name>shared또는 중 하나로 설정된 태그owned -
kubernetes.io/role/internal-elb프라이빗 서브넷에1대해 로 설정된 태그 -
kubernetes.io/role/elb퍼블릭 서브넷에1대해 로 설정된 태그
-
-
올바르게 구성된 인터넷 및/또는 NAT 게이트웨이
-
라우팅 테이블에 올바른 항목이 있고 네트워크가 작동함
-
신규: 모든 퍼블릭 서브넷에는 속성이
MapPublicIpOnLaunch활성화되어 있어야 합니다(예: AWS 콘솔Auto-assign public IPv4 address에서). 관리형 노드 그룹과 Fargate는 퍼블릭 IPv4 주소를 할당하지 않으므로 속성을 서브넷에 설정해야 합니다.
EKS 또는 Kubernetes에서 부과하는 다른 요구 사항이 있을 수 있으며, 모든 요구 사항 및/또는 권장 사항을 up-to-date 상태로 유지하고 필요에 따라/가능한 경우 이를 구현하는 것은 전적으로 사용자의 몫입니다.
에서 적용되는 기본 보안 그룹 설정은 다른 보안 그룹의 리소스와 액세스를 공유하는 데 충분하지 eksctl 않거나 충분하지 않을 수 있습니다. 보안 그룹의 수신/송신 규칙을 수정하려면 다른 도구를 사용하여 변경을 자동화하거나 EC2 콘솔을 통해 변경해야 할 수 있습니다.
의심스러운 경우 사용자 지정 VPC를 사용하지 마십시오. --vpc-* 플래그 eksctl create cluster 없이를 사용하면 항상 완전한 기능을 갖춘 전용 VPC로 클러스터가 구성됩니다.
예시
프라이빗 서브넷 2개와 퍼블릭 서브넷 2개가 있는 사용자 지정 VPC를 사용하여 클러스터를 생성합니다.
eksctl create cluster \ --vpc-private-subnets=subnet-0ff156e0c4a6d300c,subnet-0426fb4a607393184 \ --vpc-public-subnets=subnet-0153e560b3129a696,subnet-009fa0199ec203c37
또는 다음과 같은 동등한 구성 파일을 사용합니다.
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: private: us-west-2a: id: "subnet-0ff156e0c4a6d300c" us-west-2c: id: "subnet-0426fb4a607393184" public: us-west-2a: id: "subnet-0153e560b3129a696" us-west-2c: id: "subnet-009fa0199ec203c37" nodeGroups: - name: ng-1
3x 프라이빗 서브넷이 있는 사용자 지정 VPC를 사용하여 클러스터를 생성하고 초기 노드 그룹이 해당 서브넷을 사용하도록 합니다.
eksctl create cluster \ --vpc-private-subnets=subnet-0ff156e0c4a6d300c,subnet-0549cdab573695c03,subnet-0426fb4a607393184 \ --node-private-networking
또는 다음과 같은 동등한 구성 파일을 사용합니다.
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: private: us-west-2d: id: "subnet-0ff156e0c4a6d300c" us-west-2c: id: "subnet-0549cdab573695c03" us-west-2a: id: "subnet-0426fb4a607393184" nodeGroups: - name: ng-1 privateNetworking: true
사용자 지정 VPC 4x 퍼블릭 서브넷을 사용하여 클러스터를 생성합니다.
eksctl create cluster \ --vpc-public-subnets=subnet-0153e560b3129a696,subnet-0cc9c5aebe75083fd,subnet-009fa0199ec203c37,subnet-018fa0176ba320e45
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: public: us-west-2d: id: "subnet-0153e560b3129a696" us-west-2c: id: "subnet-0cc9c5aebe75083fd" us-west-2a: id: "subnet-009fa0199ec203c37" us-west-2b: id: "subnet-018fa0176ba320e45" nodeGroups: - name: ng-1
리포지토리의 examples 폴더에서 더 많은 예제를 찾을 수 있습니다.
사용자 지정 공유 노드 보안 그룹
eksctl는 비관리형 노드와 클러스터 컨트롤 플레인 및 관리형 노드 간의 통신을 허용하는 공유 노드 보안 그룹을 생성하고 관리합니다.
대신 사용자 지정 보안 그룹을 제공하려는 경우 구성 파일의 sharedNodeSecurityGroup 필드를 재정의할 수 있습니다.
vpc: sharedNodeSecurityGroup: sg-0123456789
기본적으로 클러스터를 생성할 때 eksctl는 EKS가 생성하는 기본 클러스터 보안 그룹과의 통신을 허용하는 규칙을이 보안 그룹에 추가합니다. 기본 클러스터 보안 그룹은 EKS 컨트롤 플레인과 관리형 노드 그룹 모두에서 사용됩니다.
보안 그룹 규칙을 직접 관리하려는 경우 구성 파일false에서를 manageSharedNodeSecurityGroupRules로 설정하여 eksctl가 규칙을 생성하지 못하도록 할 수 있습니다.
vpc: sharedNodeSecurityGroup: sg-0123456789 manageSharedNodeSecurityGroupRules: false
NAT 게이트웨이
클러스터의 NAT 게이트웨이는 Disable, Single (기본값) 또는 로 구성할 수 있습니다HighlyAvailable. HighlyAvailable 옵션은 리전의 각 가용 영역에 NAT 게이트웨이를 배포하므로 AZ가 다운된 경우에도 다른 AZs의 노드는 인터넷과 통신할 수 있습니다.
CLI --vpc-nat-mode 플래그를 통해 지정하거나 아래 예제와 같이 클러스터 구성 파일에서 지정할 수 있습니다.
vpc: nat: gateway: HighlyAvailable # other options: Disable, Single (default)
여기에서 전체 예제를 참조하세요
참고
NAT 게이트웨이 지정은 클러스터 생성 중에만 지원됩니다. 클러스터 업그레이드 중에는 접촉되지 않습니다.