Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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.
Buat Kelas Node untuk Amazon EKS
Kelas Node Amazon EKS adalah template yang menawarkan kontrol terperinci atas konfigurasi node yang dikelola Mode Otomatis EKS Anda. Kelas Node mendefinisikan pengaturan tingkat infrastruktur yang berlaku untuk grup node di cluster EKS Anda, termasuk konfigurasi jaringan, pengaturan penyimpanan, dan penandaan sumber daya. Topik ini menjelaskan cara membuat dan mengonfigurasi Kelas Node untuk memenuhi persyaratan operasional spesifik Anda.
Saat Anda perlu menyesuaikan bagaimana Mode Otomatis EKS menyediakan dan mengonfigurasi instans EC2 di luar pengaturan default, membuat Kelas Node memberi Anda kontrol yang tepat atas parameter infrastruktur penting. Misalnya, Anda dapat menentukan penempatan subnet pribadi untuk keamanan yang ditingkatkan, mengonfigurasi penyimpanan sementara instans untuk beban kerja yang sensitif terhadap kinerja, atau menerapkan penandaan khusus untuk alokasi biaya.
Pertimbangan untuk beban kerja skala rendah atau skala tinggi
Mode Otomatis EKS menggunakan delegasi awalan (/28awalan) secara default. Setiap node menyimpan 16 IP pod, yang efisien untuk beban kerja padat pod yang mengisi slot tersebut. Untuk beban kerja pod-sparse (beberapa pod per node, umum dalam beban kerja ML atau GPU, atau beban kerja anti-afinitas berat) yang menargetkan lebih dari beberapa ratus node per Zona Ketersediaan, mode IP sekunder () adalah konfigurasi yang lebih dioptimalkan. "32" Ini mengalokasikan satu IP per pod daripada memesan 16 per node, yang memperluas kapasitas efektif subnet pod. /20
Untuk informasi selengkapnya, lihat Mode IP Sekunder untuk Pod. Untuk menyimpan pod di subnet terpisah dari node (terlepas dari mode alokasi), lihatPisahkan subnet dan grup keamanan untuk Pod.
Buat Kelas Node
Untuk membuatNodeClass, ikuti langkah-langkah ini:
-
Buat file YAML (misalnya,
nodeclass.yaml) dengan konfigurasi Kelas Node -
Terapkan konfigurasi ke cluster Anda menggunakan
kubectl -
Referensikan Kelas Node dalam konfigurasi Node Pool Anda. Untuk informasi selengkapnya, lihat Membuat Kumpulan Simpul untuk Mode Otomatis EKS.
Anda perlu kubectl menginstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Siapkan untuk menggunakan Amazon EKS.
Contoh Kelas Node Dasar
Berikut adalah contoh Kelas Node:
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: private-compute spec: subnetSelectorTerms: - tags: Name: "private-subnet" kubernetes.io/role/internal-elb: "1" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" ephemeralStorage: size: "160Gi"
Ini NodeClass meningkatkan jumlah penyimpanan sementara pada node.
Terapkan konfigurasi ini dengan menggunakan:
kubectl apply -f nodeclass.yaml
Selanjutnya, referensi Kelas Node dalam konfigurasi Node Pool Anda. Untuk informasi selengkapnya, lihat Membuat Kumpulan Simpul untuk Mode Otomatis EKS.
Buat entri akses kelas node
Jika Anda membuat kelas node khusus, Anda perlu membuat Entri Akses EKS untuk mengizinkan node bergabung dengan cluster. EKS secara otomatis membuat entri akses saat Anda menggunakan kelas node bawaan dan kumpulan node.
Untuk informasi tentang cara kerja Entri Akses, lihatBerikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS.
Saat membuat entri akses untuk kelas node Mode Otomatis EKS, Anda perlu menggunakan jenis entri EC2 akses.
Buat entri akses dengan CLI
Untuk membuat entri akses untuk node EC2 dan mengaitkan Kebijakan Node Otomatis EKS:
Perbarui perintah CLI berikut dengan nama cluster Anda, dan peran node ARN. Peran node ARN ditentukan dalam kelas node YAML.
# Create the access entry for EC2 nodes aws eks create-access-entry \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --type EC2 # Associate the auto node policy aws eks associate-access-policy \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --policy-arn arn:aws: eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy \ --access-scope type=cluster
Buat entri akses dengan CloudFormation
Untuk membuat entri akses untuk node EC2 dan mengaitkan Kebijakan Node Otomatis EKS:
Perbarui yang berikut CloudFormation dengan nama cluster Anda, dan peran node ARN. Peran node ARN ditentukan dalam kelas node YAML.
EKSAutoNodeRoleAccessEntry: Type: AWS::EKS::AccessEntry Properties: ClusterName: <cluster-name> PrincipalArn: <node-role-arn> Type: "EC2" AccessPolicies: - AccessScope: Type: cluster PolicyArn: arn:aws: eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy DependsOn: [ <cluster-name> ] # previously defined in CloudFormation
Untuk informasi tentang penerapan tum CloudFormation pukan, lihat Mem ulai CloudFormation
Spesifikasi Kelas Node
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Required fields # role and instanceProfile are mutually exclusive fields. role: MyNodeRole # IAM role for EC2 instances # instanceProfile: eks-MyNodeInstanceProfile # IAM instance-profile for EC2 instances subnetSelectorTerms: - tags: Name: "private-subnet" kubernetes.io/role/internal-elb: "1" # Alternative using direct subnet ID # - id: "subnet-0123456789abcdef0" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Alternative approaches: # - id: "sg-0123456789abcdef0" # - name: "eks-cluster-security-group" # Optional: Pod subnet selector for advanced networking podSubnetSelectorTerms: - tags: Name: "pod-subnet" kubernetes.io/role/pod: "1" # Alternative using direct subnet ID # - id: "subnet-0987654321fedcba0" # must include Pod security group selector also podSecurityGroupSelectorTerms: - tags: Name: "eks-pod-sg" # Alternative using direct security group ID # - id: "sg-0123456789abcdef0" # Optional: Selects on-demand capacity reservations and capacity blocks # for EKS Auto Mode to prioritize. capacityReservationSelectorTerms: - id: cr-56fac701cc1951b03 # Alternative Approaches - tags: Name: "targeted-odcr" # Optional owning account ID filter owner: "012345678901" # Optional fields snatPolicy: Random # or Disabled networkPolicy: DefaultAllow # or DefaultDeny networkPolicyEventLogs: Disabled # or Enabled ephemeralStorage: size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T iops: 3000 # Range: 3000-16000 throughput: 125 # Range: 125-1000 # Optional KMS key for encryption kmsKeyID: "arn:aws: kms:region:account:key/key-id" # Accepted formats: # KMS Key ID # KMS Key ARN # Key Alias Name # Key Alias ARN advancedNetworking: # Optional: Controls whether public IP addresses are assigned to instances that are launched with the nodeclass. # If not set, defaults to the MapPublicIpOnLaunch setting on the subnet. associatePublicIPAddress: false # Optional: Forward proxy, commonly requires certificateBundles as well # for EC2, see https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation httpsProxy: http://192.0.2.4:3128 #commonly port 3128 (Squid) or 8080 (NGINX) #Max 255 characters #httpsProxy: http://[2001:db8::4]:3128 # IPv6 address with port, use [] noProxy: #Max 50 entries - localhost #Max 255 characters each - 127.0.0.1 #- ::1 # IPv6 localhost #- 0:0:0:0:0:0:0:1 # IPv6 localhost - 169.254.169.254 # EC2 Instance Metadata Service #- [fd00:ec2::254] # IPv6 EC2 Instance Metadata Service # Domains to exclude, put all VPC endpoints here - .internal - .eks.amazonaws.com # ipv4PrefixSize is default to Auto which is prefix and fallback to secondary IP. "32" is the secondary IP mode. ipv4PrefixSize: Auto # or "32" # enableV4Egress is default to true. Setting it to false when using network policy or blocking IPv4 traffic in IPv6 clusters enableV4Egress: false # Optional: Static network interface configuration for EFA workloads networkInterfaces: # The primary ENI (networkCardIndex 0, deviceIndex 0) must use interfaceType: interface # secondaryIPv4Count and secondaryIPv4PrefixCount are only supported on networkCardIndex 0 - deviceIndex: 0 interfaceType: interface networkCardIndex: 0 secondaryIPv4Count: 10 - deviceIndex: 1 interfaceType: interface networkCardIndex: 0 secondaryIPv4PrefixCount: 2 # Only one of secondaryIPv4Count or secondaryIPv4PrefixCount per ENI - deviceIndex: 0 interfaceType: efa-only networkCardIndex: 1 advancedSecurity: # Optional, US regions only: Specifying `fips: true` will cause nodes in the nodeclass to run FIPS compatible AMIs. fips: false # Optional: Custom certificate bundles. certificateBundles: - name: "custom-cert" data: "base64-encoded-cert-data" # Optional: EC2 Placement Group placementGroupSelector: name: "targeted-pg" # Alternative use direct placement group ID # id: "pg-02465754522cda020" # Optional: Additional EC2 tags (with restrictions) tags: Environment: "production" Team: "platform" # Note: Cannot use restricted tags like: # - kubernetes.io/cluster/* # - karpenter.sh/provisioner-name # - karpenter.sh/nodepool # - karpenter.sh/nodeclaim # - karpenter.sh/managed-by # - eks.amazonaws.com/nodeclass
Pertimbangan-pertimbangan
-
Jika Anda ingin memverifikasi berapa banyak penyimpanan lokal yang dimiliki instance, Anda dapat menjelaskan node untuk melihat sumber daya penyimpanan sementara.
-
Enkripsi Volume - EKS menggunakan kunci KMS kustom yang dikonfigurasi untuk mengenkripsi volume root read-only dari instance dan volume data. read/write
-
Ganti peran IAM node - Jika Anda mengubah peran IAM node yang terkait dengan a
NodeClass, Anda perlu membuat Entri Akses baru. EKS secara otomatis membuat Entri Akses untuk peran IAM node selama pembuatan cluster. Peran IAM node memerlukan Kebijakan AkAmazonEKSAutoNodePolicyses EKS. Untuk informasi selengkapnya, lihat Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS. -
kepadatan Pod maksimum - EKS membatasi jumlah maksimum Pod pada node menjadi 110. Batas ini diterapkan setelah perhitungan Max Pod yang ada. Untuk informasi selengkapnya, lihat Pilih jenis instans node Amazon EC2 yang optimal.
-
Tag - Jika Anda ingin menyebarkan tag dari Kubernetes ke EC2, Anda perlu mengonfigurasi izin IAM tambahan. Untuk informasi selengkapnya, lihat Pelajari tentang identitas dan akses di Mode Otomatis EKS.
-
Kelas simpul default - Jangan beri nama kelas simpul kustom Anda
default. Ini karena Mode Otomatis EKSNodeClassmenyertakan panggilandefaultyang disediakan secara otomatis ketika Anda mengaktifkan setidaknya satu bawaanNodePool. Untuk informasi tentang mengaktifkan bawaanNodePools, lihatAktifkan atau Nonaktifkan Built-in NodePools. -
subnetSelectorTermsperilaku dengan beberapa subnet - Jika ada beberapa subnet yang cocok dengansubnetSelectorTermskondisi atau yang Anda berikan berdasarkan ID, Mode Otomatis EKS membuat node yang didistribusikan di seluruh subnet.-
Jika subnet berada di Availability Zones (AZ) yang berbeda, Anda dapat menggunakan fitur Kubernetes seperti batasan penyebaran topologi Pod dan Perutean Aware Topology
untuk menyebarkan Pod dan lalu lintas di seluruh zona, masing-masing. -
Jika ada beberapa subnet di AZ yang sama yang cocok dengan
subnetSelectorTerms, Mode Otomatis EKS membuat Pod pada setiap node yang didistribusikan di seluruh subnet di AZ tersebut. Mode Otomatis EKS menciptakan antarmuka jaringan sekunder pada setiap node di subnet lain di AZ yang sama. Ia memilih berdasarkan jumlah alamat IP yang tersedia di setiap subnet, untuk menggunakan subnet lebih efisien. Namun, Anda tidak dapat menentukan subnet mana yang digunakan Mode Otomatis EKS untuk setiap Pod; jika Anda memerlukan Pod untuk dijalankan di subnet tertentu, gunakan Pisahkan subnet dan grup keamanan untuk Pod sebagai gantinya.
-
-
Batasan strategi grup penempatan — Setiap strategi grup penempatan (cluster, partisi, spread) memiliki batasan spesifik pada jenis instans, AZ, dan kapasitas. Untuk detailnya, lihat Strategi grup Penempatan di Panduan Pengguna Amazon EC2.
-
Grup penempatan spread — Batas 7 instans — Grup penempatan spread tingkat rak memungkinkan maksimal 7 instans berjalan per Availability Zone per grup. Ini menciptakan kasus tepi berikut:
-
Penggantian drift diblokir pada kapasitas — Mode Otomatis EKS meluncurkan node pengganti sebelum menghentikan yang lama. Ketika spread PG memiliki 7 instance di AZ, peluncuran pengganti gagal dan simpul yang melayang tetap berjalan sampai slot dibebaskan.
-
Semua AZ pada kapasitas — Jika setiap AZ dalam spread PG berada pada batas 7 instansnya, tidak ada penggantian yang dapat dijadwalkan. Node yang melayang atau kandidat konsolidasi tetap berjalan tanpa batas waktu.
-
Tidak ada cadangan di luar grup penempatan — Mode Otomatis EKS tidak mencoba meluncurkan instans pengganti di luar grup penempatan.
-
Solusi — Gunakan kebijakan
WhenEmptykonsolidasi ()consolidationPolicy: WhenEmpty. Node dihapus hanya setelah semua pod non-daemonset habis, membebaskan slot PG tanpa perlu peluncuran pengganti terlebih dahulu. Perhatikan bahwa drift selalu menggunakan replace-then-delete terlepas dari kebijakan konsolidasi, sehingga drift tetap diblokir pada kapasitas.
-
-
Grup penempatan cluster AZ pinning - Setelah instance pertama diluncurkan ke grup penempatan cluster, PG disematkan ke AZ tersebut. Jika Anda NodePool mengizinkan beberapa AZ, peluncuran paralel selama peningkatan skala awal mungkin berlomba: satu berhasil dan menyematkan AZ, sisanya gagal dengan kesalahan kapasitas. Sematkan AZ dalam NodePool persyaratan Anda untuk menghindari kegagalan sementara.
-
Grup penempatan partisi — Grup penempatan partisi didukung tanpa batasan tambahan di luar batas EC2 standar.
-
Konsolidasi dapat memindahkan pod keluar dari grup penempatan — Jika pod tidak memiliki batasan penjadwalan grup penempatan (seperti aktif
eks.amazonaws.com/placement-group-id), konsolidasi dapat memindahkannya ke node di luar PG.nodeSelectorAplikasi yang memerlukan keanggotaan grup penempatan harus mengekspresikan ini melalui batasan tingkat pod. -
Grup penempatan yang tidak ada atau dihapus — Jika
NodeClassreferensi grup penempatan yang tidak ada atau telah dihapus, tidak ada instance yang diluncurkan. Format ID grup penempatan divalidasi saat masuk, tetapi keberadaannya hanya diperiksa pada waktu peluncuran. Jika grup penempatan dihapus saat node sedang berjalan, node yang ada ditandai sebagai hanyut dan tetap berjalan tanpa batas waktu karena peluncuran penggantian drift juga diblokir. -
Hugepages — Untuk informasi tentang mengkonfigurasi hugepages pada node, lihat. Konfigurasikan hugepages pada node
-
Pengaturan Kubelet — Untuk informasi tentang mengganti setelan kubelet seperti kepadatan Pod, ambang pengusiran, dan rotasi log, lihat. Konfigurasikan pengaturan kubelet pada node
-
Kernel sysctls — Untuk informasi tentang mengkonfigurasi kernel sysctls pada node, lihat. Konfigurasikan sysctls kernel pada node
Pisahkan subnet dan grup keamanan untuk Pod
podSecurityGroupSelectorTermsBid podSubnetSelectorTerms ang dan memungkinkan konfigurasi jaringan lanjutan dengan mengizinkan Pod menggunakan subnet dan grup keamanan yang berbeda dari node mereka. Kedua bidang harus ditentukan bersama. Pemisahan ini memberikan kontrol yang ditingkatkan atas perutean lalu lintas jaringan dan kebijakan keamanan.
catatan
Fitur ini berbeda dengan fitur Grup Keamanan untuk Pod (SGPP) yang digunakan dengan VPC CNI untuk komputasi Mode Otomatis non-EKS. SGPP tidak didukung dalam Mode Otomatis EKS. Sebagai gantinya, gunakan podSecurityGroupSelectorTerms di NodeClass untuk menerapkan grup keamanan terpisah ke lalu lintas Pod. Grup keamanan berlaku di NodeClass level, artinya semua Pod pada node yang menggunakan yang NodeClass berbagi grup keamanan Pod yang sama.
Cara kerjanya
Saat Anda mengkonfigurasi podSubnetSelectorTerms danpodSecurityGroupSelectorTerms:
-
ENI utama node menggunakan subnet dan grup keamanan dari
subnetSelectorTermsdansecurityGroupSelectorTerms. Hanya alamat IP node sendiri yang ditetapkan ke antarmuka ini. -
Mode Otomatis EKS membuat ENI sekunder di subnet yang cocok
podSubnetSelectorTerms, dengan grup keamanan daripodSecurityGroupSelectorTermsterlampir. Alamat IP pod dialokasikan dari ENI sekunder ini menggunakan awalan /28 secara default, dengan fallback otomatis ke IP sekunder (/32) ketika blok awalan yang berdekatan tidak tersedia. Jikaipv4PrefixSizedisetel ke"32"inadvancedNetworking, hanya IP sekunder yang digunakan. -
Grup keamanan yang ditentukan dalam
podSecurityGroupSelectorTermsberlaku untuk lalu lintas Pod dalam VPC. Untuk lalu lintas yang ditujukan di luar VPC, Pod menggunakan ENI utama node (dan grup keamanannya) karena terjemahan alamat jaringan sumber (SNAT) menerjemahkan IP Pod ke IP node. Anda dapat memodifikasi perilaku ini dengansnatPolicybidang diNodeClass.
Kasus penggunaan
Gunakan podSubnetSelectorTerms dan podSecurityGroupSelectorTerms kapan Anda perlu:
-
Terapkan grup keamanan yang berbeda untuk mengontrol lalu lintas untuk node dan Pod secara terpisah.
-
Pisahkan lalu lintas infrastruktur (komunikasi node-ke-node) dari lalu lintas aplikasi (Pod-to-Pod komunikasi).
-
Terapkan konfigurasi jaringan yang berbeda ke subnet node daripada subnet Pod.
-
Konfigurasikan proxy terbalik atau pemfilteran jaringan khusus untuk lalu lintas node tanpa mempengaruhi lalu lintas Pod. Gunakan
advancedNetworkingdancertificateBundlesuntuk menentukan proxy terbalik Anda dan sertifikat yang ditandatangani sendiri atau pribadi untuk proxy.
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: advanced-networking spec: role: MyNodeRole # Subnets and security groups for EC2 instances (nodes) subnetSelectorTerms: - tags: Name: "node-subnet" kubernetes.io/role/internal-elb: "1" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Separate subnets and security groups for Pods podSubnetSelectorTerms: - tags: Name: "pod-subnet" kubernetes.io/role/pod: "1" podSecurityGroupSelectorTerms: - tags: Name: "eks-pod-sg"
Pertimbangan untuk subnet Pod dan grup keamanan terpisah
-
Lingkup grup keamanan: Grup keamanan dari
podSecurityGroupSelectorTermsdilampirkan ke ENI sekunder dan berlaku untuk lalu lintas Pod dalam VPC. Ketika SNAT diaktifkan (defaultsnatPolicy: Random), lalu lintas yang meninggalkan VPC diterjemahkan ke alamat IP ENI utama node, sehingga grup keamanan nodesecurityGroupSelectorTermsditerapkan ke lalu lintas itu sebagai gantinya. Jika Anda menyetsnatPolicy: Disabledel, Pod menggunakan alamat IP mereka sendiri untuk semua lalu lintas, dan Anda harus memastikan bahwa grup routing dan keamanan dikonfigurasi sesuai dengan itu. -
NodeClass-level perincian: Grup keamanan Pod berlaku untuk semua Pod yang dijadwalkan pada node menggunakan.
NodeClassUntuk menerapkan grup keamanan yang berbeda ke beban kerja yang berbeda, buatNodePoolsumber daya terpisahNodeClassdan gunakan pencemaran, toleransi, atau pemilih node untuk menjadwalkan beban kerja ke node yang sesuai. -
Mengurangi kepadatan Pod: Lebih sedikit Pod yang dapat berjalan di setiap node karena antarmuka jaringan utama node dicadangkan untuk IP node dan tidak dapat digunakan untuk Pod.
-
Batasan pemilih subnet: Standar
subnetSelectorTermsdansecurityGroupSelectorTermskonfigurasi tidak berlaku untuk subnet Pod atau pemilihan grup keamanan. -
Perencanaan jaringan: Pastikan ruang alamat IP yang memadai di subnet node dan Pod untuk mendukung persyaratan beban kerja Anda.
-
Konfigurasi routing: Pastikan tabel rute dan Network Access Control List (ACL) subnet Pod telah dikonfigurasi dengan benar untuk komunikasi antara node dan subnet Pod.
-
Zona Ketersediaan: Pastikan Anda telah membuat subnet Pod di beberapa AZ. Jika Anda menggunakan subnet Pod tertentu, subnet itu harus berada di AZ yang sama dengan subnet node AZ.
Mode IP Sekunder untuk Pod
Bid ipv4PrefixSize ang ini memungkinkan konfigurasi jaringan lanjutan dengan mengalokasikan hanya alamat IP sekunder ke node. Fitur ini tidak mengalokasikan awalan (/28) ke node dan hanya mempertahankan satu IP sekunder sebagai MinimalIPTarget.
advancedNetworking.ipv4PrefixSizemenerima dua nilai: Auto (default; delegasi awalan; kecepatan pembuatan pod yang lebih tinggi; cadangan minimal 16 IP per node) dan "32" (mode IP sekunder; 1 IP per pod; menambahkan AssignPrivateIpAddresses panggilan per-pod; pods-per-node dibatasi oleh ENI tipe instance). IP-limit
Dalam Auto mode, Mode Otomatis EKS mengalokasikan /28 awalan (16 IP) ke setiap node di depan dan menambahkan satu lagi /28 ketika permintaan pod melebihi kapasitas blok saat ini, jadi 16 adalah minimum per node daripada batas.
Gunakan angka-angka berikut untuk perencanaan; cluster nyata bervariasi. Ketika subnet pod menjadi terfragmentasi dan tidak ada yang bersebelahan /28 yang bebas, Auto mode jatuh kembali ke alokasi per-IP pada node itu. Per-node Jumlah IP kemudian berada di bawah pola 16 per awalan yang ditunjukkan di bawah ini.
Contoh A — 1 pod pada node
-
Mode IP sekunder: 1 pod IP + 1 node IP = 2 IP yang digunakan.
-
Mode awalan: 1 node IP + 16 IP dari
/28awalan pertama (1 di antaranya digunakan oleh pod, 15 dipegang untuk pod mendatang) = 17 IP dialokasikan, 2 sedang digunakan.
Contoh B — 18 pod pada node
-
Mode IP sekunder: 18 pod IP + 1 node IP = 19 IP yang digunakan.
-
Mode awalan: 1 node IP + 2 ×
/28awalan (total 32 IP, pertama/28penuh pada 16 pod, kedua/28memegang pod 17-18 dengan 14 ditahan untuk pod mendatang) = 33 IP dialokasikan, 19 sedang digunakan.
Untuk beralih ke mode IP sekunder (1 IP per pod, tanpa reservasi awalan) untuk beban kerja pod-sparse, buat kustom NodeClass dengan advancedNetworking.ipv4PrefixSize: "32" dan arahkan kustom ke sana. NodePool Kumpulan bawaan general-purpose dan system node menggunakan yang disediakan secara otomatis default NodeClass; penggantian ipv4PrefixSize memerlukan kustom yang NodeClass dipasangkan dengan kustom. NodePool
Kasus penggunaan
-
Pemanfaatan alamat IP subnet yang lebih baik
-
Tidak ada fragmentasi awalan
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: advanced-networking spec: role: MyNodeRole advancedNetworking: ipv4PrefixSize: "32"
Pertimbangan untuk mode IP sekunder
-
Mengurangi kecepatan pembuatan Pod: Karena hanya satu IP sekunder yang dipanaskan, layanan IPAM membutuhkan lebih banyak waktu untuk menyediakan IP ketika lebih banyak pod dibuat.
Nonaktifkan keluar IPv4 dari pod IPv6 di cluster IPv6.
enableV4EgressBidang ini true secara default. Untuk cluster IPv6 Mode Otomatis, fitur ini dapat dinonaktifkan sehingga Mode Otomatis tidak akan membuat antarmuka IPv4 khusus keluar untuk pod IPv6. Hal ini penting karena antarmuka keluar IPv4 tidak tunduk pada penegakan Kebijakan Jaringan. Kebijakan jaringan hanya diberlakukan pada antarmuka utama Pod (eth0).
Kasus penggunaan
Gunakan enableV4Egress saat Anda perlu:
-
Gunakan IPv6 Cluster: Lalu lintas keluar IPv4 diizinkan secara default.
-
Gunakan Kebijakan Jaringan: Saat ini Kebijakan Jaringan EKS tidak mendukung dual stack. Menonaktifkan
enableV4Egressdapat mencegah lalu lintas pod keluar melalui IPv4 secara tidak terduga.
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: advanced-networking spec: role: MyNodeRole advancedNetworking: enableV4Egress: false
Pertimbangan untuk menonaktifkan EnableV4egress
-
Kebijakan Jaringan di Cluster IPv6: Cluster IPv6 memungkinkan lalu lintas IPv4 secara default. Peng
enableV4Egress: falseaturan memblokir lalu lintas keluar IPv4, memberikan keamanan yang ditingkatkan terutama ketika digunakan dengan Kebijakan Jaringan.
Konfigurasi Antarmuka Jaringan Statis
Bid networkInterfaces ang di bawah advancedNetworking memungkinkan Anda untuk secara statis menentukan antarmuka jaringan yang dilampirkan ke instance saat peluncuran. Ini terutama digunakan untuk mengonfigurasi perangkat Elastic Fabric Adapter (EFA) untuk komunikasi antar-node berkinerja tinggi dalam pelatihan terdistribusi dan beban kerja inferensi. Fitur ini dapat dipasangkan dengan kum pulan node kapasitas statis untuk mempertahankan EFA-ready node yang sudah dipanaskan sebelumnya. Untuk informasi selengkapnya tentang manajemen perangkat EFA di EKS, lihatKelola perangkat EFA di Amazon EKS. Untuk konfigurasi EFA yang direkomendasikan untuk jenis instans tertentu, lihat Memak simalkan bandwidth jaringan untuk jenis EFA-enabled instans di Panduan Pengguna Amazon EC2.
Cara kerjanya
Setiap entri dalam networkInterfaces mendefinisikan antarmuka jaringan yang dilampirkan ke instance selama peluncuran. Setiap entri menentukan networkCardIndex (kartu jaringan, di mana 0 yang utama), a deviceIndex (posisi perangkat pada kartu itu), dan interfaceType (interfaceuntuk IP-based lalu lintas standar, atau untuk antarmuka EFA yang didedikasikan efa-only untuk lalu lintas RDMA tanpa alamat IP). ENI utama (networkCardIndex: 0,deviceIndex: 0) harus digunakan interfaceType: interface untuk mendukung komunikasi IP-based node. Antar efa-only muka hanya mendukung kemampuan perangkat EFA untuk RDMA dan tidak dapat dikonfigurasi dengan alamat IP.
Anda dapat menetapkan kapasitas IP ke antarmuka pada kartu jaringan utama (networkCardIndex: 0) menggunakan secondaryIPv4Count (setiap unit menyediakan 1 alamat IP) atau secondaryIPv4PrefixCount (setiap unit menyediakan awalan /28 dengan 16 alamat IP). Hanya satu dari ini yang dapat digunakan per antarmuka, dan mereka hanya didukungnetworkCardIndex: 0. Mereka tidak dapat digunakan pada efa-only antarmuka.
penting
Ketika networkInterfaces dikonfigurasi, Mode Otomatis EKS tidak melampirkan IP tambahan, awalan, atau ENI setelah peluncuran instance. Hanya antarmuka dan alamat IP yang dikonfigurasi saat peluncuran tersedia untuk Pod. Anda harus merencanakan kepadatan pod berdasarkan jumlah IP yang dikonfigurasi.
Pertimbangan-pertimbangan
IPv6 tidak didukung dengan antarmuka jaringan yang ditentukan secara statis. associatePublicIPAddresstidak kompatibel ketika lebih dari satu antarmuka jaringan ditentukan, sehingga node yang menggunakan beberapa antarmuka tidak dapat memiliki IP publik (baik dalam cluster publik saja atau public/private cluster campuran).
Saat menggunakan podSubnetSelectorTerms dan podSecurityGroupSelectorTerms dengan antarmuka jaringan statis, konfigurasikan ENI primer dengan 0 IP sekunder. ENI primer menggunakan subnet node dan grup keamanan, sedangkan lalu lintas Pod menggunakan konfigurasi subnet pod pada ENI sekunder.
Contoh: EFA-only antarmuka untuk pelatihan GPU
Contoh berikut menunjukkan NodeClass konfigurasi dengan EFA-only antarmuka untuk instance GPU yang digunakan dalam pelatihan terdistribusi. Antarmuka utama memiliki awalan /28 (16 pod IP) dan 4 EFA-only antarmuka tambahan menyediakan konektivitas RDMA. Konfigurasi ini dapat dipasangkan dengan kumpulan node kapasitas statis untuk mempertahankan EFA-ready node yang sudah dipanaskan sebelumnya.
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: efa-training spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "efa-security-group" placementGroupSelector: name: "ml-training-pg" advancedNetworking: networkInterfaces: - deviceIndex: 0 interfaceType: interface networkCardIndex: 0 secondaryIPv4PrefixCount: 1 - deviceIndex: 1 interfaceType: efa-only networkCardIndex: 0 - deviceIndex: 0 interfaceType: efa-only networkCardIndex: 1 - deviceIndex: 0 interfaceType: efa-only networkCardIndex: 2 - deviceIndex: 0 interfaceType: efa-only networkCardIndex: 3
Konfigurasikan hugepages pada node
Dengan advancedCompute.hugepages bidang ini, Anda dapat mengonfigurasi hugepages pada node di. NodeClass Hugepages meningkatkan kinerja akses memori untuk beban kerja sensitif latensi seperti komputasi kinerja tinggi (HPC), database, dan aplikasi intensif jaringan. Anda dapat menggunakan dua konfigurasi hugepages independen secara terpisah atau bersama-sama:
-
Hugepages statis - Gunakan
pagesbidang untuk mengalokasikan sejumlah2Miatau1Gihugepages tetap pada setiap node, atau campuran dari kedua ukuran. Hugepages statis adalah sumber daya node yang dapat dijadwalkan. Untuk mengkonsumsinya, konfigurasikan Pod Anda untuk secara eksplisit meminta sumber daya besar sepertihugepages-2Miatau.hugepages-1GiUntuk informasi selengkapnya, lihat M engelola HugePagesdi dokumentasi Kubernetes. -
Transparent hugepages (THP) — Gunakan
transparentbidang untuk mengkonfigurasi kebijakan THP kernel. THP adalah kebijakan kernel-wide dan bukan sumber daya yang dapat dialokasikan. Itu tidak mempengaruhi penjadwalan atau kapasitas node, dan Pod tidak memintanya. Untuk informasi selengkapnya, lihat Dukungan Hugepage Transparandalam dokumentasi kernel Linux.
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: hugepages-compute spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" advancedCompute: hugepages: # Static hugepage reservations: up to one entry for each size pages: - size: "2Mi" count: 512 - size: "1Gi" count: 2 # Transparent hugepages (THP) kernel policy transparent: enabled: always # or madvise, never defrag: defer # or always, defer+madvise, madvise, never
Pengaturan hugepage transparan
Kedua transparent pengaturan bersifat opsional. Jika Anda menghilangkan pengaturan, node menggunakan kernel default (madvise).
-
enabled— Gunakanenableduntuk mengontrol kebijakan alokasi THP. Setel inialwaysuntuk menerapkan THP di seluruh sistem. Setelmadviseuntuk menerapkan THP hanya ke wilayah memori yang ikutmadvise(MADV_HUGEPAGE)serta. Setel untuknevermenonaktifkan THP. -
defrag— Gunakandefraguntuk mengontrol seberapa agresif kernel memadatkan memori untuk memenuhi alokasi THP. Nilai yang valid adalahalways,defer,defer+madvise,madvise, dannever.
Untuk menonaktifkan THP, seperti untuk beban kerja database yang merekomendasikan untuk mematikannya, setel. enabled: never enabledKapannever, biarkan defrag tidak disetel atau setel kenever; NodeClass validasi menolak kombinasi lainnya.
Pertimbangan Hugepages
Pertimbangkan hal berikut saat mengonfigurasi hugepages pada: NodeClass
-
Ukuran hugepage statis - Gunakan
pagesbidang untuk menentukan hingga satu entri untuk setiap ukuran hugepage (dan).2Mi1GiAnda dapat memesan kedua ukuran pada node yang sama. -
Reservasi memori — Hugepage statis dihitung terhadap total memori instance. Amazon EKS menandai jenis instance sebagai tidak kompatibel dengan NodeClass ketika reservasi hugepages gabungan di semua ukuran halaman akan melebihi 80% dari total memori.
-
Pengecualian timbal balik EFA - Adaptor Kain Elastis (EFA) dan hugepage statis tidak dapat hidup berdampingan secara bersamaan. NodeClass Jika Anda mengatur
interfaceType: efa-onlybersama denganpages, NodeClass validasi gagal. Amazon EKS tidak menyediakan Pod yang memintavpc.amazonaws.com/efadari sebuah NodeClass dengan halaman besar statis. Gunakan beban kerja terpisah NodeClass untuk EFA. Hugepage transparan tidak bertentangan dengan EFA; Anda dapat mengonfigurasitransparentpada NodeClass yang menggunakan antarmuka EFA.
Konfigurasikan pengaturan kubelet pada node
Gunakan advancedCompute.kubelet bidang untuk mengganti pengaturan kubelet pada node di. NodeClass Dengan penggantian ini, Anda dapat menyetel kepadatan Pod, penggusuran tekanan sumber daya, rotasi log kontainer, dan perilaku di luar memori (OOM). Amazon EKS menerapkan pengaturan kubelet default ke node Mode Otomatis, jadi konfigurasikan bidang ini hanya jika beban kerja Anda memerlukan perilaku yang berbeda. Untuk informasi selengkapnya tentang pengaturan yang mendasarinya, lihat Konfigurasi Kubelet
Pengaturan kubelet berikut tersedia:
-
maxPods: Jumlah maksimum Pod yang dapat berjalan pada node. -
podPidsLimit: Jumlah maksimum ID proses (PID) per Pod. -
idsPerPod: Jumlah UID dan GID yang dialokasikan kubelet ke namespace pengguna setiap Pod. -
singleProcessOOMKill: Apakah kubelet OOM membunuh proses dalam wadah secara individual, bukan sebagai grup. -
eviction: Ambang penggusuran keras dan lunak untuk sinyal tekanan sumber daya. -
logging: Ukuran rotasi log kontainer dan jumlah file. -
allowedUnsafeSysctls: Daftar sysctl yang tidak aman, atau pola namespace yang diakhiri dengan, yang diizinkan untuk disetel oleh Pod*yang dijadwalkan pada node.
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: kubelet-compute spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" advancedCompute: kubelet: # Range: 1-110 maxPods: 60 # -1 disables the limit, or specify 100 or greater podPidsLimit: 4096 # Multiple of 65536, range: 65536-4294967295. Requires # advancedCompute.kernel.sysctl.user.max_user_namespaces > 0. idsPerPod: 65536 singleProcessOOMKill: false eviction: # Valid signals: memory.available, nodefs.available, nodefs.inodesFree, # imagefs.available, imagefs.inodesFree, pid.available hard: memory.available: "100Mi" nodefs.available: "10%" soft: memory.available: "500Mi" nodefs.available: "15%" # Required when soft thresholds are set softGracePeriod: memory.available: "1m30s" nodefs.available: "2m" # 0 uses each Pod's terminationGracePeriodSeconds maxPodGracePeriod: 60 logging: containerLogMaxSize: "10Mi" # Minimum: 2 containerLogMaxFiles: 5 # Up to 64 entries. Allowed patterns: kernel.shm*, kernel.msg*, # kernel.sem, fs.mqueue.*, net.* allowedUnsafeSysctls: - "net.core.somaxconn" - "kernel.shm*"
Pertimbangan pengaturan Kubelet
Pertimbangkan hal berikut saat mengonfigurasi pengaturan kubelet pada: NodeClass
-
Penggantian simpul: Mengubah pengaturan kubelet pada yang ada
NodeClassmenandai node yang menggunakannya sebagai hanyut. Amazon EKS menggantikan node tersebut dengan node baru yang menggunakan konfigurasi yang diperbarui. Amazon EKS tidak menerapkan pengaturan kubelet untuk menjalankan node di tempat. -
maxPodspenjepitan: Nilai yang Anda tetapkan adalah batas atas, bukan jaminan. Saat runtime, Amazon EKS menerapkan nilai terendah dari tiga nilai. Ini adalahmaxPodsnilai Anda, alamat IP yang tersedia untuk jenis instance, dan batas Mode Otomatis 110 Pod per node. Untuk informasi selengkapnya, lihat Pilih jenis instans node Amazon EC2 yang optimal. -
podPidsLimitnilai: Tentukan-1untuk menonaktifkan batas, atau nilai100atau lebih besar.NodeClassvalidasi menolak nilai antara0dan99. -
idsPerPodpersyaratan: Nilai harus kelipatan65536antara65536dan4294967295. PengidsPerPodaturanadvancedCompute.kernel.sysctl.user.max_user_namespacesharus disetel ke nilai positif pada yang samaNodeClass;NodeClasspenerimaan menolak konfigurasi yang ditetapkanidsPerPodtanpa juga menyeteluser.max_user_namespaceske nilai yang lebih besar dari0. Untuk informasi selengkapnya tentanguser.max_user_namespaces, lihat Sysctls yang didukung. -
Ambang penggusuran lunak: Ambang batas lunak harus kurang agresif daripada ambang batas keras untuk sinyal yang sama, yang berarti memicu lebih awal. Jika Anda menetapkan ambang lunak, Anda juga harus mengatur
softGracePerioduntuk setiap sinyal. Ambang lunak dan ambang batas keras dapat menggunakan unit yang berbeda, seperti persentase dan kuantitas absolut. Dalam hal ini, Amazon EKS menyelesaikan kedua nilai untuk setiap jenis instans. Amazon EKS kemudian menandai jenis instance yang melanggar perbandingan sebagai tidak kompatibel denganNodeClass. -
singleProcessOOMKillpersyaratan versi: Pengaturan ini membutuhkan Kubernetes versi 1.32 atau yang lebih baru. Pada versi sebelumnya, Amazon EKS memancarkan peristiwa peringatan padaNodeClassdan pengaturan tidak berpengaruh. -
allowedUnsafeSysctlsbatasan: Anda dapat menentukan hingga 64 entri, dan setiap entri harus cocok dengan salah satu pola yang diizinkan:kernel.shm*,kernel.msg*,kernel.sem,fs.mqueue., ataunet.. Mengizinkan sysctl yang tidak aman pada node hanya mengizinkan Pod untuk memintanya. Setiap Pod masih harus mencantumkan sysctl di dalamnya.securityContext.sysctlsUntuk informasi selengkapnya, lihat Menggunakan sysctls di Cluster Kubernetes dalam dokumentasi Kubernetes.
Konfigurasikan sysctls kernel pada node
Gunakan advancedCompute.kernel.sysctl bidang untuk mengatur sysctls kernel Linux pada node di. NodeClass Sysctls menyetel perilaku kernel runtime untuk beban kerja yang memerlukan batas jaringan yang lebih tinggi, kebijakan manajemen memori yang berbeda, atau pengaturan TCP tertentu. Nama properti pada sysctl bidang persis cocok dengan nama sysctl kernel yang mendasarinya (misalnya, vm.swappiness dannet.core.somaxconn). Amazon EKS menerapkan nilai sysctl saat boot node. Jika Anda mengubah sysctl pada yang sudah ada NodeClass, Amazon EKS mulai mengganti node agar nilai baru mulai berlaku.
Contoh konfigurasi
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: tuned-compute spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" advancedCompute: kernel: sysctl: vm.swappiness: 30 net.core.somaxconn: 4096 net.ipv4.tcp_congestion_control: "cubic" vm.dirty_background_ratio: 10 vm.dirty_ratio: 20
Sysctls yang didukung
Amazon EKS hanya mendukung sysctls dalam tabel berikut. Setiap sysctl numerik memberlakukan minimum dan maksimum yang ditampilkan, dan NodeClass penerimaan menolak nilai di luar rentang itu. String sysctls hanya menerima nilai yang tercantum.
| Sysctl | Deskripsi | Nilai yang diizinkan |
|---|---|---|
|
|
Jumlah maksimum permintaan asinkron I/O . |
|
|
|
Jumlah maksimum instans inotify per ID pengguna nyata. |
|
|
|
Jumlah maksimum jam tangan inotify per ID pengguna nyata. |
|
|
|
Jumlah maksimum penanganan file yang dapat dialokasikan suatu proses. |
|
|
|
Mengontrol akses yang tidak memiliki hak istimewa ke sistem acara kinerja. |
|
|
|
Jumlah maksimum paket yang antri di sisi INPUT per CPU. |
|
|
|
Ukuran buffer soket penerima maksimum, dalam byte. |
|
|
|
Nilai maksimum untuk argumen backlog di syscall listen. |
|
|
|
Ukuran buffer soket kirim maksimum, dalam byte. |
|
|
|
En ARP-cache tri minimum sebelum pengumpulan sampah dapat berjalan. |
|
|
|
Jumlah ARP-cache entri maksimum lunak. |
|
|
|
Jumlah maksimum ARP-cache entri yang keras. |
|
|
|
Algoritma kontrol kemacetan TCP untuk koneksi baru. |
|
|
|
Lamanya waktu, dalam detik, koneksi yatim piatu tetap dalam status FIN_WAIT_2 sebelum dibatalkan di ujung lokal. |
|
|
|
Seberapa sering, dalam hitungan detik, TCP mengirimkan pesan keepalive ketika keepalive diaktifkan. |
|
|
|
Jumlah maksimum permintaan SYN yang belum dibayar yang diizinkan. Permintaan di luar nilai ini dihapus oleh kernel. |
|
|
|
Aktifkan penggunaan kembali TIME-WAIT soket untuk koneksi baru saat aman dari sudut pandang protokol. |
|
|
|
Jumlah maksimum ruang nama pengguna yang dapat dibuat oleh pengguna. Nilai |
|
|
|
Persentase memori yang tersedia di mana thread kernel flusher mulai menulis halaman kotor kembali ke disk. |
|
|
|
Seratus detik sebelum halaman kotor memenuhi syarat untuk dituliskan kembali. |
|
|
|
Persentase memori yang tersedia di mana program penulisan dipaksa untuk memblokir penulisan. |
|
|
|
Seratus detik di antara pemanggilan benang flush. |
|
|
|
Jumlah maksimum area peta memori yang mungkin dimiliki satu proses. |
|
|
|
Biaya IO relatif untuk pertukaran vs. paging sistem file. |
|
|
|
Rasio tanda air mengklaim kembali memori dalam pecahan 10.000. |
|
Pertimbangan Sysctls
Pertimbangkan hal berikut saat mengonfigurasi sysctls kernel pada: NodeClass
-
Sysctls yang didukung — Hanya sysctls yang tercantum di yang didukung. Sysctls yang didukung Setiap bidang memberlakukan minimum dan maksimum yang didokumentasikan, dan NodeClass penerimaan menolak nilai di luar kisaran itu.
-
Diterapkan saat boot - Sysctls ditulis ke Bottlerocket saat boot node.
[settings.kernel.sysctl]Perubahan runtime untuk menspec.advancedCompute.kernel.sysctlandai node yang ada sebagai hanyut; nilai-nilai baru hanya berlaku pada node pengganti. -
vm.dirty_background_ratiodanvm.dirty_ratio— Kedua bidang ini harus disetel atau keduanya dihilangkan, danvm.dirty_background_ratioharus benar-benar kurang darivm.dirty_ratio. NodeClass penerimaan menolak konfigurasi yang melanggar salah satu aturan. -
net.ipv4.neigh.default.gc_thresh1,gc_thresh2, dangc_thresh3— Ketiga ARP-cache ambang batas harus disatukan atau semuanya dihilangkan, dan nilainya harus dipenuhi.gc_thresh1 < gc_thresh2 < gc_thresh3NodeClass penerimaan menolak konfigurasi yang melanggar salah satu aturan. -
net.ipv4.tcp_congestion_controlHanyacubicdanrenoditerima.