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:
-
Buat file YAMM (misalnya,
nodeclass.yaml
) dengan konfigurasi Kelas Node Anda -
Terapkan konfigurasi ke cluster Anda menggunakan
kubectl
-
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 a
NodeClass
, Anda harus membuat Entri Akses baru. EKS secara otomatis membuat Entri Akses untuk peran IAM node selama pembuatan cluster. Peran IAM node memerlukan Kebijakan AksesAmazonEKSAutoNodePolicy
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 Anda
default
. Ini karena Mode Otomatis EKS menyertakanNodeClass
panggilandefault
yang secara otomatis disediakan ketika Anda mengaktifkan setidaknya satu built-in.NodePool
Untuk informasi tentang mengaktifkan bawaanNodePools
, lihatAktifkan atau Nonaktifkan Built-in NodePools. -
subnetSelectorTerms
perilaku dengan beberapa subnet - Jika ada beberapa subnet yang cocok dengansubnetSelectorTerms
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 dengan
subnetSelectorTerms
, 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
dancertificateBundles
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 menggunakan
podSubnetSelectorTerms
, karena antarmuka jaringan utama node berada di subnet node, dan tidak dapat digunakan untuk pod di subnet pod. -
Batasan pemilih subnet: Standar
subnetSelectorTerms
dansecurityGroupSelectorTerms
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.