사전 준비 → nodeadm → Cilium → 업그레이드 → 트러블슈팅 → 크리덴셜
노드 IAM 역할에 HYBRID_LINUX 타입 access entry를 만듭니다. 일반 SSM 관리 역할만으로는 조인되지 않습니다.
system:node:{{SessionName}} + node-bootstrap 그룹 사용aws-auth ConfigMap은 적용하지 않기클러스터 생성 시 원격 노드/Pod CIDR을 선언합니다. 기존 클러스터에도 remote network 구성을 추가할 수 있습니다.
AmazonEKSWorkerNodeMinimalPolicy만으로는 eks:DescribeCluster 권한이 없습니다. 역할에 직접 추가합니다.
ssm:DeregisterManagedInstance)acceptRoleSessionName: trueeks-auth:AssumeRoleForPodIdentity를 별도로 부여aws/eks-hybrid (EC2용 amazon-eks-ami의 nodeadm과 다름). SSM 신규 설치, 업그레이드는 1.0.19 이상 필요.upgrade --rollback, reset, init --dry-run은 존재하지 않습니다.파일은 root 소유 0600으로 보호하고 활성화 코드를 로그에 남기지 않습니다. 등록 후 Node 이름은 mi-*입니다.
eks:DescribeCluster로 nodeadm이 조회합니다nodeName, certificatePath, privateKeyPath가 추가로 필요nodeName은 인증서 CN과 역할 신뢰 정책 조건에 묶이며 최대 64자.text-accent { color: var(--accent); font-weight: var(--weight-bold); }
.text-warning { color: var(--warning); font-weight: var(--weight-bold); }
.on-surface-muted { color: var(--text-secondary); font-size: var(--fs-card); margin-top: var(--space-2); word-break: keep-all; overflow-wrap: anywhere; }
eks-hybrid-setup bootstrap container, guestinfo.userdata.encoding=base64api-server, CA는 자동 조회되지 않으므로 직접 기입합니다. 이 TOML은 join에 필요한 최소 설정이라 static IP 같은 네트워크 설정은 Bottlerocket 문서로 따로 검증하세요.distro (기본)docker 또는 none, distro는 무효docker 사용 불가hybrid-nodes-template.pkr.hcl, vSphere OVA, QEMU qcow2/rawignoredisk와 clearpart를 같은 디스크로 제한oci://public.ecr.aws/eks/cilium/cilium)| MaskSize | 전체 IPv4 | 사용 가능 (−2 예약) | maxPods 산정 예 |
|---|---|---|---|
| /26 | 64 | 62 | 50 |
| /25 | 128 | 126 | 110 |
| /24 | 256 | 254 | 240 |
clusterPoolIPv4PodCIDRList와 MaskSize를 변경하지 않는다eks.amazonaws.com/compute-type=hybrid 하나뿐. --node-labels로 따로 넣을 필요 없음kubelet.flags의 --node-labels=...Node Allocatable에서 차감하는 예약량입니다. OS, kubelet, 런타임, CNI 사용량을 측정해 정합니다. 위 값은 초기 산정 예입니다.
Hard 임계값은 유예 없이 처리됩니다. evictionHard를 바꾸면 inode 항목까지 전체 의도한 임계값을 명시하세요. 누락한 기본 임계값은 0이 됩니다.
maxPods는 Cilium 노드별 pool 크기(/25 → 사용 가능 126)와 함께 정합니다. 종료 유예 60초에는 critical Pod용 20초가 포함됩니다.
nodeadm upgrade 실행. 중단 작업이며 트랜잭션식 다운그레이드가 아님preflight.enabled=true, agent=false, operator.enabled=false)upgradeCompatibility로 업그레이드, 한 마이너씩마이너 버전 사이에
--reuse-values를 쓰지 않습니다.
nodeadm upgrade --rollback은 없습니다/var/lib/kubelet, /etc/kubernetes 재귀 삭제는 롤백 단계가 아님uninstall은 SSM 등록도 해제하므로 무조건 uninstall/reinstall 반복 금지helm rollback 가능하나 데이터 경로 복구를 보장하지 않음 (CRD 호환성 검토 필요)SELinuxMount가 기본 활성화: SELinux가 켜진 노드(예: RHEL)만 영향seLinuxMount: true이고 Pod에 seLinuxOptions가 있으면 mount -o context=LABEL로 마운트seLinuxChangePolicy, 권한 수준으로 공유하면 뒤에 뜬 Pod가 ContainerCreating에 멈춤seLinuxOptions.level과 seLinuxChangePolicy를 맞추고, privileged와 unprivileged가 섞이면 Recursive로 지정--housekeeping-interval만 예외)eventRecordQPS: 0은 이제 무제한: 이전 동작(초당 5개)을 유지하려면 5로 변경container_cpu_load_average_10s, container_cpu_load_d_average_10s, container_tasks_state → 대시보드, 알람 수정"EKS 최적화 AMI는 영향 없음"은 Hybrid 노드에 해당하지 않습니다. NodeConfig의
kubelet.flags,kubelet.config와 골든 이미지에 넣은 인자를 점검합니다.
--pod-infra-container-image flag 제거, NodeConfig kubelet.flags, 골든 이미지에서 삭제gitRepo volume 비활성, StrictIPCIDRValidation 기본 활성, Service externalIPs deprecated위 항목은 업그레이드 전에 끝낼 일입니다. 노드에서 확인하지 못했다면 새 호스트로 먼저 검증합니다.
--private-mode는 --manifest-override가 필수이며 OS 패키지 설치를 건너뜁니다. containerd, runc, iptables, CA 인증서는 미리 설치해 두세요.
hybrid-assets.eks.amazonaws.com을 Route 53 PHZ에서 S3로 CNAME 해도 투명 미러가 되지 않습니다.
TLS 검사를 끄는 방식으로 해결하지 않습니다. 대신 통제된 프록시, 사전 설치 이미지, 실제 미러 URL의 manifest override 중 선택하세요.
HYBRID_LINUX access entryeks:DescribeCluster 권한 여부nodeadm reset은 없음)curl -k 금지)sudo aws sts get-caller-identity는 kubelet이 쓰는 신원을 증명하지 않음MaxSessionDuration 이하동일 CA에서 leaf만 갱신하면 trust anchor 교체는 보통 불필요합니다. CA rollover는 모든 호스트, profile, role에 영향을 줍니다.
카나리 노드에서 새 자격 증명 발급을 검증한 뒤 마칩니다.
eventRecordQPS: 0의 의미는?