Buat Kelas Node untuk Amazon EKS - 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.

Buat Kelas Node untuk Amazon EKS

Amazon EKS Node Classes adalah template yang menawarkan kontrol granular atas konfigurasi node terkelola Mode Otomatis EKS Anda. Kelas Node mendefinisikan pengaturan tingkat infrastruktur yang berlaku untuk grup node di kluster EKS Anda, termasuk konfigurasi jaringan, pengaturan penyimpanan, dan penandaan sumber daya. Topik ini menjelaskan cara membuat dan mengkonfigurasi Kelas Node untuk memenuhi persyaratan operasional spesifik Anda.

Saat Anda perlu menyesuaikan cara Mode Otomatis EKS menyediakan dan mengonfigurasi EC2 instance 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 instance untuk beban kerja yang sensitif terhadap kinerja, atau menerapkan penandaan khusus untuk alokasi biaya.

Buat Kelas Node

Untuk membuatNodeClass, ikuti langkah-langkah ini:

  1. Buat file YAMM (misalnya,nodeclass.yaml) dengan konfigurasi Kelas Node Anda

  2. Terapkan konfigurasi ke cluster Anda menggunakan kubectl

  3. Referensi Kelas Node dalam konfigurasi Node Pool Anda. Untuk informasi selengkapnya, lihat Buat Node Pool untuk Mode Otomatis EKS.

Anda perlu kubectl diinstal 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 fana 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 Buat Node Pool untuk Mode Otomatis EKS.

Buat entri akses kelas node

Jika Anda membuat kelas node kustom, Anda perlu membuat Entri Akses EKS untuk mengizinkan node bergabung dengan cluster. EKS secara otomatis membuat entri akses saat Anda menggunakan kelas node dan kumpulan node bawaan.

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 EC2 node 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 YAMM.

# 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 EC2 node dan mengaitkan Kebijakan Node Otomatis EKS:

Perbarui yang berikut ini CloudFormation dengan nama cluster Anda, dan peran node ARN. Peran node ARN ditentukan dalam kelas node YAMM.

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 menerapkan CloudFormation tumpukan, lihat Memulai CloudFormation

Spesifikasi Kelas Node

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Required fields role: MyNodeRole # IAM role 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" # 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 # Optional: Forward proxy, commonly requires certificateBundles as well #for EC2, see https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation advancedNetworking: 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 # Optional: Custom certificate bundles. certificateBundles: - name: "custom-cert" data: "base64-encoded-cert-data" # 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

  • 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 aNodeClass, Anda harus membuat Entri Akses baru. EKS secara otomatis membuat Entri Akses untuk peran IAM node selama pembuatan cluster. Peran IAM node memerlukan Kebijakan Akses AmazonEKSAutoNodePolicy 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 pod maks yang ada. Untuk informasi selengkapnya, lihat Pilih jenis instans EC2 node Amazon yang optimal.

  • Tag - Jika Anda ingin menyebarkan tag dari Kubernetes ke Kubernetes EC2, Anda perlu mengonfigurasi izin IAM tambahan. Untuk informasi selengkapnya, lihat Pelajari tentang identitas dan akses dalam Mode Otomatis EKS.

  • Kelas node default - Jangan beri nama kelas node kustom Andadefault. Ini karena Mode Otomatis EKS menyertakan NodeClass panggilan default yang secara otomatis disediakan ketika Anda mengaktifkan setidaknya satu built-in. NodePool Untuk informasi tentang mengaktifkan bawaanNodePools, lihatAktifkan atau Nonaktifkan Built-in NodePools.

  • subnetSelectorTermsperilaku dengan beberapa subnet - Jika ada beberapa subnet yang cocok dengan subnetSelectorTerms kondisi atau yang Anda berikan oleh 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 kendala penyebaran topologi Pod dan Topology Aware Routing untuk menyebarkan pod dan lalu lintas di seluruh zona.

    • Jika ada beberapa subnet dalam AZ yang sama yang cocok dengansubnetSelectorTerms, Mode Otomatis EKS membuat pod pada setiap node yang didistribusikan di seluruh subnet di AZ tersebut. Mode Otomatis EKS membuat antarmuka jaringan sekunder pada setiap node di subnet lain di AZ yang sama. Ini memilih berdasarkan jumlah alamat IP yang tersedia di setiap subnet, untuk menggunakan subnet lebih efisien. Namun, Anda tidak dapat menentukan subnet EKS Auto Mode mana yang digunakan untuk setiap pod; jika Anda membutuhkan pod untuk dijalankan di subnet tertentu, gunakan Pemilihan subnet untuk Pod sebagai gantinya.

Pemilihan subnet untuk Pod

The podSubnetSelectorTerms and podSecurityGroupSelectorTerms Fields memungkinkan konfigurasi jaringan lanjutan dengan memungkinkan pod berjalan di subnet yang berbeda dari node mereka. Pemisahan ini memberikan kontrol yang ditingkatkan atas perutean lalu lintas jaringan dan kebijakan keamanan. Perhatikan bahwa podSecurityGroupSelectorTerms diperlukan denganpodSubnetSelectorTerms.

Kasus penggunaan

Gunakan podSubnetSelectorTerms saat Anda perlu:

  • Pisahkan lalu lintas infrastruktur (node-to-node komunikasi) dari lalu lintas aplikasi (pod-to-pod komunikasi)

  • Menerapkan konfigurasi jaringan yang berbeda ke subnet node daripada subnet pod.

  • Menerapkan kebijakan keamanan atau aturan routing yang berbeda untuk node dan pod.

  • Konfigurasikan proxy terbalik atau pemfilteran jaringan khusus untuk lalu lintas node tanpa memengaruhi lalu lintas pod. Gunakan advancedNetworking dan certificateBundles untuk 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 for EC2 instances (nodes) subnetSelectorTerms: - tags: Name: "node-subnet" kubernetes.io/role/internal-elb: "1" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Separate subnets for pods podSubnetSelectorTerms: - tags: Name: "pod-subnet" kubernetes.io/role/pod: "1" podSecurityGroupSelectorTerms: - tags: Name: "eks-pod-sg"

Pertimbangan untuk pemilih subnet untuk pod

  • Mengurangi kepadatan pod: Pod yang lebih sedikit dapat berjalan pada setiap node saat menggunakanpodSubnetSelectorTerms, karena antarmuka jaringan utama node berada di subnet node, dan tidak dapat digunakan untuk pod di subnet pod.

  • Batasan pemilih subnet: Standar subnetSelectorTerms dan securityGroupSelectorTerms konfigurasi tidak berlaku untuk pemilihan subnet pod.

  • Perencanaan jaringan: Pastikan ruang alamat IP yang memadai di subnet node dan pod untuk mendukung kebutuhan beban kerja Anda.

  • Konfigurasi routing: Verifikasi bahwa tabel rute dan Network Access Control List (ACL) dari subnet pod dikonfigurasi dengan benar untuk komunikasi antara subnet node dan pod.