View a markdown version of this page

Pemecahan masalah gateway Amazon EKS Hybrid Nodes - Amazon EKS

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.

Pemecahan masalah gateway Amazon EKS Hybrid Nodes

Halaman ini memberikan panduan untuk mendiagnosis dan menyelesaikan masalah umum dengan gateway Amazon EKS Hybrid Nodes. Setiap bagian menjelaskan gejala, kemungkinan penyebab, langkah diagnostik, dan resolusi. Untuk detail operasional, lihatOperasi gateway Amazon EKS Hybrid Nodes.

Pod pada node hybrid tidak dapat dijangkau dari VPC

Pod yang berjalan pada node hybrid tidak dapat dijangkau dari sumber daya di VPC, seperti instans EC2, load balancer, atau control plane Kubernetes.

Kemungkinan penyebabnya:

  • Entri tabel rute VPC hilang atau mengarah ke ENI yang salah.

  • Pod pemimpin gateway tidak berjalan atau belum menyelesaikan penyiapan.

  • Cilium VTEP tidak diaktifkan atau dikonfigurasi pada node hybrid.

  • Source/destination cek diaktifkan pada instance gateway EC2.

Langkah-langkah diagnostik:

  1. Periksa entri tabel rute VPC. Verifikasi bahwa rute untuk CIDR pod hybrid Anda ada dan arahkan ke ENI utama instans gateway aktif:

    aws ec2 describe-route-tables \ --route-table-ids ROUTE_TABLE_ID \ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"

    Jika rute tidak ada, periksa log gateway untuk kesalahan tabel rute. Jika rute menunjuk ke ENI yang salah, failover mungkin tidak berhasil diselesaikan.

  2. Periksa status pod gateway dan pemilihan pemimpin. Konfirmasikan bahwa dua pod gateway sedang berjalan dan satu memegang lease pemimpin:

    kubectl get pods -n eks-hybrid-nodes-gateway kubectl get lease -n eks-hybrid-nodes-gateway

    Jika tidak ada pod yang memegang sewa, lihatMasalah pemilihan pemimpin.

  3. Periksa konfigurasi Cilium VTEP pada node hybrid. Verifikasi bahwa CiliumVTEPConfig sumber daya ada dan berisi IP node pemimpin:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    spec.endpoints[0].tunnelEndpointHarus cocok dengan alamat IP node gateway pemimpin. Jika sumber daya hilang atau memiliki IP basi, gateway mungkin belum menyelesaikan pengaturan pemimpin.

  4. Periksa source/destination cek. Verifikasi bahwa source/destination pemeriksaan dinonaktifkan pada instance EC2 gateway:

    aws ec2 describe-instance-attribute \ --instance-id GATEWAY_INSTANCE_ID \ --attribute sourceDestCheck

    Jika sourceDestCheck yatrue, nonaktifkan. Lihat Memulai dengan EKS Hybrid Nodes gateway.

Panggilan Webhook ke node hybrid gagal

Server API Kubernetes tidak dapat mencapai titik akhir webhook yang berjalan pada node hybrid. Penerimaan Webhook meminta waktu habis atau mengembalikan kesalahan koneksi.

Kemungkinan penyebabnya:

  • Gateway tidak merutekan lalu lintas dari bidang kontrol ke pod hybrid.

  • Sumber CiliumVTEPConfig daya hilang atau memiliki IP endpoint basi.

Langkah-langkah diagnostik:

  1. Verifikasi bidang kontrol dapat mencapai IP node gateway. Pesawat kontrol mengirimkan lalu lintas ke tabel rute VPC, yang meneruskannya ke ENI gateway. Konfirmasikan entri tabel rute VPC sudah benar menggunakan langkah-langkah di. Pod pada node hybrid tidak dapat dijangkau dari VPC

  2. Periksa sumber daya CiliumVtepConfig. Verifikasi sumber daya yang ada dan tunnelEndpoint cocok dengan IP node pemimpin saat ini:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Jika titik akhir terowongan sudah basi (menunjuk ke pemimpin sebelumnya), gateway mungkin belum menyelesaikan urutan penyiapan pemimpin. Periksa log gateway untuk kesalahan selama CiliumVTEPConfig upsert.

Pembaruan tabel rute VPC gagal

Log gateway menunjukkan kesalahan yang terkait dengan operasi tabel rute VPC, dan rute untuk CIDR pod hybrid tidak dibuat atau diperbarui.

Kemungkinan penyebabnya:

  • Peran IAM gateway tidak memiliki izin EC2 yang diperlukan.

  • ID tabel rute dalam konfigurasi salah atau tabel rute tidak ada.

  • Gateway tidak dapat mencapai titik akhir API EC2.

Langkah-langkah diagnostik:

  1. Verifikasi izin IAM. Gateway memerlukan tindakan IAM berikut:

    • ec2:DescribeRouteTables

    • ec2:CreateRoute

    • ec2:ReplaceRoute

    • ec2:DescribeInstances

      Periksa peran IAM yang dilampirkan ke profil instance node gateway atau konfigurasi identitas pod.

  2. Periksa ID tabel rute dalam konfigurasi. Verifikasi bahwa variabel ROUTE_TABLE_IDS lingkungan berisi ID tabel rute yang valid dalam penerapan gateway:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].env}' | jq .

    Konfirmasikan ID tabel rute yang ada di VPC Anda:

    aws ec2 describe-route-tables --route-table-ids ROUTE_TABLE_ID
  3. Periksa log gateway untuk kesalahan tabel rute. Cari pesan kesalahan yang terkait dengan operasi tabel rute:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "route table"

    Pesan kesalahan umum meliputi:

    • Failed to verify route table access— Gateway tidak dapat menggambarkan tabel rute. Periksa izin IAM dan ID tabel rute.

    • Failed to update route tables— Gateway tidak dapat membuat atau mengganti rute. Periksa izin IAM.

    • failed to access route table— ID tabel rute mungkin salah atau peran ec2:DescribeRouteTables IAM tidak ada.

Pod gateway gagal memulai atau tidak sehat

Pod gateway berada dalam CrashLoopBackOffError,, atau Pending status, atau titik akhir kesehatan mengembalikan kesalahan.

Kemungkinan penyebabnya:

  • Variabel lingkungan yang diperlukan (VPC_CIDRPOD_CIDRS,,ROUTE_TABLE_IDS) tidak diatur.

  • Penerusan IP tidak diaktifkan pada node gateway.

  • Label node atau kendala anti-afinitas mencegah penjadwalan.

Langkah-langkah diagnostik:

  1. Periksa log pod. Lihat log untuk pod yang gagal untuk mengidentifikasi kesalahan:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD
  2. Periksa variabel lingkungan yang diperlukan. Gateway membutuhkanNODE_IP,VPC_CIDR, danPOD_CIDRS. Jika ada yang hilang, gateway segera keluar. Verifikasi spesifikasi pod:

    kubectl get pod -n eks-hybrid-nodes-gateway LEADER_POD -o jsonpath='{.spec.containers[0].env}' | jq .
    • NODE_IPdiatur secara otomatis dari status.hostIP dalam spesifikasi pod. Jika kosong, pod mungkin belum dijadwalkan pada node.

    • VPC_CIDRdan POD_CIDRS berasal dari nilai-nilai Helm. Pastikan mereka diatur dengan benar.

  3. Periksa penerusan IP. Gateway memeriksa bahwa penerusan IP diaktifkan saat startup dan keluar jika tidak. Cari pesan kesalahan IP forwarding is not enabled di log pod. Aktifkan penerusan IP pada node:

    # Check current setting cat /proc/sys/net/ipv4/ip_forward # Enable if not set sudo sysctl -w net.ipv4.ip_forward=1

    Untuk pengaturan persisten, konfigurasikan penerusan IP melalui kubelet atau tambahkan ke. net.ipv4.ip_forward=1 /etc/sysctl.d/

  4. Periksa label node dan batasan penjadwalan. Pod gateway membutuhkan node dengan hybrid-gateway-node=true label. Anti-afinitas Pod memastikan setiap pod berjalan pada node yang terpisah. Jika pod adaPending, periksa masalah penjadwalan:

    kubectl describe pod -n eks-hybrid-nodes-gateway LEADER_POD

    Cari peristiwa yang menunjukkan node yang tidak mencukupi, label yang hilang, atau konflik anti-afinitas.

Masalah pemilihan pemimpin

Pod gateway berjalan tetapi tidak ada pod yang memperoleh sewa pemimpin, atau transisi kepemimpinan sering terjadi.

Kemungkinan penyebabnya:

  • Izin RBAC untuk objek Sewa tidak ada.

  • Konektivitas jaringan antara pod gateway dan server API Kubernetes tidak dapat diandalkan.

  • Parameter pemilihan pemimpin salah dikonfigurasi.

Langkah-langkah diagnostik:

  1. Periksa objek Sewa. Verifikasi bahwa Sewa ada dan periksa pemegangnya saat ini:

    kubectl get lease -n eks-hybrid-nodes-gateway hybrid-gateway-leader -o yaml

    spec.holderIdentityBidang menunjukkan pemimpin saat ini. spec.renewTimePertunjukan kapan sewa terakhir diperpanjang. Jika renewTime basi, pemimpin mungkin kehilangan konektivitas ke server API.

  2. Periksa izin RBAC. Akun layanan gateway memerlukan izin untuk mendapatkan, membuat, dan memperbarui objek Lease di namespace gateway. Verifikasi Peran dan RoleBinding:

    kubectl get role -n eks-hybrid-nodes-gateway kubectl get rolebinding -n eks-hybrid-nodes-gateway

    Peran harus menyertakanget,create, dan update kata kerja untuk leases sumber daya dalam grup coordination.k8s.io API.

  3. Periksa log pod untuk kesalahan sewa. Cari kesalahan pemilihan pemimpin di log pod:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "leader\|lease"

    Masalah umum meliputi:

    • Failed to acquire lease— Pod tidak dapat membuat atau memperbarui objek Lease. Periksa izin RBAC.

    • Sering Leadership ended diikuti oleh Leader setup complete pesan — Pemimpin kehilangan dan mendapatkan kembali sewa. Ini mungkin menunjukkan ketidakstabilan jaringan antara pod dan server API. Pertimbangkan untuk meningkatkan--leader-election-lease-duration.

  4. Periksa parameter pemilihan pemimpin. Verifikasi nilai yang dikonfigurasi:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].args}'

    Pastikan --leader-election-renew-deadline kurang dari--leader-election-lease-duration. Jika batas waktu perpanjangan melebihi durasi sewa, pemimpin kehilangan sewa sebelum dapat diperpanjang. Untuk informasi selengkapnya, lihat Penyetelan pemilihan pemimpin.

Pesan kesalahan umum

Tabel berikut mencantumkan pesan kesalahan yang mungkin Anda lihat di log pod gateway dan resolusinya.

Pesan kesalahan Penyebab Resolusi

IP forwarding is not enabled

Parameter kernel net.ipv4.ip_forward tidak diatur ke 1 pada node gateway.

Aktifkan penerusan IP melalui konfigurasi kubelet atau dengan menjalankan. sysctl -w net.ipv4.ip_forward=1

Failed to setup VXLAN

Gateway tidak dapat membuat antarmuka jaringan VXLAN. Ini biasanya terjadi ketika pod tidak memiliki NET_ADMIN kemampuan.

Verifikasi spesifikasi Deployment termasuk NET_ADMIN dalam. securityContext.capabilities.add Periksa apakah bagan Helm digunakan dengan benar.

Failed to verify route table access

Gateway tidak dapat menjelaskan satu atau lebih tabel rute VPC saat startup.

Verifikasi peran IAM memiliki ec2:DescribeRouteTables izin dan ID tabel rute dalam konfigurasi sudah benar.

Failed to update route tables

Gateway tidak dapat membuat atau mengganti rute dalam tabel rute VPC.

Verifikasi peran IAM ec2:CreateRoute dan ec2:ReplaceRoute izin.

Failed to create route table manager

Gateway tidak dapat menginisialisasi klien AWS EC2 atau mengambil ENI utama instans.

Verifikasi peran IAM memiliki ec2:DescribeInstances izin dan layanan metadata instance (IMDS) dapat diakses.

NODE_IP is required

Variabel NODE_IP lingkungan atau --node-ip bendera tidak disetel.

Verifikasi set spesifikasi pod NODE_IP dari status.hostIP menggunakan afieldRef. Periksa apakah bagan Helm digunakan dengan benar.

Invalid NODE_IP

Nilai yang diberikan NODE_IP bukan alamat IP yang valid.

Periksa nilai variabel NODE_IP lingkungan dalam spesifikasi pod.

pod-cidrs and vpc-cidr are required

Variabel POD_CIDRS atau VPC_CIDR lingkungan kosong.

Atur nilai podCIDRs dan vpcCIDR Helm selama instalasi.

No valid route table IDs provided

ROUTE_TABLE_IDSNilai telah ditetapkan tetapi tidak berisi ID tabel rute yang valid setelah penguraian.

Periksa nilai routeTableIDs Helm untuk kesalahan pemformatan. ID tabel rute harus dipisahkan koma (misalnya,rtb-abc123,rtb-def456).

Failed to auto-detect AWS region

Gateway tidak dapat mengambil AWS Region dari metadata instans EC2.

Verifikasi layanan metadata instance (IMDS) dapat diakses. Atau, atur --aws-region flag atau variabel AWS_REGION lingkungan secara eksplisit.

Failed to auto-detect AWS instance ID

Gateway tidak dapat mengambil ID instance dari metadata instans EC2.

Verifikasi layanan metadata instance (IMDS) dapat diakses. Atau, atur --aws-instance-id flag atau variabel AWS_INSTANCE_ID lingkungan secara eksplisit.

CiliumNode has no internal IP

CiliumNodeObjek hybrid node tidak memiliki alamat IP internal dalam spesifikasinya.

Verifikasi node hybrid terdaftar dengan benar dan agen Cilium sedang berjalan. Periksa CiliumNode sumber daya untuk node.

CiliumNode <name> has no pod CIDRs allocated

CiliumNodeObjek node hybrid tidak memiliki pod CIDR yang dialokasikan oleh Cilium IPAM.

Verifikasi Cilium IPAM dikonfigurasi dengan benar pada node hybrid. Periksa CiliumNode sumber daya untuk status IPAM node.

Failed to upsert CiliumVTEPConfig

Gateway tidak dapat membuat atau memperbarui sumber daya CiliumVTEPConfig kustom.

Verifikasi CRD diinstal di cluster dan akun layanan gateway memiliki izin untuk mengelola CiliumVTEPConfig sumber daya.

Unable to create manager

Manajer controller-runtime gagal menginisialisasi.

Periksa log pod untuk konteks tambahan. Penyebab umum termasuk kubeconfig yang tidak valid atau ketidakmampuan untuk mencapai server API Kubernetes.

Failed to add gateway setup

Runnable yang dipilih pemimpin tidak dapat didaftarkan dengan manajer pengontrol.

Ini biasanya kesalahan internal. Periksa log pod lengkap untuk konteks tambahan dan laporkan masalah di GitHub repositori.

Unable to create Node controller

CiliumNode Rekonsiler tidak dapat didaftarkan pada manajer pengontrol.

Periksa log pod untuk konteks tambahan. Verifikasi bahwa CiliumNode CRD diinstal di cluster.

Problem running manager

Manajer pengontrol keluar secara tak terduga.

Periksa log pod untuk kesalahan yang mendasarinya. Penyebab umum termasuk hilangnya konektivitas ke server API Kubernetes atau konflik port pada metrik atau alamat pengikat probe kesehatan.

failed to access route table <id>

Gateway tidak dapat menjelaskan tabel rute VPC tertentu selama pemeriksaan verifikasi startup.

Verifikasi peran IAM memiliki ec2:DescribeRouteTables izin dan ID tabel rute sudah benar. Tabel rute harus ada di Wilayah yang sama dengan instance gateway.