Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan EKS Hybrid Nodes gateway
Halaman ini memandu Anda melalui prasyarat, persiapan lingkungan, instalasi, verifikasi, dan penghapusan gateway Amazon EKS Hybrid Nodes. Untuk pengenalan gateway dan arsitekturnya, lihatGerbang Node Hibrida Amazon EKS.
Prasyarat
Sebelum Anda menginstal gateway Hybrid Nodes, konfirmasikan bahwa lingkungan Anda memenuhi persyaratan berikut:
-
Kluster EKS dengan dukungan Cilium CNI dan VTEP — Cluster EKS Anda harus menggunakan versi EKS Cilium sebagai CNI pada node hibrida, dan Cilium VTEP harus diaktifkan. Untuk informasi selengkapnya, lihat Konfigurasikan CNI untuk gateway Hybrid Nodes.
-
AWS VPC CNI pada node cloud — Node gateway dan node cloud lainnya di cluster harus menggunakan AWS VPC CNI. Gateway bergantung pada VPC-native perutean untuk meneruskan lalu lintas antara VPC dan terowongan VXLAN.
-
Konektivitas hibrid — Koneksi pribadi antara VPC Anda dan lingkungan lokal diperlukan. Anda dapat menggunakan AWS Direct Connect, AWS Site-to-Site VPN, atau solusi VPN Anda sendiri. Untuk informasi selengkapnya, lihat Mempersiapkan jaringan untuk node hybrid.
-
Lalu lintas VXLAN diizinkan - Grup keamanan yang terpasang pada instans EC2 gateway harus mengizinkan lalu lintas UDP masuk dan keluar pada port 8472. Di sisi node hybrid, aturan firewall lokal juga harus mengizinkan lalu lintas port UDP 8472 ke dan dari alamat IP node gateway.
-
Izin IAM untuk manajemen tabel rute - Gateway memerlukan tindakan EC2 berikut untuk mengelola tabel rute VPC:
-
ec2:DescribeRouteTables -
ec2:CreateRoute -
ec2:ReplaceRoute -
ec2:DescribeInstancesAnda dapat memberikan izin ini menggunakan salah satu pendekatan berikut:
-
-
Mode Otomatis EKS (jika menggunakan Mode Otomatis untuk node gateway) - Jika Anda berencana menggunakan Mode Otomatis EKS untuk menyediakan node gateway, Mode Otomatis harus diaktifkan di kluster EKS Anda. Untuk informasi selengkapnya, lihat Mengaktifkan Mode Otomatis EKS.
Siapkan node gateway
Gateway membutuhkan setidaknya dua node EC2 untuk ketersediaan tinggi. Ada dua opsi konfigurasi node yang didukung untuk gateway:
-
Mode Otomatis EKS (disarankan)— Node disediakan secara otomatis menggunakan dan.
NodePoolNodeClassSource/destination cek, label, dan taints semuanya dikonfigurasi secara deklaratif. -
Grup simpul terkelola— Anda menyediakan node menggunakan grup node terkelola atau node yang dikelola sendiri. Label dapat dikonfigurasi melalui API grup node terkelola, dan source/destination pemeriksaan dapat dinonaktifkan menggunakan templat peluncuran khusus dengan data pengguna.
Mode Otomatis EKS (disarankan)
Saat menggunakan Mode Otomatis EKS, Anda harus membuat NodePool dan NodeClass sebelum menginstal bagan Helm. NodePool Ketentuan instans EC2 dengan label, taints, dan source/destination konfigurasi cek yang benar. Anda tidak perlu menyediakan atau mengkonfigurasi node secara manual.
Terapkan sumber daya berikut ke cluster Anda, menggantikan nilai placeholder:
-
YOUR_NODE_ROLE— Nama Peran IAM Node yang digunakan oleh EKS Auto Mode untuk menyediakan node. Ini adalah peran yang Anda konfigurasikan (atau yang dibuat EKS) saat Anda mengaktifkan Mode Otomatis di cluster. Untuk informasi selengkapnya, lihat Membuat Peran IAM Node untuk Mode Otomatis EKS. -
YOUR_CLUSTER_NAME— Nama cluster EKS Anda. -
SUBNET_ID_1,SUBNET_ID_2— ID Subnet di Availability Zone yang berbeda di mana node gateway akan disediakan.
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: hybrid-gateway spec: advancedNetworking: sourceDestCheck: DisabledPrimaryENI role:YOUR_NODE_ROLEsecurityGroupSelectorTerms: - tags: aws:eks:cluster-name:YOUR_CLUSTER_NAMEsubnetSelectorTerms: - id:SUBNET_ID_1- id:SUBNET_ID_2--- apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: hybrid-gateway spec: template: metadata: labels: hybrid-gateway-node: "true" spec: expireAfter: 336h nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: hybrid-gateway requirements: - key: karpenter.sh/capacity-type operator: In values: - on-demand - key: eks.amazonaws.com/instance-category operator: In values: - c - m - r - key: eks.amazonaws.com/instance-generation operator: Gt values: - "4" - key: kubernetes.io/arch operator: In values: - amd64 - key: kubernetes.io/os operator: In values: - linux taints: - key: hybrid-gateway-node effect: NoSchedule terminationGracePeriod: 24h0m0s disruption: budgets: - nodes: 10% consolidateAfter: 30s consolidationPolicy: WhenEmptyOrUnderutilized
Bidang kunci dalam konfigurasi ini:
-
advancedNetworking.sourceDestCheck: DisabledPrimaryENI— Menonaktifkan source/destination pemeriksaan EC2 pada ENI primer node sehingga gateway dapat meneruskan lalu lintas yang tidak ditujukan kepada dirinya sendiri. -
taints—hybrid-gateway-node: NoScheduleTaint memastikan hanya pod gateway dengan jadwal toleransi yang cocok pada node ini. -
labels—hybrid-gateway-node: "true"Label digunakan oleh pemilih node bagan Helm untuk menargetkan pod gateway ke node ini. -
nodeClassRef— Tautkan NodePool ke NodeClass dengan konfigurasi source/destination cek.
Grup simpul terkelola
Saat menggunakan grup node terkelola, buat grup node khusus untuk gateway dengan label yang diperlukan, taints, dan templat peluncuran khusus yang menonaktifkan source/destination pemeriksaan saat peluncuran.
Langkah 1: Buat templat peluncuran
Buat template peluncuran dengan data pengguna yang menonaktifkan source/destination pemeriksaan pada ENI utama saat instance melakukan booting:
# Create the launch template with user data to disable source/dest check USERDATA=$(cat <<'SCRIPT' | base64 -w 0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==BOUNDARY==" --==BOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \ -H "X-aws-ec2-metadata-token-ttl-seconds: 60") MAC=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/mac) ENI_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ "http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC}/interface-id") REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/placement/region) aws ec2 modify-network-interface-attribute \ --network-interface-id "$ENI_ID" \ --no-source-dest-check \ --region "$REGION" --==BOUNDARY==-- SCRIPT ) aws ec2 create-launch-template \ --launch-template-nameYOUR_CLUSTER_NAME-gateway-lt \ --launch-template-data "{\"UserData\":\"${USERDATA}\",\"MetadataOptions\":{\"HttpTokens\":\"required\",\"HttpPutResponseHopLimit\":2}}"
catatan
Peran IAM node harus memiliki ec2:ModifyNetworkInterfaceAttribute izin agar skrip data pengguna berhasil. Format multipart MIME memastikan data pengguna berjalan di samping skrip bootstrap EKS.
Langkah 2: Buat grup node terkelola
Buat grup node terkelola khusus dengan label gateway, taint, dan template peluncuran dari Langkah 1:
aws eks create-nodegroup \ --cluster-nameYOUR_CLUSTER_NAME\ --nodegroup-nameYOUR_CLUSTER_NAME-gateway-nodes \ --subnetsSUBNET_ID_1 SUBNET_ID_2\ --node-roleYOUR_NODE_ROLE_ARN\ --instance-typesINSTANCE_TYPE\ --ami-type AL2023_x86_64_STANDARD \ --scaling-config desiredSize=2,maxSize=2,minSize=2 \ --labels hybrid-gateway-node=true \ --taints "key=hybrid-gateway-node,effect=NO_SCHEDULE" \ --launch-template "name=YOUR_CLUSTER_NAME-gateway-lt,version=1"
Ini menciptakan grup node terkelola 2-node di mana:
-
--labelssethybrid-gateway-node=truesehingga pemilih simpul bagan Helm menargetkan node ini. -
--taintsmenambahkanNoScheduletaint sehingga hanya pod gateway dengan jadwal toleransi yang cocok pada node ini. -
--launch-templatemelampirkan template peluncuran yang menonaktifkan source/destination cek saat boot.
Gunakan subnet di Availability Zone yang berbeda untuk ketersediaan tinggi.
Instal dengan Helm
Mode Otomatis EKS
Jalankan perintah berikut untuk menginstal gateway dengan Mode Otomatis EKS:
helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set vpcCIDR=VPC_CIDR\ --set podCIDRs=POD_CIDRS\ --set routeTableIDs=ROUTE_TABLE_IDS
Grup node terkelola atau node yang dikelola sendiri
Untuk grup node terkelola atau node yang dikelola sendiri, setelautoMode.enabled=false:
helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set autoMode.enabled=false \ --set vpcCIDR=VPC_CIDR\ --set podCIDRs=POD_CIDRS\ --set routeTableIDs=ROUTE_TABLE_IDS
Nilai Helm yang Diperlukan
Nilai-nilai berikut diperlukan untuk semua instalasi:
| Nilai | Deskripsi |
|---|---|
|
|
Blok CIDR dari VPC cluster EKS Anda (misalnya |
|
|
Comma-separated daftar CIDR pod yang digunakan oleh Cilium pada node hibrida (misalnya,). |
|
|
Comma-separated daftar ID tabel rute VPC ke program (misalnya, |
Untuk daftar lengkap nilai yang dapat dikonfigurasi, lihatReferensi konfigurasi gateway Amazon EKS Hybrid Nodes.
Verifikasi instalasi.
Setelah menginstal gateway, verifikasi bahwa itu berjalan dan sehat.
Periksa status pod
Konfirmasikan bahwa dua pod gateway sedang berjalan:
kubectl get pods -n eks-hybrid-nodes-gateway
Anda akan melihat output yang mirip dengan:
NAME READY STATUS RESTARTS AGE eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 1/1 Running 0 2m eks-hybrid-nodes-gateway-5d4f6a7b8c-def34 1/1 Running 0 2m
Periksa pemilihan pemimpin
Verifikasi bahwa satu pod telah memperoleh sewa pemilihan pemimpin:
kubectl get lease -n eks-hybrid-nodes-gateway
Output menunjukkan pemimpin saat ini di HOLDER kolom:
NAME HOLDER AGE hybrid-gateway-leader eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 2m
Periksa titik akhir kesehatan
Verifikasi titik akhir kesehatan merespons pada pod pemimpin menggunakan port-forwarding:
kubectl port-forward -n eks-hybrid-nodes-gatewayLEADER_POD_NAME8088:8088 & curl -s http://localhost:8088/healthz
Gateway yang sehat mengembalikan respons HTTP 200.
Verifikasi entri tabel rute VPC
Di konsol VPC Amazon atau menggunakan CLI, AWS konfirmasikan bahwa tabel rute VPC Anda berisi entri untuk CIDR pod hybrid yang menunjuk ke ENI instance gateway pemimpin:
aws ec2 describe-route-tables \ --route-table-idsROUTE_TABLE_ID\ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"
Setiap pod hybrid CIDR harus memiliki rute dengan NetworkInterfaceId set ke ENI utama instance pemimpin.
Hapus instalasi
Untuk menghapus gateway Hybrid Nodes, jalankan:
helm uninstall eks-hybrid-nodes-gateway --namespace eks-hybrid-nodes-gateway
catatan
Menghapus instalasi bagan Helm tidak secara otomatis menghapus entri tabel rute VPC yang dibuat oleh gateway. Setelah menghapus instalasi, hapus rute CIDR pod hybrid Anda secara manual dari tabel rute VPC untuk menghindari perutean lalu lintas ke instance yang tidak lagi menjalankan gateway. Anda dapat menghapus rute menggunakan AWS CLI:
aws ec2 delete-route \ --route-table-idROUTE_TABLE_ID\ --destination-cidr-blockPOD_CIDR
Langkah selanjutnya
-
Referensi konfigurasi gateway Amazon EKS Hybrid Nodes— Sesuaikan nilai Helm, bendera CLI, dan parameter pemilihan pemimpin.
-
Operasi gateway Amazon EKS Hybrid Nodes— Pantau gateway, pahami perilaku failover, dan rencanakan penskalaan.
-
Pemecahan masalah gateway Amazon EKS Hybrid Nodes— Mendiagnosis dan menyelesaikan masalah umum.