Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Migrasikan aplikasi ke grup node baru

Mode fokus
Migrasikan aplikasi ke grup node baru - 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.

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.

Topik ini menjelaskan bagaimana Anda dapat membuat grup node baru, dengan anggun memigrasikan aplikasi yang ada ke grup baru, dan menghapus grup node lama dari cluster Anda. Anda dapat bermigrasi ke grup simpul baru menggunakan eksctl atau AWS Management Console.

eksctl

Migrasikan aplikasi Anda ke grup node baru dengan eksctl

Untuk informasi selengkapnya tentang penggunaan eksctl untuk migrasi, lihat Nodegroup tidak dikelola dalam dokumentasi. eksctl

Prosedur ini membutuhkan eksctl versi 0.204.0 atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

eksctl version

Untuk petunjuk tentang cara menginstal atau meningkatkaneksctl, lihat Instalasi dalam eksctl dokumentasi.

catatan

Prosedur ini hanya bekerja untuk grup klaster dan simpul yang dibuat dengan eksctl.

  1. Ambil nama grup node yang ada, ganti my-cluster dengan nama cluster Anda.

    eksctl get nodegroups --cluster=my-cluster

    Contoh output adalah sebagai berikut.

    CLUSTER NODEGROUP CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID default standard-nodes 2019-05-01T22:26:58Z 1 4 3 t3.medium ami-05a71d034119ffc12
  2. Luncurkan grup node baru eksctl dengan perintah berikut. Dalam perintah, ganti setiap example value dengan nilai Anda sendiri. Nomor versi tidak boleh lebih lambat dari versi Kubernetes untuk pesawat kontrol Anda. Selain itu, tidak boleh lebih dari dua versi minor lebih awal dari versi Kubernetes untuk pesawat kontrol Anda. Kami menyarankan Anda menggunakan versi yang sama dengan pesawat kontrol Anda.

    Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:

    • Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.

    • Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata EC2 instans Amazon (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS

      Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja.

      Untuk memblokir akses Pod ke IMDS, tambahkan --disable-pod-imds opsi ke perintah berikut.

      catatan

      Untuk lebih banyak flag yang tersedia dan deskripsinya, lihat https://eksctl.io/.

    eksctl create nodegroup \ --cluster my-cluster \ --version 1.32 \ --name standard-nodes-new \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --managed=false
  3. Setelah perintah sebelumnya selesai, verifikasi bahwa semua simpul Anda telah mencapai status Ready dengan perintah berikut:

    kubectl get nodes
  4. Hapus grup node asli dengan perintah berikut. Dalam perintah, ganti setiap example value dengan nama grup cluster dan node Anda:

    eksctl delete nodegroup --cluster my-cluster --name standard-nodes-old

AWS Management Console dan AWS CLI

Migrasikan aplikasi Anda ke grup node baru dengan AWS Management Console dan CLI AWS

  1. Luncurkan grup node baru dengan mengikuti langkah-langkah yang diuraikan dalam Buat node Amazon Linux yang dikelola sendiri.

  2. Setelah tumpukan Anda selesai dibuat, pilih tumpukan di konsol dan pilih Outputs.

  3. Rekam NodeInstanceRoleuntuk grup node yang telah dibuat. Anda memerlukan ini untuk menambahkan simpul Amazon EKS baru ke klaster Anda.

    catatan

    Jika Anda melampirkan kebijakan IAM tambahan ke peran IAM grup node lama Anda, lampirkan kebijakan yang sama tersebut ke peran IAM grup node baru Anda untuk mempertahankan fungsionalitas tersebut pada grup baru. Ini berlaku bagi Anda jika Anda menambahkan izin untuk Kubernetes Cluster Autoscaler, misalnya.

  4. Perbarui grup keamanan untuk kedua grup simpul sehingga mereka dapat berkomunikasi satu sama lain. Untuk informasi selengkapnya, lihat Lihat persyaratan grup keamanan Amazon EKS untuk cluster.

    1. Rekam grup keamanan IDs untuk kedua grup node. Ini ditampilkan sebagai NodeSecurityGroupnilai dalam output AWS CloudFormation stack.

      Anda dapat menggunakan perintah AWS CLI berikut untuk mendapatkan grup keamanan IDs dari nama tumpukan. Dalam perintah ini, oldNodes adalah nama AWS CloudFormation tumpukan untuk tumpukan node lama Anda, dan newNodes merupakan nama tumpukan tempat Anda bermigrasi. Ganti setiap example value dengan nilai-nilai Anda sendiri.

      oldNodes="old_node_CFN_stack_name" newNodes="new_node_CFN_stack_name" oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \ --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \ --output text) newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \ --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \ --output text)
    2. Tambahkan aturan masuk ke setiap grup keamanan simpul sehingga mereka menerima lalu lintas dari satu sama lain.

      Perintah AWS CLI berikut menambahkan aturan masuk ke setiap grup keamanan yang memungkinkan semua lalu lintas pada semua protokol dari grup keamanan lainnya. Konfigurasi ini memungkinkan Pod di setiap grup node untuk berkomunikasi satu sama lain saat Anda memigrasikan beban kerja Anda ke grup baru.

      aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \ --source-group $newSecGroup --protocol -1 aws ec2 authorize-security-group-ingress --group-id $newSecGroup \ --source-group $oldSecGroup --protocol -1
  5. Edit configmap aws-auth untuk memetakan peran instans simpul baru di RBAC.

    kubectl edit configmap -n kube-system aws-auth

    Tambahkan entri mapRoles baru untuk grup simpul baru.

    apiVersion: v1 data: mapRoles: | - rolearn: ARN of instance role (not instance profile) username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes> - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

    Ganti ARN of instance role (not instance profile) cuplikan dengan NodeInstanceRolenilai yang Anda rekam pada langkah sebelumnya. Kemudian, simpan dan tutup file untuk menerapkan configmap yang diperbarui.

  6. Perhatikan status simpul Anda dan tunggu simpul baru Anda bergabung dengan klaster dan mencapai status Ready tersebut.

    kubectl get nodes --watch
  7. (Opsional) Jika Anda menggunakan Kubernetes Cluster Autoscaler, turunkan skala deployment ke nol (0) replika untuk menghindari tindakan penskalaan yang bertentangan.

    kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
  8. Gunakan perintah berikut untuk mencemari setiap node yang ingin Anda hapus. NoSchedule Hal ini agar Pod baru tidak dijadwalkan atau dijadwal ulang pada node yang Anda ganti. Untuk informasi selengkapnya, lihat Taints and Tolerations dalam dokumentasi Kubernetes.

    kubectl taint nodes node_name key=value:NoSchedule

    Jika Anda memutakhirkan node Anda ke versi Kubernetes baru, Anda dapat mengidentifikasi dan mencemari semua node dari versi Kubernetes tertentu (dalam hal ini,) dengan cuplikan kode berikut. 1.30 Nomor versi tidak boleh lebih lambat dari versi Kubernetes dari pesawat kontrol Anda. Ini juga tidak boleh lebih dari dua versi minor lebih awal dari versi Kubernetes dari pesawat kontrol Anda. Kami menyarankan Anda menggunakan versi yang sama dengan pesawat kontrol Anda.

    K8S_VERSION=1.30 nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Tainting $node" kubectl taint nodes $node key=value:NoSchedule done
  9. Tentukan penyedia DNS klaster Anda.

    kubectl get deployments -l k8s-app=kube-dns -n kube-system

    Contoh output adalah sebagai berikut. Cluster ini menggunakan CoreDNS untuk resolusi DNS, tetapi klaster Anda dapat kembali sebagai gantinya): kube-dns

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE coredns 1 1 1 1 31m
  10. Jika deployment Anda saat ini berjalan kurang dari dua replika, skalakan deployment menjadi dua replika. Ganti coredns dengan kubedns jika output perintah Anda sebelumnya mengembalikannya.

    kubectl scale deployments/coredns --replicas=2 -n kube-system
  11. Keluarkan setiap simpul yang Anda ingin hapus dari klaster Anda dengan perintah berikut:

    kubectl drain node_name --ignore-daemonsets --delete-local-data

    Jika Anda memutakhirkan node Anda ke versi Kubernetes baru, identifikasi dan tiriskan semua node dari versi Kubernetes tertentu (dalam hal ini,1.30) dengan cuplikan kode berikut.

    K8S_VERSION=1.30 nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-local-data done
  12. Setelah node lama Anda selesai menguras, cabut aturan masuk grup keamanan yang Anda otorisasi sebelumnya. Kemudian, hapus AWS CloudFormation tumpukan untuk mengakhiri instance.

    catatan

    Jika Anda melampirkan kebijakan IAM tambahan ke peran IAM grup node lama Anda, seperti menambahkan izin untuk Kubernetes Cluster Autoscaler, lepaskan kebijakan tambahan tersebut dari peran tersebut sebelum Anda dapat menghapus tumpukan Anda. AWS CloudFormation

    1. Cabut aturan masuk yang Anda buat untuk grup keamanan node Anda sebelumnya. Dalam perintah ini, oldNodes adalah nama AWS CloudFormation tumpukan untuk tumpukan node lama Anda, dan newNodes merupakan nama tumpukan tempat Anda bermigrasi.

      oldNodes="old_node_CFN_stack_name" newNodes="new_node_CFN_stack_name" oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \ --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \ --output text) newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \ --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \ --output text) aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \ --source-group $newSecGroup --protocol -1 aws ec2 revoke-security-group-ingress --group-id $newSecGroup \ --source-group $oldSecGroup --protocol -1
    2. Buka konsol AWS CloudFormation .

    3. Pilih tumpukan simpul lama Anda.

    4. Pilih Hapus.

    5. Di kotak dialog Hapus tumpukan konfirmasi, pilih Hapus tumpukan.

  13. Edit aws-auth configmap untuk menghapus peran instans simpul lama dari RBAC.

    kubectl edit configmap -n kube-system aws-auth

    Hapus mapRoles entri untuk grup simpul lama.

    apiVersion: v1 data: mapRoles: | - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: arn:aws: iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes>

    Simpan dan tutup file untuk menerapkan configmap yang diperbarui.

  14. (Opsional) Jika Anda menggunakan Autoscaler Klaster Kubernetes, skalakan kembali deployment ke satu replika.

    catatan

    Anda juga harus menandai grup Auto Scaling baru Anda dengan tepat (misalnya,k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster) dan memperbarui perintah untuk penerapan Cluster Autoscaler Anda untuk menunjuk ke grup Auto Scaling yang baru ditandai. Untuk informasi selengkapnya, lihat Cluster Autoscaler di. AWS

    kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
  15. (Opsional) Verifikasi bahwa Anda menggunakan versi terbaru dari plugin Amazon VPC CNI untuk Kubernetes. Anda mungkin perlu memperbarui versi CNI untuk menggunakan jenis instans terbaru yang didukung. Untuk informasi selengkapnya, lihat Tetapkan IPs ke Pod dengan Amazon VPC CNI.

  16. Jika klaster Anda menggunakan kube-dns resolusi DNS (lihat[migrate-determine-dns-step]), skalakan kube-dns penerapan ke satu replika.

    kubectl scale deployments/kube-dns --replicas=1 -n kube-system

Di halaman ini

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.