Bantu tingkatkan halaman ini
Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat node Amazon Linux yang dikelola sendiri
Topik ini menjelaskan bagaimana Anda dapat meluncurkan grup Auto Scaling dari Linux node yang mendaftar dengan EKS cluster Amazon Anda. Setelah node bergabung dengan cluster, Anda dapat menerapkan Kubernetes aplikasi untuk mereka. Anda juga dapat meluncurkan node Amazon Linux yang dikelola sendiri dengan eksctl
atau. AWS Management Console Jika Anda perlu meluncurkan node AWS Outposts, lihatBuat node Amazon Linux di AWS Outposts.
Prasyarat
-
EKSCluster Amazon yang ada. Untuk menyebarkan satu, lihatBuat EKS klaster Amazon. Jika Anda memiliki subnet di Wilayah AWS mana Anda memiliki AWS Outposts, AWS Wavelength, atau AWS Local Zones diaktifkan, subnet tersebut harus tidak diteruskan saat Anda membuat klaster Anda.
-
IAMPeran yang ada untuk node untuk digunakan. Untuk membuatnya, lihat IAM role simpul Amazon EKS. Jika peran ini tidak memiliki salah satu kebijakan untuk peran tersebut VPCCNI, peran terpisah yang mengikuti diperlukan untuk VPC CNI pod.
-
(Opsional, tetapi disarankan) Amazon VPC CNI plugin for Kubernetes add-on dikonfigurasi dengan IAM perannya sendiri yang memiliki IAM kebijakan yang diperlukan yang melekat padanya. Untuk informasi selengkapnya, lihat Konfigurasikan VPC CNI plugin Amazon untuk digunakan IRSA.
-
Keakraban dengan pertimbangan yang tercantum dalam. Pilih jenis instans EC2 node Amazon yang optimal Bergantung pada jenis instans yang Anda pilih, mungkin ada prasyarat tambahan untuk klaster Anda dan. VPC
- eksctl
-
catatan
eksctl
tidak mendukung Amazon Linux 2023 saat ini.Prasyarat
Versi
0.191.0
atau yang lebih baru dari alat bariseksctl
perintah yang diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memperbaruieksctl
, lihat Instalasidalam eksctl
dokumentasi.Untuk meluncurkan yang dikelola sendiri Linux node menggunakan
eksctl
-
(Opsional) Jika CNIkebijakan terkelola Amazon EKS _ IAM _Policy dilampirkan ke AndaIAM role simpul Amazon EKS, sebaiknya tetapkan kebijakan tersebut ke IAM peran yang Anda kaitkan dengan Kubernetes
aws-node
akun layanan sebagai gantinya. Untuk informasi selengkapnya, lihat Konfigurasikan VPC CNI plugin Amazon untuk digunakan IRSA. -
Perintah berikutnya membuat grup simpul dalam klaster yang ada. Ganti
dengan nama untuk grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Gantial-nodes
dengan nama klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam Wilayah AWS dan Akun AWS tempat Anda membuat cluster. Ganti sisanyamy-cluster
dengan nilai Anda sendiri. Node dibuat dengan cara yang sama Kubernetes versi sebagai bidang kontrol, secara default.example value
Sebelum memilih nilai untuk
--node-type
, tinjauPilih jenis instans EC2 node Amazon yang optimal.Ganti
dengan nama Amazon EC2 key pair atau public key Anda. Kunci ini digunakan untuk SSH masuk ke node Anda setelah diluncurkan. Jika Anda belum memiliki EC2 key pair Amazon, Anda dapat membuatnya di AWS Management Console. Untuk informasi selengkapnya, lihat pasangan EC2 kunci Amazon di Panduan EC2 Pengguna Amazon.my-key
Buat grup simpul Anda dengan perintah berikut.
penting
Jika Anda ingin menyebarkan grup node ke, Wavelength AWS Outposts, atau subnet Zona Lokal, ada pertimbangan tambahan:
-
Subnet tidak boleh diteruskan saat Anda membuat cluster.
-
Anda harus membuat grup node dengan file konfigurasi yang menentukan subnet dan.
volumeType
Untuk informasi selengkapnya, lihat Membuat nodegroup dari file konfigurasi dan skema: gp2 file Config dalam dokumentasi. eksctl
eksctl create nodegroup \ --cluster
my-cluster
\ --nameal-nodes
\ --node-typet3.medium
\ --nodes3
\ --nodes-min1
\ --nodes-max4
\ --ssh-access \ --managed=false \ --ssh-public-keymy-key
Untuk menyebarkan grup simpul yang:
-
dapat menetapkan jumlah alamat IP yang jauh lebih tinggi untuk Pods dari konfigurasi default, lihatTetapkan lebih banyak alamat IP ke EKS node Amazon dengan awalan.
-
dapat menetapkan
IPv4
alamat ke Pods dari yang berbeda CIDR blok dari contoh, lihatTerapkan pods di subnet alternatif dengan jaringan khusus. -
dapat menetapkan
IPv6
alamat ke Pods dan layanan, lihatTetapkan IPv6 alamat ke cluster, pods, dan layanan. -
menggunakan
containerd
runtime, Anda harus menyebarkan grup node menggunakan file.config
Untuk informasi selengkapnya, lihat Uji migrasi Amazon Linux 2 dari Docker ke containerd. -
tidak memiliki akses internet outbound, lihatMenyebarkan kluster pribadi dengan akses internet terbatas.
Untuk daftar lengkap semua opsi dan default yang tersedia, masukkan perintah berikut.
eksctl create nodegroup --help
Jika node gagal bergabung dengan cluster, maka lihat Simpul gagal untuk bergabung dengan klaster di chapter Troubleshooting.
Contoh output adalah sebagai berikut. Beberapa baris adalah output sementara node dibuat. Salah satu baris terakhir dari output adalah baris contoh berikutnya.
[✔] created 1 nodegroup(s) in cluster "
my-cluster
" -
-
(Opsional) Menyebarkan aplikasi sampel untuk menguji cluster Anda dan Linux simpul.
Kami merekomendasikan pemblokiran Pod akses ke IMDS jika kondisi berikut benar:
Anda berencana untuk menetapkan IAM peran untuk semua Kubernetes akun layanan sehingga Pods hanya memiliki izin minimum yang mereka butuhkan.
Tidak Pods di klaster memerlukan akses ke layanan metadata EC2 instans Amazon (IMDS) untuk alasan lain, seperti mengambil arus. Wilayah AWS
Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja
.
-
- AWS Management Console
-
Langkah 1: Untuk meluncurkan self-managed Linux node menggunakan AWS Management Console
-
Unduh versi terbaru dari AWS CloudFormation template.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
-
Tunggu status klaster Anda ditampilkan sebagai
ACTIVE
. Jika Anda meluncurkan node Anda sebelum cluster aktif, node gagal mendaftar dengan cluster dan Anda harus meluncurkannya kembali. -
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan dan kemudian pilih Dengan sumber daya baru (standar).
-
Untuk Menentukan templat, pilih Unggah sebuah file templat dan kemudian pilih Pilih file.
-
Pilih
file yang Anda unduh.amazon-eks-nodegroup.yaml
-
Pilih Selanjutnya.
-
Pada halaman Tentukan detail tumpukan, masukkan parameter berikut yang sesuai, lalu pilih Berikutnya:
-
Nama tumpukan: Pilih nama tumpukan untuk tumpukan AWS CloudFormation Anda. Misalnya, Anda bisa menyebutnya
. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam Wilayah AWS dan Akun AWS tempat Anda membuat cluster.my-cluster-nodes
-
ClusterName: Masukkan nama yang Anda gunakan saat membuat EKS cluster Amazon Anda. Nama ini harus sama dengan nama cluster atau node Anda tidak dapat bergabung dengan cluster.
-
ClusterControlPlaneSecurityGroup: Pilih SecurityGroupsnilai dari AWS CloudFormation output yang Anda hasilkan saat Anda membuat VPC.
Langkah-langkah berikut menunjukkan satu operasi untuk mengambil grup yang berlaku.
Buka EKS konsol Amazon di https://console.aws.amazon.com/eks/rumah#/cluster
. -
Pilih nama cluster.
-
Pilih tab Jaringan.
-
Gunakan nilai grup keamanan tambahan sebagai referensi saat memilih dari daftar ClusterControlPlaneSecurityGrouptarik-turun.
-
NodeGroupName: Masukkan nama untuk grup node Anda. Nama ini dapat digunakan nanti untuk mengidentifikasi grup node Auto Scaling yang dibuat untuk node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa.
-
NodeAutoScalingGroupMinSize: Masukkan jumlah minimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
-
NodeAutoScalingGroupDesiredCapacity: Masukkan jumlah node yang diinginkan untuk diskalakan saat tumpukan Anda dibuat.
-
NodeAutoScalingGroupMaxSize: Masukkan jumlah maksimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
-
NodeInstanceType: Pilih jenis instance untuk node Anda. Untuk informasi selengkapnya, lihat Pilih jenis instans EC2 node Amazon yang optimal.
-
NodeImageIdSSMParam: Diisi sebelumnya dengan parameter Amazon EC2 Systems Manager dari Amazon baru-baru ini yang EKS dioptimalkan AMI untuk variabel Kubernetes versi. Untuk menggunakan yang berbeda Kubernetes versi minor didukung dengan AmazonEKS, ganti
dengan versi lain yang didukung. Kami merekomendasikan untuk menentukan hal yang sama Kubernetes versi sebagai cluster Anda.1.XX
Anda juga dapat mengganti
dengan AMI tipe yang berbeda. Untuk informasi selengkapnya, lihat Ambil Amazon Linux yang direkomendasikan AMI IDs.amazon-linux-2
catatan
EKSNode Amazon AMI didasarkan pada Amazon Linux. Anda dapat melacak peristiwa keamanan atau privasi untuk Amazon Linux 2 di Pusat Keamanan Amazon Linux
atau berlangganan RSSfeed terkait. Kejadian keamanan dan privasi mencakup gambaran umum mengenai masalah, paket apa yang terpengaruh, dan cara memperbarui instans Anda untuk memperbaiki masalah tersebut. -
NodeImageId: (Opsional) Jika Anda menggunakan kustom Anda sendiri AMI (bukan Amazon EKS dioptimalkanAMI), masukkan AMI ID node untuk Anda Wilayah AWS. Jika Anda menentukan nilai di sini, itu akan mengganti nilai apa pun di bidang. NodeImageIdSSMParam
-
NodeVolumeSize: Tentukan ukuran volume root untuk node Anda, di GiB.
-
NodeVolumeType: Tentukan jenis volume root untuk node Anda.
-
KeyName: Masukkan nama EC2 SSH key pair Amazon yang dapat Anda gunakan untuk terhubung menggunakan SSH ke node Anda setelah diluncurkan. Jika Anda belum memiliki EC2 key pair Amazon, Anda dapat membuatnya di AWS Management Console. Untuk informasi selengkapnya, lihat pasangan EC2 kunci Amazon di Panduan EC2 Pengguna Amazon.
catatan
Jika Anda tidak menyediakan key pair di sini, pembuatan AWS CloudFormation stack gagal.
-
BootstrapArguments: Tentukan argumen opsional apa pun untuk diteruskan ke skrip bootstrap node, seperti
kubelet
argumen tambahan. Untuk informasi lebih lanjut, lihat informasi penggunaan skrip bootstrapdi GitHub. Untuk menyebarkan grup simpul yang:
-
dapat menetapkan jumlah alamat IP yang jauh lebih tinggi untuk Pods dari konfigurasi default, lihatTetapkan lebih banyak alamat IP ke EKS node Amazon dengan awalan.
-
dapat menetapkan
IPv4
alamat ke Pods dari yang berbeda CIDR blok dari contoh, lihatTerapkan pods di subnet alternatif dengan jaringan khusus. -
dapat menetapkan
IPv6
alamat ke Pods dan layanan, lihatTetapkan IPv6 alamat ke cluster, pods, dan layanan. -
menggunakan
containerd
runtime, Anda harus menyebarkan grup node menggunakan file.config
Untuk informasi selengkapnya, lihat Uji migrasi Amazon Linux 2 dari Docker ke containerd. -
tidak memiliki akses internet outbound, lihatMenyebarkan kluster pribadi dengan akses internet terbatas.
-
-
D isableIMDSv 1: Secara default, setiap node mendukung Layanan Metadata Instance Versi 1 (IMDSv1) dan. IMDSv2 Anda dapat menonaktifkanIMDSv1. Untuk mencegah node future dan Pods dalam kelompok simpul dari menggunakanMDSv1, atur D isableIMDSv 1 ke true. Untuk informasi selengkapnyaIMDS, lihat Mengonfigurasi layanan metadata instance. Untuk informasi selengkapnya tentang membatasi akses ke node Anda, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja
. -
VpcId: Masukkan ID untuk VPCyang Anda buat.
-
Subnet: Pilih subnet yang Anda buat untuk Anda. VPC Jika Anda membuat Anda VPC menggunakan langkah-langkah yang dijelaskan dalamBuat Amazon VPC untuk EKS klaster Amazon Anda, tentukan hanya subnet pribadi di dalam VPC untuk node Anda untuk diluncurkan. Anda dapat melihat subnet mana yang bersifat pribadi dengan membuka setiap subnet link dari tab Networking cluster Anda.
penting
-
Jika salah satu subnet adalah subnet publik, maka mereka harus mengaktifkan pengaturan tugas alamat IP publik otomatis. Jika pengaturan tidak diaktifkan untuk subnet publik, maka node apa pun yang Anda terapkan ke subnet publik tersebut tidak akan diberi alamat IP publik dan tidak akan dapat berkomunikasi dengan cluster atau layanan lainnya. AWS Jika subnet digunakan sebelum 26 Maret 2020 menggunakan salah satu EKS AWS CloudFormation VPCtemplat Amazon, atau dengan menggunakan
eksctl
, maka penetapan alamat IP publik otomatis dinonaktifkan untuk subnet publik. Untuk informasi tentang cara mengaktifkan penetapan alamat IP publik untuk subnet, lihat Memodifikasi atributIPv4
pengalamatan publik untuk subnet Anda. Jika node dikerahkan ke subnet pribadi, maka node dapat berkomunikasi dengan cluster dan AWS layanan lainnya melalui gateway. NAT -
Jika subnet tidak memiliki akses internet, pastikan Anda mengetahui pertimbangan dan langkah-langkah tambahan. Menyebarkan kluster pribadi dengan akses internet terbatas
-
Jika Anda memilih AWS Outposts subnet Wavelength, atau Local Zone, subnet tidak boleh diteruskan saat Anda membuat cluster.
-
-
-
Pilih pilihan yang Anda inginkan di halaman Configure stack options, lalu pilih Next.
-
Pilih kotak centang di sebelah kiri Saya akui yang AWS CloudFormation mungkin membuat IAM sumber daya. , dan kemudian pilih Buat tumpukan.
-
Setelah tumpukan Anda selesai dibuat, pilih tumpukan di konsol dan pilih Outputs.
-
Rekam NodeInstanceRoleuntuk grup node yang telah dibuat. Anda memerlukan ini saat mengonfigurasi EKS node Amazon Anda.
Langkah 2: Untuk mengaktifkan node untuk bergabung dengan cluster Anda
catatan
Jika Anda meluncurkan node di dalam private VPC tanpa akses internet keluar, pastikan untuk mengaktifkan node untuk bergabung dengan cluster Anda dari dalamVPC.
-
Periksa untuk melihat apakah Anda sudah memiliki
aws-auth
ConfigMap
.kubectl describe configmap -n kube-system aws-auth
-
Jika Anda ditampilkan
aws-auth
ConfigMap
, maka perbarui sesuai kebutuhan.-
Buka
ConfigMap
untuk mengedit.kubectl edit -n kube-system configmap/aws-auth
-
Tambahkan
mapRoles
entri baru sesuai kebutuhan. Tetapkanrolearn
nilai ke NodeInstanceRolenilai yang Anda rekam dalam prosedur sebelumnya.[...] data: mapRoles: |
- rolearn:
[...]<ARN of instance role (not instance profile)>
username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes -
Simpan file dan keluar dari editor teks Anda.
-
-
Jika Anda menerima kesalahan yang menyatakan "
Error from server (NotFound): configmaps "aws-auth" not found
, maka terapkan stokConfigMap
.-
Unduh peta konfigurasi.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
Dalam
file, aturaws-auth-cm.yaml
rolearn
nilai ke NodeInstanceRolenilai yang Anda rekam dalam prosedur sebelumnya. Anda dapat melakukan ini dengan editor teks, atau dengan mengganti
dan menjalankan perintah berikut:my-node-instance-role
sed -i.bak -e 's|<ARN of instance role (not instance profile)>|
my-node-instance-role
|' aws-auth-cm.yaml -
Terapkan konfigurasi. Perintah ini mungkin memerlukan waktu beberapa menit untuk diselesaikan.
kubectl apply -f aws-auth-cm.yaml
-
-
Perhatikan status simpul Anda dan tunggu sampai simpul mencapai Status
Ready
.kubectl get nodes --watch
Masukkan
Ctrl
+C
untuk kembali ke prompt shell.catatan
Jika Anda menerima kesalahan otorisasi atau jenis sumber daya, lihat Tidak sah atau akses ditolak (kubectl) di topik pemecahan masalah.
Jika node gagal bergabung dengan cluster, maka lihat Simpul gagal untuk bergabung dengan klaster di chapter Troubleshooting.
-
(hanya GPU node) Jika Anda memilih jenis GPU instans dan Amazon EKS dioptimalkan dipercepatAMI, Anda harus menerapkan plugin NVIDIA perangkat untuk Kubernetes
sebagai DaemonSet di cluster Anda. Ganti
dengan NVIDIAs-device-pluginversi/k8vX.X.X
yang Anda inginkan sebelum menjalankan perintah berikut. kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/
vX.X.X
/deployments/static/nvidia-device-plugin.yml
Langkah 3: Tindakan tambahan
-
(Opsional) Menyebarkan aplikasi sampel untuk menguji cluster Anda dan Linux simpul.
-
(Opsional) Jika CNIkebijakan terkelola Amazon EKS _ IAM _Policy (jika Anda memiliki
IPv4
klaster) atau
(yang Anda buat sendiri jika Anda memilikiAmazonEKS_CNI_IPv6_Policy
IPv6
klaster) dilampirkan ke AndaIAM role simpul Amazon EKS, sebaiknya tetapkan ke IAM peran yang Anda kaitkan dengan Kubernetesaws-node
akun layanan sebagai gantinya. Untuk informasi selengkapnya, lihat Konfigurasikan VPC CNI plugin Amazon untuk digunakan IRSA. Kami merekomendasikan pemblokiran Pod akses ke IMDS jika kondisi berikut benar:
Anda berencana untuk menetapkan IAM peran untuk semua Kubernetes akun layanan sehingga Pods hanya memiliki izin minimum yang mereka butuhkan.
Tidak Pods di klaster memerlukan akses ke layanan metadata EC2 instans Amazon (IMDS) untuk alasan lain, seperti mengambil arus. Wilayah AWS
Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja
.
-