이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
EKS 클러스터에 Windows 노드 배포
Windows 노드를 배포하기 전에 다음 사항을 고려해야 합니다.
고려 사항
-
HostProcess
포드로 Windows 노드에서 호스트 네트워킹을 사용할 수 있습니다. 자세한 내용은 Kubernetes 설명서의 Create a WindowsHostProcess
Pod를 참조하세요. -
Amazon EKS 클러스터에는 CoreDNS와 같이 Linux에서만 실행되는 코어 시스템 Pods를 실행하기 위한 Linux 또는 Fargate 노드가 하나 이상 있어야 합니다.
-
kubelet
및kube-proxy
이벤트 로그는EKS
Windows 이벤트 로그로 리디렉션되며 200MB 제한으로 설정됩니다. -
Windows 노드에서 실행되는 Pods에 개별 pods에 보안 그룹 할당를 사용할 수 없습니다.
-
Windows 노드에는 사용자 지정 네트워킹을 사용할 수 없습니다.
-
Windows 노드에서는
IPv6
를 사용할 수 없습니다. -
Windows 노드는 노드당 하나의 탄력적 네트워크 인터페이스를 지원합니다. 기본적으로 Windows 노드당 실행할 수 있는 Pods 수는 노드의 인스턴스 유형에 대해 탄력적 네트워크 인터페이스당 사용 가능한 IP 주소 수에서 1을 뺀 값과 같습니다. 자세한 내용은 Amazon EC2 사용 설명서의 IP addresses per network interface per instance type를 참조하세요.
-
Amazon EKS 클러스터에서 로드 밸런서가 있는 단일 서비스는 최대 1,024개의 백엔드 Pods를 지원할 수 있습니다. 각 Pod에는 고유한 IP 주소가 있습니다. OS 빌드 17763.2746
부터 Windows Server 업데이트 후 이전의 64개 Pods 제한이 더 이상 적용되지 않습니다. -
Windows 컨테이너는 Fargate의 Amazon EKS Pods에 대해 지원되지 않습니다.
-
vpc-resource-controller
포드에서 로그를 검색할 수 없습니다. 이전에는 컨트롤러를 데이터 영역에 배포할 때 가능했습니다. -
IPv4
주소가 새 포드에 할당되기 전에 휴지 기간이 있습니다. 이렇게 하면 오래된kube-proxy
규칙으로 인해 동일한IPv4
주소를 사용하는 이전 포드로 트래픽이 흐르는 것을 방지할 수 있습니다. -
컨트롤러의 소스는 GitHub에서 관리됩니다. 컨트롤러에 기여하거나 컨트롤러에 대한 문제를 제기하려면 GitHub의 프로젝트
를 방문하세요. -
Windows 관리형 노드 그룹에 사용자 지정 AMI ID를 지정할 때는 AWS IAM Authenticator 구성 맵에
eks:kube-proxy-windows
를 추가합니다. 자세한 내용은 AMI ID 지정 시 제한과 조건 단원을 참조하십시오. -
사용 가능한 IPv4 주소를 유지하는 것이 서브넷에 중요한 경우 EKS Best Practices Guide - Windows Networking IP Address Management
를 참조하세요.
사전 조건
-
기존 클러스터가 있어야 합니다. 클러스터는 다음 표에 나열된 Kubernetes 버전 및 플랫폼 버전 중 하나를 실행해야 합니다. 나열된 것보다 이후의 모든 Kubernetes 및 플랫폼 버전이 지원됩니다.
Kubernetes 버전 플랫폼 버전 1.31 eks.1 1.30 eks.2 1.29 eks.1 1.28 eks.1 1.27 eks.1 1.26 eks.1 1.25 eks.1 1.24 eks.2 -
CoreDNS를 실행하려면 클러스터에 Linux 노드 또는 Fargate Pod가 1개 이상(최소 2개 권장) 있어야 합니다. 레거시 Windows 지원을 사용 설정하는 경우 Linux 노드(Fargate Pod 사용 불가)를 사용하여 CoreDNS를 실행해야 합니다.
-
기존 Amazon EKS 클러스터 IAM 역할 보유.
Windows 지원 활성화
클러스터에 Windows 지원을 사용하려면 다음을 수행합니다.
-
클러스터에 Amazon Linux 노드가 없고 Pods에 보안 그룹을 사용하는 경우 다음 단계로 건너뜁니다. 그렇지 않으면
AmazonEKSVPCResourceController
관리형 정책이 클러스터 역할에 연결되어 있는지 확인합니다.
를 클러스터 역할 이름으로 교체합니다.eksClusterRole
aws iam list-attached-role-policies --role-name
eksClusterRole
예제 출력은 다음과 같습니다.
{ "AttachedPolicies": [ { "PolicyName": "AmazonEKSClusterPolicy", "PolicyArn": "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" }, { "PolicyName": "AmazonEKSVPCResourceController", "PolicyArn": "arn:aws:iam::aws:policy/AmazonEKSVPCResourceController" } ] }
이전 출력에서와 같이 정책이 연결된 경우 다음 단계를 건너뜁니다.
-
AmazonEKSVPCResourceController 관리형 정책을 Amazon EKS 클러스터 IAM 역할에 연결합니다.
를 클러스터 역할 이름으로 교체합니다.eksClusterRole
aws iam attach-role-policy \ --role-name
eksClusterRole
\ --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController -
다음 콘텐츠를 가진
이라는 파일을 생성합니다:vpc-resource-controller-configmap.yaml
apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-windows-ipam: "true"
-
클러스터에
ConfigMap
적용.kubectl apply -f
vpc-resource-controller-configmap.yaml
-
aws-auth
ConfigMap
에 Windows 노드의 인스턴스 역할에 대한 매핑이 포함되어eks:kube-proxy-windows
RBAC 권한 그룹을 포함하는지 확인합니다. 다음 명령을 실행하여 확인할 수 있습니다.kubectl get configmap aws-auth -n kube-system -o yaml
예제 출력은 다음과 같습니다.
apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows # This group is required for Windows DNS resolution to work rolearn: arn:aws:iam::
111122223333
:role/eksNodeRole
username: system:node:{{EC2PrivateDNSName}} [...]그룹 아래에
eks:kube-proxy-windows
가 표시될 것입니다. 그룹이 지정되지 않은 경우ConfigMap
을 업데이트하거나 생성하여 필수 그룹을 포함해야 합니다.aws-auth
ConfigMap
에 대한 자세한 내용은 클러스터에 aws-authConfigMap 적용 섹션을 참조하세요.
Windows 포드 배포
클러스터에 포드를 배포할 때 노드 유형을 혼합하여 실행하는 경우 사용되는 운영 체제를 지정해야 합니다.
Linux Pods의 경우 매니페스트에서 다음 노드 선택기 텍스트를 사용합니다.
nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64
Windows Pods의 경우 매니페스트에서 다음 노드 셀렉터 텍스트를 사용합니다.
nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64
샘플 애플리케이션을 배포하여 사용 중인 노드 셀렉터를 볼 수 있습니다.
Windows 노드에서 더 높은 Pod 밀도 지원
Amazon EKS에서 각 Pod에는 VPC의 IPv4
주소가 할당됩니다. 이로 인해 노드에서 더 많은 Pods를 실행하기에 충분한 리소스가 있더라도 노드에 배포할 수 있는 Pods 수는 사용 가능한 IP 주소에 의해 제한됩니다. Windows 노드에서는 탄력적 네트워크 인터페이스를 하나만 지원하므로 기본적으로 Windows 노드에서 사용 가능한 최대 IP 주소 수는 다음과 같습니다.
Number of private IPv4
addresses for each interface on the node - 1
하나의 IP 주소는 네트워크 인터페이스의 기본 IP 주소로 사용되므로 Pods에 할당할 수 없습니다.
IP 접두사 위임을 활성화하여 Windows 노드에서 더 높은 Pod 밀도를 활성화할 수 있습니다. 이 기능을 사용하면 보조 IPv4
주소를 할당하는 대신 기본 네트워크 인터페이스에 /28
IPv4
접두사를 할당할 수 있습니다. IP 접두사를 할당하면 노드에서 사용 가능한 최대 IPv4
주소가 다음으로 증가합니다.
(Number of private IPv4
addresses assigned to the interface attached to the node - 1) * 16
이렇게 사용 가능한 IP 주소의 수가 상당히 많기 때문에 사용 가능한 IP 주소가 노드의 Pods 수를 확장하는 기능을 제한하지는 않습니다. 자세한 내용은 접두사를 사용하여 Amazon EKS 노드에 추가 IP 주소 할당 단원을 참조하십시오.