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 di AWS Outposts
Topik ini menjelaskan bagaimana Anda dapat meluncurkan grup Auto Scaling dari node Amazon Linux di Outpost yang mendaftar dengan cluster Amazon Anda. EKS Cluster dapat berada di AWS Cloud atau di Pos Luar.
Prasyarat
-
Pos terdepan yang ada. Untuk informasi lebih lanjut, lihat Apa yang dimaksud dengan AWS Outposts.
-
EKSCluster Amazon yang ada. Untuk menyebarkan cluster di AWS Cloud, lihatBuat EKS klaster Amazon. Untuk menyebarkan cluster di Outpost, lihat. Buat EKS kluster Amazon lokal AWS Outposts untuk ketersediaan tinggi
-
Misalkan Anda membuat node Anda di cluster di AWS Cloud dan Anda memiliki subnet di Wilayah AWS mana Anda memiliki AWS Outposts, AWS Wavelength, atau AWS Local Zones diaktifkan. Kemudian, subnet tersebut seharusnya tidak diteruskan saat Anda membuat cluster Anda. Jika Anda membuat node di cluster di Outpost, Anda pasti telah melewati subnet Outpost saat membuat cluster Anda.
-
(Direkomendasikan untuk klaster di AWS Cloud) 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 Mengkonfigurasi Amazon VPC CNI plugin for Kubernetes untuk menggunakan peran IAM untuk akun layanan (IRSA). Cluster lokal tidak mendukung IAM peran untuk akun layanan.
Anda dapat membuat grup node Amazon Linux yang dikelola sendiri dengan eksctl
atau AWS Management Console (dengan AWS CloudFormation templat). Anda juga dapat menggunakan Terraform
- eksctl
-
Prasyarat
Versi
0.187.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 Linux node yang dikelola sendiri menggunakan
eksctl
-
Jika klaster Anda aktif AWS Cloud dan CNIkebijakan terkelola Amazon EKS _ IAM _Policy dilampirkan ke AndaIAM role simpul Amazon EKS, sebaiknya tetapkan ke IAM peran yang Anda kaitkan dengan akun Kubernetes
aws-node
layanan. Untuk informasi selengkapnya, lihat Mengkonfigurasi Amazon VPC CNI plugin for Kubernetes untuk menggunakan peran IAM untuk akun layanan (IRSA). Jika klaster Anda berada di Outpost Anda, kebijakan harus dilampirkan ke peran node Anda. -
Perintah berikutnya membuat grup simpul dalam klaster yang ada. Cluster harus dibuat menggunakan
eksctl
. 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. Jika klaster Anda ada di Outpost, gantimy-cluster
dengan ID subnet Outpost. Jika kluster Anda ada di AWS Cloud, gantiid
dengan ID subnet yang tidak Anda tentukan saat membuat klaster. Gantiid
dengan jenis instance yang didukung oleh Outpost Anda. Ganti sisanyainstance-type
dengan nilai Anda sendiri. Node dibuat dengan Kubernetes versi yang sama dengan bidang kontrol, secara default.example values
Ganti
dengan jenis instance yang tersedia di Outpost Anda.instance-type
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.
eksctl create nodegroup --cluster
my-cluster
--nameal-nodes
--node-typeinstance-type
\ --nodes3
--nodes-min1
--nodes-max4
--managed=false --node-volume-type gp2 --subnet-ids subnet-id
Jika klaster Anda diterapkan di AWS Cloud:
-
Grup node yang Anda terapkan dapat menetapkan
IPv4
alamat Pods dari CIDR blok yang berbeda dari instance. Untuk informasi selengkapnya, lihat Jaringan khusus untuk pod. -
Grup node yang Anda terapkan tidak memerlukan akses internet keluar. Untuk informasi selengkapnya, lihat Menyebarkan kluster pribadi dengan akses internet terbatas.
Untuk daftar lengkap semua opsi dan default yang tersedia, lihat AWS Outposts Support dalam dokumentasi
. eksctl
Jika node gagal bergabung dengan cluster, maka lihat Simpul gagal untuk bergabung dengan klaster masuk Memecahkan masalah dengan EKS cluster dan node Amazon dan Tidak dapat menggabungkan node ke cluster masukMemecahkan masalah kluster Amazon lokal di EKS AWS Outposts.
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 dan Linux node Anda.
-
- AWS Management Console
-
Langkah 1: Untuk meluncurkan node Amazon Linux yang dikelola sendiri 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
-
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
amazon-eks-nodegroup.yaml
file yang Anda unduh pada langkah sebelumnya dan kemudian pilih Berikutnya. -
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.al-nodes
-
ClusterName: Masukkan nama cluster Anda. Jika nama ini tidak cocok dengan nama cluster Anda, 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.
-
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. Jika cluster Anda berjalan di AWS Cloud, maka untuk informasi lebih lanjut, lihatPilih jenis instans EC2 node Amazon yang optimal. Jika cluster Anda berjalan di Outpost, maka Anda hanya dapat memilih jenis instans yang tersedia di Outpost Anda.
-
NodeImageIdSSMParam: Diisi sebelumnya dengan parameter Amazon EC2 Systems Manager dari Amazon baru-baru ini yang EKS dioptimalkan AMI untuk versi variabelKubernetes. Untuk menggunakan versi Kubernetes minor berbeda yang didukung dengan AmazonEKS, ganti
dengan versi lain yang didukung. Sebaiknya tentukan Kubernetes versi yang sama dengan cluster Anda.1.XX
Untuk menggunakan akselerasi Amazon yang EKS dioptimalkanAMI, ganti
denganamazon-linux-2
amazon-linux-2-gpu
. Untuk menggunakan Lengan yang EKS dioptimalkan AmazonAMI, ganti
denganamazon-linux-2
amazon-linux-2-arm64
.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: Ada beberapa argumen opsional yang dapat Anda berikan ke node Anda. Untuk informasi lebih lanjut, lihat informasi penggunaan skrip bootstrap
diGitHub. Jika Anda menambahkan node ke Amazon EKS Local Cluster on AWS Outposts (tempat instance Kubernetes control plane berjalan AWS Outposts) dan cluster tidak memiliki koneksi internet ingress dan egress (juga dikenal sebagai cluster pribadi), maka Anda harus memberikan argumen bootstrap berikut (sebagai satu baris). --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}
-
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 grup node menggunakanIMDSv1, 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. Sebelum memilihVPC, tinjauVPCpersyaratan dan pertimbangan.
-
Subnet: Jika cluster Anda berada di Outpost, maka pilih setidaknya satu subnet pribadi di subnet Anda. VPC Sebelum memilih subnet, tinjau persyaratan dan pertimbangan Subnet. Anda dapat melihat subnet mana yang bersifat pribadi dengan membuka setiap subnet link dari tab Networking cluster Anda.
-
-
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 ketika Anda mengkonfigurasi EKS node Amazon Anda.
Langkah 2: Untuk mengaktifkan node untuk bergabung dengan cluster Anda
-
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
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 masuk Memecahkan masalah dengan EKS cluster dan node Amazon dan Tidak dapat menggabungkan node ke cluster masukMemecahkan masalah kluster Amazon lokal di EKS AWS Outposts.
-
Instal EBS CSI driver Amazon. Untuk informasi selengkapnya, lihat Instalasi
di GitHub. Di bagian Siapkan izin driver, pastikan untuk mengikuti instruksi untuk opsi Menggunakan profil IAM instance. Anda harus menggunakan kelas gp2
penyimpanan. Kelasgp3
penyimpanan tidak didukung.Untuk membuat kelas
gp2
penyimpanan di cluster Anda, selesaikan langkah-langkah berikut.-
Jalankan perintah berikut untuk membuat
gp2-storage-class.yaml
file.cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF
-
Menerapkan manifes ke klaster Anda.
kubectl apply -f gp2-storage-class.yaml
-
-
(hanya GPU node) Jika Anda memilih jenis GPU instans dan Amazon EKS dioptimalkan dipercepatAMI, Anda harus menerapkan plugin NVIDIA perangkat Kubernetes
sebagai a 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 dan Linux node Anda.
-
Jika cluster Anda digunakan di Outpost, lewati langkah ini. Jika klaster Anda digunakan pada AWS Cloud, informasi berikut adalah 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 akun Kubernetes
aws-node
layanan. Untuk informasi selengkapnya, lihat Mengkonfigurasi Amazon VPC CNI plugin for Kubernetes untuk menggunakan peran IAM untuk akun layanan (IRSA).
-