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.
Halaman ini merinci pertimbangan untuk menjalankan webhook dengan node hybrid. Webhook digunakan dalam aplikasi Kubernetes dan proyek open-source, seperti Load Balancer AWS Controller dan CloudWatch Observability Agent, untuk melakukan kemampuan mutasi dan validasi saat runtime.
Jika Anda menjalankan webhook pada node hybrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal dan Anda harus mengonfigurasi kluster EKS Anda dengan jaringan pod jarak jauh Anda sehingga bidang kontrol EKS dapat berkomunikasi dengan webhook yang berjalan pada node hybrid.
Ada beberapa teknik yang dapat Anda gunakan untuk membuat pod lokal CIDR dapat dirutekan di jaringan lokal Anda termasuk Border Gateway Protocol (BGP), rute statis, atau solusi perutean kustom lainnya. BGP adalah solusi yang direkomendasikan karena lebih skalabel dan lebih mudah dikelola daripada solusi alternatif yang memerlukan konfigurasi rute khusus atau manual. AWS mendukung kemampuan BGP Cilium dan Calico untuk mengiklankan pod node hybrid CIDRs, lihat Configure CNI untuk node hybrid untuk informasi selengkapnya.
Jika Anda tidak dapat membuat CIDR pod lokal dapat dirutekan di jaringan lokal dan perlu menjalankan webhook, disarankan untuk menjalankan webhook pada EC2 instance di cluster EKS yang sama dengan node hibrid Anda.
Pertimbangan untuk cluster mode campuran
Cluster mode campuran didefinisikan sebagai cluster EKS yang memiliki node hybrid dan node yang berjalan di AWS Cloud. Saat menjalankan cluster mode campuran, pertimbangkan rekomendasi berikut:
-
Jalankan VPC CNI pada node di AWS Cloud dan Cilium atau Calico pada node hybrid. Cilium dan Calico tidak didukung AWS saat berjalan di node di Cloud. AWS
-
Jika aplikasi Anda memerlukan pod yang berjalan di node di AWS Cloud untuk berkomunikasi langsung dengan pod yang berjalan pada node hybrid (“komunikasi timur-barat”), dan Anda menggunakan CNI VPC pada node di AWS Cloud dan Cilium atau Calico dalam mode overlay/tunnel pada node hybrid, maka pod CIDR lokal Anda harus dapat dirutekan di jaringan lokal Anda.
-
Jalankan setidaknya satu replika CoreDNS pada node AWS di Cloud dan setidaknya satu replika CoreDNS pada node hybrid, lihat Mengkonfigurasi add-on dan webhook untuk cluster mode campuran untuk langkah-langkah konfigurasi.
-
Konfigurasikan webhook untuk berjalan di node di AWS Cloud. Lihat Mengonfigurasi webhook untuk add-on untuk mengetahui cara mengonfigurasi webhook yang digunakan oleh AWS dan add-on komunitas saat menjalankan cluster mode campuran.
-
Jika Anda menggunakan Application Load Balancers (ALB) atau Network Load Balancers (NLB) untuk lalu lintas beban kerja yang berjalan pada node hybrid, maka target IP yang digunakan dengan ALB atau NLB harus dapat dirutekan dari. AWS
-
Add-on Metrics Server memerlukan konektivitas dari bidang kontrol EKS ke alamat IP pod Metrics Server. Jika Anda menjalankan add-on Metrics Server pada node hibrid, maka CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal Anda.
-
Untuk mengumpulkan metrik node hibrid menggunakan Amazon Managed Service untuk kolektor terkelola Prometheus (AMP), CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal. Anda juga dapat menggunakan kolektor terkelola AMP untuk metrik dan node bidang kontrol EKS yang berjalan di AWS Cloud, dan add-on AWS Distro for OpenTelemetry (ADOT) untuk mengumpulkan metrik untuk node hibrid.
Konfigurasikan add-on dan webhook untuk cluster mode campuran
Untuk melihat webhook yang bermutasi dan memvalidasi yang berjalan di klaster, Anda dapat melihat jenis sumber daya Ekstensi di panel Resources konsol EKS untuk klaster Anda, atau Anda dapat menggunakan perintah berikut. EKS juga melaporkan metrik webhook di dasbor observabilitas cluster, lihat Pantau klaster Anda dengan dasbor observabilitas untuk informasi lebih lanjut.
kubectl get mutatingwebhookconfigurations
kubectl get validatingwebhookconfigurations
Konfigurasikan replika CoreDNS
Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, disarankan untuk memiliki setidaknya satu replika CoreDNS pada node hybrid dan setidaknya satu replika CoreDNS di node Anda di Cloud. AWS Layanan CoreDNS dapat dikonfigurasi untuk memilih replika CoreDNS terdekat untuk mencegah latensi dan masalah jaringan dalam pengaturan cluster mode campuran dengan langkah-langkah berikut.
-
Tambahkan label zona topologi untuk setiap node hibrida Anda, misalnya.
topology.kubernetes.io/zone: onprem
Ini dapat dilakukan secara alternatif padanodeadm init
fase dengan menentukan label dalamnodeadm
konfigurasi Anda. Catatan, node yang berjalan di AWS Cloud secara otomatis mendapatkan label zona topologi yang diterapkan padanya yang sesuai dengan zona ketersediaan (AZ) node.kubectl label node
hybrid-node-name
topology.kubernetes.io/zone=zone
-
Tambahkan
podAntiAffinity
ke konfigurasi penerapan CoreDNS dengan kunci zona topologi. Anda juga dapat mengonfigurasi penerapan CoreDNS selama penginstalan dengan add-on EKS.kubectl edit deployment coredns -n kube-system
spec: template: spec: affinity: ... podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: kubernetes.io/hostname weight: 100 - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: topology.kubernetes.io/zone weight: 50 ...
-
Tambahkan
trafficDistribution
ke konfigurasi Layanan kube-dns.kubectl edit service kube-dns -n kube-system
spec: ... trafficDistribution: PreferClose
Konfigurasikan webhook untuk add-on
Add-on berikut menggunakan webhook dan didukung untuk digunakan dengan node hybrid.
-
AWS Pengontrol Load Balancer
-
CloudWatch Agen Observabilitas
-
AWS Distro untuk OpenTelemetry (ADOT)
Lihat bagian di bawah ini untuk mengonfigurasi webhook yang digunakan oleh add-on ini untuk berjalan di node di Cloud. AWS
AWS Pengontrol Load Balancer
Untuk menjalankan AWS Load Balancer Controller pada node di AWS Cloud dalam pengaturan cluster mode campuran, tambahkan berikut ini ke konfigurasi nilai Helm Anda atau tentukan nilai menggunakan konfigurasi add-on EKS.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
CloudWatch Agen Observabilitas
Add-on CloudWatch Observability Agent memiliki operator yang menggunakan webhook. Untuk menjalankan operator pada node di AWS Cloud dalam pengaturan cluster mode campuran, edit konfigurasi operator CloudWatch Observability Agent. Kemampuan untuk mengonfigurasi afinitas operator selama penginstalan dengan add-on Helm dan EKS direncanakan untuk rilis mendatang (lihat masalah containers-roadmap
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
spec:
...
template:
...
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
AWS Distro untuk OpenTelemetry (ADOT)
Add-on AWS Distro for OpenTelemetry (ADOT) memiliki operator yang menggunakan webhook. Untuk menjalankan operator pada node di AWS Cloud dalam pengaturan cluster mode campuran, tambahkan berikut ini ke konfigurasi nilai Helm Anda atau tentukan nilai menggunakan konfigurasi add-on EKS.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
Jika CIDR pod Anda tidak dapat dirutekan di jaringan lokal Anda, konfigurasikan Custom Resource Definition (CRD) kolektor ADOT untuk dijalankan di node hibrid Anda sehingga dapat mengikis metrik dari node hybrid Anda dan beban kerja yang berjalan di dalamnya.
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: In
values:
- hybrid
Anda dapat mengonfigurasi kolektor ADOT untuk hanya mengikis metrik dari node hibrida dan sumber daya yang berjalan pada node hibrida dengan menambahkan yang berikut relabel_configs
ke masing-masing scrape_configs
dalam konfigurasi CRD kolektor ADOT.
relabel_configs:
- action: keep
regex: hybrid
source_labels:
- __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
Add-on ADOT memiliki persyaratan prasyarat untuk menginstal cert-manager untuk sertifikat TLS yang digunakan oleh webhook operator ADOT. Cert-manager juga menjalankan webhooks dan Anda dapat mengonfigurasinya untuk berjalan di node di AWS Cloud dengan konfigurasi nilai Helm berikut.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
webhook:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
cainjector:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid
startupapicheck:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- hybrid