이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
Amazon EKS Hybrid Nodes 게이트웨이 문제 해결
이 페이지에서는 Amazon EKS Hybrid Nodes 게이트웨이와 관련된 일반적인 문제를 진단하고 해결하기 위한 지침을 제공합니다. 각 섹션에서는 증상, 가능한 원인, 진단 단계 및 해결 방법을 설명합니다. 작업에 대한 자세한 내용은 Amazon EKS Hybrid Nodes 게이트웨이 작업 섹션을 참조하세요.
VPC에서 도달할 수 없는 하이브리드 노드의 포드
하이브리드 노드에서 실행되는 포드에 EC2 인스턴스, 로드 밸런서 또는 Kubernetes 컨트롤 플레인과 같은 VPC의 리소스에서 도달할 수 없습니다.
가능한 원인:
-
VPC 라우팅 테이블 항목이 누락되었거나 잘못된 ENI를 가리킵니다.
-
게이트웨이 리더 포드가 실행 중이 아니거나 설정을 완료하지 않았습니다.
-
Cilium VTEP가 하이브리드 노드에서 활성화되거나 구성되지 않았습니다.
-
소스/대상 확인이 게이트웨이 EC2 인스턴스에서 활성화됩니다.
진단 단계:
-
VPC 라우팅 테이블 항목을 확인하세요. 하이브리드 포드 CIDR에 대한 경로가 있으며, 활성 게이트웨이 인스턴스의 프라이머리 ENI를 가리키는지 확인하세요.
aws ec2 describe-route-tables \ --route-table-idsROUTE_TABLE_ID\ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"경로가 누락된 경우 게이트웨이 로그에서 라우팅 테이블 오류가 있는지 확인하세요. 경로가 잘못된 ENI를 가리키는 경우 장애 조치가 성공적으로 완료되지 않았을 수 있습니다.
-
게이트웨이 포드 상태 및 리더 선정을 확인하세요. 두 게이트웨이 포드가 실행 중이고 한 게이트웨이 포드가 리더 리스를 보유하는지 확인하세요.
kubectl get pods -n eks-hybrid-nodes-gateway kubectl get lease -n eks-hybrid-nodes-gateway리스를 보유한 포드가 없는 경우 리더 선정 관련 문제 섹션을 참조하세요.
-
하이브리드 노드에서 Cilium VTEP 구성을 확인하세요.
CiliumVTEPConfig리소스가 있고, 리더의 노드 IP가 포함되어 있는지 확인하세요.kubectl get ciliumvtepconfig hybrid-gateway -o yamlspec.endpoints[0].tunnelEndpoint는 리더 게이트웨이 노드의 IP 주소와 일치해야 합니다. 리소스가 누락되었거나 오래된 IP를 보유하는 경우 게이트웨이에서 리더 설정이 완료되지 않았을 수 있습니다. -
소스/대상 확인을 확인하세요. 게이트웨이 EC2 인스턴스에서 소스/대상 확인이 비활성화되어 있는지 확인하세요.
aws ec2 describe-instance-attribute \ --instance-idGATEWAY_INSTANCE_ID\ --attribute sourceDestChecksourceDestCheck가true이면 비활성화하세요. EKS Hybrid Nodes 게이트웨이 시작하기을(를) 참조하세요.
하이브리드 노드에 대한 웹후크 직접 호출 실패
Kubernetes API 서버가 하이브리드 노드에서 실행되는 웹후크 엔드포인트에 도달할 수 없습니다. 웹후크 승인 요청에서 제한 시간을 초과하거나 연결 오류를 반환합니다.
가능한 원인:
-
게이트웨이가 컨트롤 플레인에서 하이브리드 포드로 트래픽을 라우팅하지 않습니다.
-
CiliumVTEPConfig리소스가 누락되었거나 오래된 엔드포인트 IP를 보유하고 있습니다.
진단 단계:
-
컨트롤 플레인이 게이트웨이 노드 IP에 도달할 수 있는지 확인하세요. 컨트롤 플레인은 트래픽을 VPC 라우팅 테이블로 전송하고, 여기서 이를 게이트웨이의 ENI로 전달합니다. VPC에서 도달할 수 없는 하이브리드 노드의 포드의 단계를 사용하여 VPC 라우팅 테이블 항목이 올바른지 확인하세요.
-
CiliumVTEPConfig 리소스를 확인하세요. 리소스가 존재하고
tunnelEndpoint가 현재 리더의 노드 IP와 일치하는지 확인하세요.kubectl get ciliumvtepconfig hybrid-gateway -o yaml터널 엔드포인트가 오래된 경우(이전 리더를 가리킴) 게이트웨이에서 리더 설정 시퀀스를 완료하지 않았을 수 있습니다.
CiliumVTEPConfig업서트 중에 게이트웨이 로그에 오류가 있는지 확인하세요.
VPC 라우팅 테이블 업데이트 실패
게이트웨이 로그에는 VPC 라우팅 테이블 작업과 관련된 오류가 표시되며, 하이브리드 포드 CIDR에 대한 경로는 생성되거나 업데이트되지 않습니다.
가능한 원인:
-
게이트웨이의 IAM 역할에 필요한 EC2 권한이 없습니다.
-
구성의 라우팅 테이블 ID가 잘못되었거나 라우팅 테이블이 존재하지 않습니다.
-
게이트웨이가 EC2 API 엔드포인트에 도달할 수 없습니다.
진단 단계:
-
IAM 권한을 확인하세요. 게이트웨이에는 다음 IAM 작업이 필요합니다.
-
ec2:DescribeRouteTables -
ec2:CreateRoute -
ec2:ReplaceRoute -
ec2:DescribeInstances게이트웨이 노드의 인스턴스 프로파일 또는 Pod Identity 구성에 연결된 IAM 역할을 확인하세요.
-
-
구성에서 라우팅 테이블 ID를 확인하세요. 게이트웨이 배포에서
ROUTE_TABLE_IDS환경 변수에 유효한 라우팅 테이블 ID가 포함되어 있는지 확인하세요.kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].env}' | jq .VPC에 라우팅 테이블 ID가 있는지 확인하세요.
aws ec2 describe-route-tables --route-table-idsROUTE_TABLE_ID -
게이트웨이 로그에서 라우팅 테이블 오류를 확인하세요. 라우팅 테이블 작업과 관련된 오류 메시지를 찾아보세요.
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD| grep -i "route table"일반적인 오류 메시지로 다음이 포함됩니다.
-
Failed to verify route table access- 게이트웨이가 라우팅 테이블을 설명할 수 없습니다. IAM 권한 및 라우팅 테이블 ID를 확인하세요. -
Failed to update route tables- 게이트웨이에서 경로를 생성하거나 대체할 수 없습니다. IAM 권한을 확인하세요. -
failed to access route table- 라우팅 테이블 ID가 잘못되었거나 IAM 역할에ec2:DescribeRouteTables가 없습니다.
-
게이트웨이 포드가 시작되지 않거나 비정상 상태임
게이트웨이 포드가 CrashLoopBackOff, Error 또는 Pending 상태이거나 상태 엔드포인트에서 오류를 반환합니다.
가능한 원인:
-
필수 환경 변수(
VPC_CIDR,POD_CIDRS,ROUTE_TABLE_IDS)가 설정되지 않았습니다. -
IP 전달이 게이트웨이 노드에서 활성화되지 않았습니다.
-
노드 레이블 또는 비선호도 제약 조건으로 예약되지 않습니다.
진단 단계:
-
포드 로그를 확인하세요. 장애가 발생한 포드의 로그를 보고 오류를 식별하세요.
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD -
필수 환경 변수를 확인하세요. 게이트웨이에
NODE_IP,VPC_CIDR및POD_CIDRS가 필요합니다. 누락된 항목이 있으면 게이트웨이가 즉시 종료됩니다. 포드 사양을 확인하세요.kubectl get pod -n eks-hybrid-nodes-gatewayLEADER_POD-o jsonpath='{.spec.containers[0].env}' | jq .-
NODE_IP는 포드 사양의status.hostIP에서 자동으로 설정됩니다. 비어 있는 경우 포드가 아직 노드에서 예약되지 않았을 수 있습니다. -
VPC_CIDR및POD_CIDRS는 헬름 값에서 가져옵니다. 올바르게 설정되었는지 확인하세요.
-
-
IP 전달을 확인하세요. 게이트웨이는 시작 시 IP 전달이 활성화되었는지 확인하고 활성화되지 않은 경우 종료됩니다. 포드 로그에서 오류 메시지
IP forwarding is not enabled를 찾아보세요. 노드에서 IP 전달을 활성화하세요.# Check current setting cat /proc/sys/net/ipv4/ip_forward # Enable if not set sudo sysctl -w net.ipv4.ip_forward=1영구 설정의 경우 kubelet을 통해 IP 전달을 구성하거나
net.ipv4.ip_forward=1을/etc/sysctl.d/에 추가하세요. -
노드 레이블 및 예약 제약 조건을 확인하세요. 게이트웨이 포드에는
hybrid-gateway-node=true레이블이 있는 노드가 필요합니다. 포드 비선호도는 각 포드가 별도의 노드에서 실행되도록 보장합니다. 포드가Pending인 경우 예약 문제가 있는지 확인하세요.kubectl describe pod -n eks-hybrid-nodes-gatewayLEADER_POD노드 부족, 레이블 누락 또는 비선호도 충돌을 나타내는 이벤트가 있는지 찾아보세요.
리더 선정 관련 문제
게이트웨이 포드가 실행 중이지만 리더 리스를 획득하는 포드가 없거나 리더십 전환이 빈번하게 발생합니다.
가능한 원인:
-
객체 리스에 대한 RBAC 권한이 누락되었습니다.
-
게이트웨이 포드 및 Kubernetes API 서버 간 네트워크 연결은 신뢰할 수 없습니다.
-
리더 선정 파라미터가 잘못 구성되었습니다.
진단 단계:
-
리스 객체를 확인하세요. 리스가 존재하는지 확인하고 현재 보유자를 검사하세요.
kubectl get lease -n eks-hybrid-nodes-gateway hybrid-gateway-leader -o yamlspec.holderIdentity필드는 현재 리더를 표시합니다.spec.renewTime은 리스가 마지막으로 갱신된 시점을 보여줍니다.renewTime이 오래된 경우 리더에서 API 서버에 대한 연결이 끊어졌을 수 있습니다. -
RBAC 권한을 확인하세요. 게이트웨이 서비스 계정에는 게이트웨이 네임스페이스에서 리스 객체를 가져오고 생성하며 업데이트하기 위한 권한이 필요합니다. 역할 및 RoleBinding을 확인하세요.
kubectl get role -n eks-hybrid-nodes-gateway kubectl get rolebinding -n eks-hybrid-nodes-gateway역할에는
coordination.k8s.ioAPI 그룹의leases리소스에 대한get,create및update동사가 포함되어야 합니다. -
포드 로그에서 리스 오류를 확인하세요. 포드 로그에서 리더 선정 오류를 찾아보세요.
kubectl logs -n eks-hybrid-nodes-gatewayLEADER_POD| grep -i "leader\|lease"일반적인 문제:
-
Failed to acquire lease- 포드에서 리스 객체를 생성하거나 업데이트할 수 없습니다. RBAC 권한을 확인하세요. -
Leadership ended메시지 뒤에Leader setup complete가 빈번하게 나오는 경우 - 리더가 리스를 상실한 후 다시 획득하는 것입니다. 포드 및 API 서버 간 네트워크 불안정성을 나타낼 수 있습니다.--leader-election-lease-duration을 늘리는 방법을 고려합니다.
-
-
리더 선정 파라미터를 확인하세요. 구성된 값을 확인하세요.
kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].args}'--leader-election-renew-deadline이--leader-election-lease-duration보다 작아야 합니다. 갱신 기한이 리스 기간을 초과하는 경우 리더는 갱신하기 전에 리스를 잃습니다. 자세한 내용은 리더 선정 조정 섹션을 참조하세요.
일반적인 오류 메시지
다음 표에는 게이트웨이 포드 로그에 표시될 수 있는 오류 메시지와 관련 해결 방법이 나와 있습니다.
| 오류 메시지 | 원인 | 해결 방법 |
|---|---|---|
|
|
커널 파라미터 |
kubelet 구성을 통해 또는 |
|
|
게이트웨이에서 VXLAN 네트워크 인터페이스를 생성할 수 없습니다. 일반적으로 포드에 |
배포 사양에서 |
|
|
게이트웨이에서 시작 시 하나 이상의 VPC 라우팅 테이블을 설명할 수 없습니다. |
IAM 역할에 |
|
|
게이트웨이가 VPC 라우팅 테이블에서 경로를 생성하거나 대체할 수 없습니다. |
IAM 역할에 |
|
|
게이트웨이에서 AWS EC2 클라이언트를 초기화하거나 인스턴스의 프라이머리 ENI를 검색할 수 없습니다. |
IAM 역할에 |
|
|
|
포드 사양에서 |
|
|
|
포드 사양에서 |
|
|
|
설치 중에 |
|
|
|
|
|
|
게이트웨이가 EC2 인스턴스 메타데이터에서 AWS 리전을 검색할 수 없습니다. |
인스턴스 메타데이터 서비스(IMDS)에 액세스할 수 있는지 확인하세요. 또는 |
|
|
게이트웨이가 EC2 인스턴스 메타데이터에서 인스턴스 ID를 검색할 수 없습니다. |
인스턴스 메타데이터 서비스(IMDS)에 액세스할 수 있는지 확인하세요. 또는 |
|
|
하이브리드 노드의 |
하이브리드 노드가 올바르게 등록되었고 Cilium 에이전트가 실행 중인지 확인하세요. 노드의 |
|
|
하이브리드 노드의 |
Cilium IPAM이 하이브리드 노드에서 올바르게 구성되었는지 확인하세요. |
|
|
게이트웨이에서 |
CRD가 클러스터에 설치되어 있고 게이트웨이 서비스 계정에 |
|
|
컨트롤러-런타임 관리자가 초기화되지 않았습니다. |
포드 로그에서 추가 컨텍스트를 확인하세요. 일반적인 원인으로 잘못된 kubeconfig 또는 Kubernetes API 서버에 도달할 수 없는 경우가 포함됩니다. |
|
|
리더 선정 실행 가능 항목을 컨트롤러 관리자에 등록할 수 없습니다. |
일반적으로 내부 오류입니다. 전체 포드 로그에서 추가 컨텍스트를 확인하고 GitHub 리포지토리 |
|
|
CiliumNode 조정자를 컨트롤러 관리자에 등록할 수 없습니다. |
포드 로그에서 추가 컨텍스트를 확인하세요. CiliumNode CRD가 클러스터에 설치되어 있는지 확인하세요. |
|
|
컨트롤러 관리자가 예기치 않게 종료되었습니다. |
포드 로그에서 기본 오류를 확인하세요. 일반적인 원인으로 Kubernetes API 서버에 대한 연결 끊어짐 또는 지표나 상태 프로브 바인드 주소의 포트 충돌이 포함됩니다. |
|
|
게이트웨이에서 시작 확인 검사 중에 특정 VPC 라우팅 테이블을 설명할 수 없습니다. |
IAM 역할에 |
관련 주제
-
Amazon EKS Hybrid Nodes 게이트웨이 - 게이트웨이 아키텍처 및 사용 사례에 대한 개요.
-
EKS Hybrid Nodes 게이트웨이 시작하기 - 사전 조건 및 설치 지침.
-
Amazon EKS Hybrid Nodes 게이트웨이 구성 참조 - 헬름 값, CLI 플래그 및 환경 변수에 대한 전체 참조.
-
Amazon EKS Hybrid Nodes 게이트웨이 작업 - 모니터링, 장애 조치 동작 및 조정 지침.