View a markdown version of this page

Sesuaikan antarmuka jaringan sekunder di node Amazon EKS - Amazon EKS

Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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.

Sesuaikan antarmuka jaringan sekunder di node Amazon EKS

Lengkapi hal berikut sebelum memulai tutorial:

  • Tinjau pertimbangannya

  • Keakraban dengan cara plugin Amazon VPC CNI untuk Kubernetes membuat antarmuka jaringan sekunder dan menetapkan alamat IP ke Pod. Untuk informasi selengkapnya, lihat Alokasi ENI pada GitHub.

  • Versi 2.12.3 atau yang lebih baru atau versi 1.27.160 atau yang lebih baru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda atau AWS CloudShell. Untuk memeriksa versi Anda saat ini, gunakanaws --version | cut -d / -f2 | cut -d ' ' -f1. Manajer paket sepertiyum,apt-get, atau Homebrew untuk macOS sering memiliki beberapa versi di belakang versi terbaru AWS CLI. Untuk menginstal versi terbaru, lihat Meng instal dan konfigurasi cepat dengan aws configure di Panduan Pengguna Antar AWS muka Baris Perintah. Versi AWS CLI yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat AWS Meng instal CLI ke direktori home Anda di Panduan AWS CloudShell Pengguna.

  • Alat kubectl baris perintah diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memutakhirkan kubectl, lihat Siapkan kubectl dan eksctl .

  • Kami menyarankan Anda menyelesaikan langkah-langkah dalam topik ini di shell Bash. Jika Anda tidak menggunakan shell Bash, beberapa perintah skrip seperti karakter kelanjutan baris dan cara variabel diatur dan digunakan memerlukan penyesuaian untuk shell Anda. Selain itu, aturan kutipan dan pelarian untuk shell Anda mungkin berbeda. Untuk informasi selengkapnya, lihat Menggunakan tanda kutip dengan string di AWS CLI di Panduan Pengguna Antar AWS muka Baris Perintah.

Untuk tutorial ini, kami sarankan menggunakan nilai contoh, kecuali jika dicatat untuk menggantinya. Anda dapat mengganti nilai contoh apa pun saat menyelesaikan langkah-langkah untuk cluster produksi. Kami merekomendasikan menyelesaikan semua langkah di terminal yang sama. Ini karena variabel diatur dan digunakan di seluruh langkah dan tidak akan ada di terminal yang berbeda.

Perintah dalam topik ini diformat menggunakan konvensi yang tercantum dalam Menggunakan contoh AWS CLI. Jika Anda menjalankan perintah dari baris perintah terhadap sumber daya yang berada di Wil AWS ayah yang berbeda dari Wil AWS ayah default yang ditentukan dalam profil AWS CLI yang Anda gunakan, maka Anda --region us-west-2 perlu menambahkan perintah, mengganti us-west-2 dengan AWS wilayah Anda.

Jika Anda ingin menerapkan jaringan khusus ke cluster produksi Anda, lewati keLangkah 2: Konfigurasikan VPC Anda.

Langkah 1: Buat VPC uji dan cluster

Prosedur berikut membantu Anda membuat VPC uji dan cluster serta mengonfigurasi jaringan kustom untuk cluster tersebut. Kami tidak menyarankan menggunakan cluster pengujian untuk beban kerja produksi karena beberapa fitur tidak terkait yang mungkin Anda gunakan pada cluster produksi tidak tercakup dalam topik ini. Untuk informasi selengkapnya, lihat Membuat cluster Amazon EKS.

  1. Jalankan perintah berikut untuk menentukan account_id variabel.

    account_id=$(aws sts get-caller-identity --query Account --output text)
  2. Buat sebuah VPC.

    1. Jika Anda menerapkan ke sistem pengujian, buat VPC menggunakan template Amazon EKS AWS CloudFormation .

      aws cloudformation create-stack --stack-name my-eks-custom-networking-vpc \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml \ --parameters ParameterKey=VpcBlock,ParameterValue=192.168.0.0/24 \ ParameterKey=PrivateSubnet01Block,ParameterValue=192.168.0.64/27 \ ParameterKey=PrivateSubnet02Block,ParameterValue=192.168.0.96/27 \ ParameterKey=PublicSubnet01Block,ParameterValue=192.168.0.0/27 \ ParameterKey=PublicSubnet02Block,ParameterValue=192.168.0.32/27
    2. Tum AWS CloudFormation pukan membutuhkan waktu beberapa menit untuk dibuat. Untuk memeriksa status penerapan tumpukan, jalankan perintah berikut.

      aws cloudformation describe-stacks --stack-name my-eks-custom-networking-vpc --query Stacks\[\].StackStatus --output text

      Jangan lanjutkan ke langkah berikutnya sampai output dari perintah tersebut adaCREATE_COMPLETE.

    3. Tentukan variabel dengan nilai ID subnet pribadi yang dibuat oleh template.

      subnet_id_1=$(aws cloudformation describe-stack-resources --stack-name my-eks-custom-networking-vpc \ --query "StackResources[?LogicalResourceId=='PrivateSubnet01'].PhysicalResourceId" --output text) subnet_id_2=$(aws cloudformation describe-stack-resources --stack-name my-eks-custom-networking-vpc \ --query "StackResources[?LogicalResourceId=='PrivateSubnet02'].PhysicalResourceId" --output text)
    4. Tentukan variabel dengan Availability Zone dari subnet yang diambil pada langkah sebelumnya.

      az_1=$(aws ec2 describe-subnets --subnet-ids $subnet_id_1 --query 'Subnets[*].AvailabilityZone' --output text) az_2=$(aws ec2 describe-subnets --subnet-ids $subnet_id_2 --query 'Subnets[*].AvailabilityZone' --output text)
  3. Buat peran IAM cluster.

    1. Jalankan perintah berikut untuk membuat file JSON kebijakan kepercayaan IAM.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Buat peran IAM cluster Amazon EKS. Jika perlu, ucapkan eks-cluster-role-trust-policy.json kata pengantar dengan jalur di komputer Anda tempat Anda menulis file pada langkah sebelumnya. Perintah mengaitkan kebijakan kepercayaan yang Anda buat pada langkah sebelumnya ke peran. Untuk membuat peran IAM, prinsi pal IAM yang membuat peran harus diberi iam:CreateRole tindakan (izin).

      aws iam create-role --role-name myCustomNetworkingAmazonEKSClusterRole --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    3. Lampirkan kebijakan terkelola Amazon EKS yang dinam AmazonEKSClusterPolicy ai ke peran tersebut. Untuk melampirkan kebijakan IAM ke prinsi pal IAM, prinsipal yang melampirkan kebijakan harus diberi salah satu tindakan IAM berikut (izin): atau. iam:AttachUserPolicy iam:AttachRolePolicy

      aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy --role-name myCustomNetworkingAmazonEKSClusterRole
  4. Buat cluster Amazon EKS dan konfigurasikan perangkat Anda untuk berkomunikasi dengannya.

    1. Buat sebuah klaster.

      aws eks create-cluster --name my-custom-networking-cluster \ --role-arn arn:aws: iam::$account_id:role/myCustomNetworkingAmazonEKSClusterRole \ --resources-vpc-config subnetIds="$subnet_id_1","$subnet_id_2"
      catatan

      Anda mungkin menerima kesalahan bahwa salah satu Zona Ketersediaan dalam permintaan Anda tidak memiliki kapasitas yang cukup untuk membuat cluster Amazon EKS. Jika hal ini terjadi, output galat berisi Availability Zones yang dapat mendukung klaster baru. Cobalah untuk kembali membuat klaster dengan setidaknya dua subnet yang terletak di Availability Zones yang didukung untuk akun Anda. Untuk informasi selengkapnya, lihat Kapasitas tidak mencukupi.

    2. Cluster membutuhkan waktu beberapa menit untuk dibuat. Untuk memeriksa status penerapan cluster, jalankan perintah berikut.

      aws eks describe-cluster --name my-custom-networking-cluster --query cluster.status

      Jangan lanjutkan ke langkah berikutnya sampai output dari perintah tersebut ada"ACTIVE".

    3. Konfigur kubectl asikan untuk berkomunikasi dengan cluster Anda.

      aws eks update-kubeconfig --name my-custom-networking-cluster

Langkah 2: Konfigurasikan VPC Anda

Tutorial ini membutuhkan VPC yang dibuat diLangkah 1: Buat VPC uji dan cluster. Untuk cluster produksi, sesuaikan langkah-langkah yang sesuai untuk VPC Anda dengan mengganti semua nilai contoh dengan nilai Anda sendiri.

  1. Konfirmasikan bahwa plugin Amazon VPC CNI yang Anda instal saat ini untuk Kubernetes adalah versi terbaru. Untuk menentukan versi terbaru untuk jenis add-on Amazon EKS dan memperbarui versi Anda untuk itu, lihatMemperbarui add-on Amazon EKS. Untuk menentukan versi terbaru untuk jenis add-on yang dikelola sendiri dan memperbarui versi Anda untuk itu, lihatTetapkan IP ke Pod dengan Amazon VPC CNI.

  2. Ambil ID VPC cluster Anda dan simpan dalam variabel untuk digunakan pada langkah selanjutnya.

    vpc_id=$(aws eks describe-cluster --name my-custom-networking-cluster --query "cluster.resourcesVpcConfig.vpcId" --output text)
  3. Kaitkan blok Classless Inter-Domain Routing (CIDR) tambahan dengan VPC cluster Anda. Blok CIDR tidak dapat tumpang tindih dengan blok CIDR terkait yang ada.

    1. Lihat blok CIDR saat ini yang terkait dengan VPC Anda.

      aws ec2 describe-vpcs --vpc-ids $vpc_id \ --query 'Vpcs[*].CidrBlockAssociationSet[*].{CIDRBlock: CidrBlock, State: CidrBlockState.State}' --out table

      Contoh output adalah sebagai berikut.

      ---------------------------------- | DescribeVpcs | +-----------------+--------------+ | CIDRBlock | State | +-----------------+--------------+ | 192.168.0.0/24 | associated | +-----------------+--------------+
    2. Kaitkan blok CIDR tambahan ke VPC Anda. Ganti nilai blok CIDR dalam perintah berikut. Untuk informasi selengkapnya, lihat Mengaitkan blok CIDR IPv4 tambahan dengan VPC Anda di Panduan Pengguna Amazon VPC.

      aws ec2 associate-vpc-cidr-block --vpc-id $vpc_id --cidr-block 192.168.1.0/24
    3. Konfirmasikan bahwa blok baru dikaitkan.

      aws ec2 describe-vpcs --vpc-ids $vpc_id --query 'Vpcs[*].CidrBlockAssociationSet[*].{CIDRBlock: CidrBlock, State: CidrBlockState.State}' --out table

      Contoh output adalah sebagai berikut.

      ---------------------------------- | DescribeVpcs | +-----------------+--------------+ | CIDRBlock | State | +-----------------+--------------+ | 192.168.0.0/24 | associated | | 192.168.1.0/24 | associated | +-----------------+--------------+

    Jangan lanjutkan ke langkah berikutnya sampai blok CIDR baru Anda State adaassociated.

  4. Buat subnet sebanyak yang ingin Anda gunakan di setiap Zona Ketersediaan tempat subnet Anda yang ada berada. Tentukan blok CIDR yang ada di dalam blok CIDR yang Anda kaitkan dengan VPC Anda pada langkah sebelumnya.

    1. Buat subnet baru. Ganti nilai blok CIDR dalam perintah berikut. Subnet harus dibuat di blok VPC CIDR yang berbeda dari subnet yang ada, tetapi di Zona Ketersediaan yang sama dengan subnet yang ada. Dalam contoh ini, satu subnet dibuat di blok CIDR baru di setiap Zona Ketersediaan tempat subnet pribadi saat ini ada. ID subnet yang dibuat disimpan dalam variabel untuk digunakan pada langkah selanjutnya. Nilai Name cocok dengan nilai yang ditetapkan ke subnet yang dibuat menggunakan template Amazon EKS VPC pada langkah sebelumnya. Nama tidak diperlukan. Anda dapat menggunakan nama yang berbeda.

      new_subnet_id_1=$(aws ec2 create-subnet --vpc-id $vpc_id --availability-zone $az_1 --cidr-block 192.168.1.0/27 \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=my-eks-custom-networking-vpc-PrivateSubnet01},{Key=kubernetes.io/role/internal-elb,Value=1}]' \ --query Subnet.SubnetId --output text) new_subnet_id_2=$(aws ec2 create-subnet --vpc-id $vpc_id --availability-zone $az_2 --cidr-block 192.168.1.32/27 \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=my-eks-custom-networking-vpc-PrivateSubnet02},{Key=kubernetes.io/role/internal-elb,Value=1}]' \ --query Subnet.SubnetId --output text)
      penting

      Secara default, subnet baru Anda secara implisit terkait dengan tabel rute utama VPC Anda. Tabel rute ini memungkinkan komunikasi antara semua sumber daya yang digunakan di VPC. Namun, tidak memungkinkan komunikasi dengan sumber daya yang memiliki alamat IP yang berada di luar blok CIDR yang terkait dengan VPC Anda. Anda dapat mengaitkan tabel rute Anda sendiri ke subnet Anda untuk mengubah perilaku ini. Untuk informasi selengkapnya, lihat Tabel rute subnet di Panduan Pengguna Amazon VPC.

    2. Lihat subnet saat ini di VPC Anda.

      aws ec2 describe-subnets --filters "Name=vpc-id,Values=$vpc_id" \ --query 'Subnets[*].{SubnetId: SubnetId,AvailabilityZone: AvailabilityZone,CidrBlock: CidrBlock}' \ --output table

      Contoh output adalah sebagai berikut.

      ---------------------------------------------------------------------- | DescribeSubnets | +------------------+--------------------+----------------------------+ | AvailabilityZone | CidrBlock | SubnetId | +------------------+--------------------+----------------------------+ | us-west-2d | 192.168.0.0/27 | subnet-example1 | | us-west-2a | 192.168.0.32/27 | subnet-example2 | | us-west-2a | 192.168.0.64/27 | subnet-example3 | | us-west-2d | 192.168.0.96/27 | subnet-example4 | | us-west-2a | 192.168.1.0/27 | subnet-example5 | | us-west-2d | 192.168.1.32/27 | subnet-example6 | +------------------+--------------------+----------------------------+

      Anda dapat melihat subnet di blok 192.168.1.0 CIDR yang Anda buat berada di Zona Ketersediaan yang sama dengan subnet di blok CIDR. 192.168.0.0

Langkah 3: Konfigurasikan sumber daya Kubernetes

  1. Atur variabel AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG lingkungan ke true dalam aws-node DaemonSet.

    kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true
  2. Ambil ID grup keamanan cluster Anda dan simpan dalam variabel untuk digunakan pada langkah berikutnya. Amazon EKS secara otomatis membuat grup keamanan ini saat Anda membuat cluster.

    cluster_security_group_id=$(aws eks describe-cluster --name my-custom-networking-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId --output text)
  3. Buat sumber daya ENIConfig khusus untuk setiap subnet tempat Anda ingin menerapkan Pod.

    1. Buat file unik untuk setiap konfigurasi antarmuka jaringan.

      Perintah berikut membuat ENIConfig file terpisah untuk dua subnet yang dibuat pada langkah sebelumnya. Nilai untuk name harus unik. Namanya sama dengan Availability Zone tempat subnet berada. Grup keamanan cluster ditugaskan keENIConfig.

      cat >$az_1.yaml <<EOF apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: $az_1 spec: securityGroups: - $cluster_security_group_id subnet: $new_subnet_id_1 EOF
      cat >$az_2.yaml <<EOF apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: $az_2 spec: securityGroups: - $cluster_security_group_id subnet: $new_subnet_id_2 EOF

      Untuk cluster produksi, Anda dapat membuat perubahan berikut pada perintah sebelumnya:

      • Ganti $cluster_security_group_id dengan ID grup keamanan yang ada yang ingin Anda gunakan untuk masing-masing. ENIConfig

      • Sebaiknya beri nama ENIConfigs yang sama dengan Zona Ketersediaan yang akan Anda gunakan ENIConfig untuknya, jika memungkinkan. Anda mungkin perlu menggunakan nama yang berbeda untuk Anda ENIConfigs daripada nama Zona Ketersediaan karena berbagai alasan. Misalnya, jika Anda memiliki lebih dari dua subnet di Zona Ketersediaan yang sama dan ingin menggunakan keduanya dengan jaringan khusus, maka Anda memerlukan beberapa ENIConfigs untuk Zona Ketersediaan yang sama. Karena masing-masing ENIConfig memerlukan nama unik, Anda tidak dapat memberi nama lebih dari satu ENIConfigs nama Zona Ketersediaan Anda.

        Jika ENIConfig nama Anda tidak semuanya sama dengan nama Zona Ketersediaan, maka ganti $az_1 dan $az_2 dengan nama Anda sendiri di perintah sebelumnya dan beri anotasi node Anda dengan eniCon fig nanti dalam tutorial ini.

        catatan

        Jika Anda tidak menentukan grup keamanan yang valid untuk digunakan dengan cluster produksi dan Anda menggunakan:

      • versi 1.8.0 atau yang lebih baru dari plugin Amazon VPC CNI untuk Kubernetes, maka grup keamanan yang terkait dengan antarmuka jaringan elastis utama node digunakan.

      • versi plugin Amazon VPC CNI untuk Kubernetes yang lebih awal dari1.8.0, maka grup keamanan default untuk VPC ditetapkan ke antarmuka jaringan sekunder.

      penting
      • AWS_VPC_K8S_CNI_EXTERNALSNAT=falseadalah pengaturan default dalam konfigurasi untuk plugin Amazon VPC CNI untuk Kubernetes. Jika Anda menggunakan pengaturan default, lalu lintas yang ditujukan untuk alamat IP yang tidak berada dalam salah satu blok CIDR yang terkait dengan VPC Anda menggunakan grup keamanan dan subnet dari antarmuka jaringan utama node Anda. Subnet dan grup keamanan yang ditentukan di Anda ENIConfigs yang digunakan untuk membuat antarmuka jaringan sekunder tidak digunakan untuk lalu lintas ini. Untuk informasi selengkapnya tentang pengaturan ini, lihatAktifkan akses internet keluar untuk Pod.

      • Jika Anda juga menggunakan grup keamanan untuk Pod, grup keamanan yang ditentukan dalam a SecurityGroupPolicy digunakan sebagai pengganti grup keamanan yang ditentukan diENIConfigs. Untuk informasi selengkapnya, lihat Menetapkan grup keamanan ke Pod individual.

    2. Terapkan setiap file sumber daya kustom yang Anda buat ke cluster Anda dengan perintah berikut.

      kubectl apply -f $az_1.yaml kubectl apply -f $az_2.yaml
  4. Konfirmasikan bahwa Anda telah ENIConfigs dibuat.

    kubectl get ENIConfigs

    Contoh output adalah sebagai berikut.

    NAME AGE us-west-2a 117s us-west-2d 105s
  5. Jika Anda mengaktifkan jaringan khusus pada cluster produksi dan menamai ENIConfigs sesuatu selain Zona Ketersediaan tempat Anda menggunakannya, lewati ke langkah berikutnya untuk menerapkan node Amazon EC2.

    Aktifkan Kubernetes untuk menerapkan Zona Keter ENIConfig sediaan secara otomatis ke setiap node Amazon EC2 baru yang dibuat di cluster Anda.

    1. Untuk cluster uji dalam tutorial ini, lewati ke langkah berikutnya.

      Untuk cluster produksi, periksa untuk melihat apakah anotasi dengan kunci k8s.amazonaws.com/eniConfig untuk variabel ENI_CONFIG_ANNOTATION_DEF lingkungan ada di spesifikasi wadah untuk. aws-node DaemonSet

      kubectl describe daemonset aws-node -n kube-system | grep ENI_CONFIG_ANNOTATION_DEF

      Jika output dikembalikan, anotasi ada. Jika tidak ada output yang dikembalikan, maka variabel tidak diatur. Untuk cluster produksi, Anda dapat menggunakan pengaturan ini atau pengaturan pada langkah berikut. Jika Anda menggunakan pengaturan ini, pengaturan tersebut akan menggantikan pengaturan pada langkah berikut. Dalam tutorial ini, pengaturan pada langkah berikutnya digunakan.

    2. Perbarui Anda aws-node DaemonSet untuk menerapkan Zona Keter ENIConfig sediaan secara otomatis ke setiap node Amazon EC2 baru yang dibuat di cluster Anda.

      kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=topology.kubernetes.io/zone

Langkah 4: Terapkan node Amazon EC2

  1. Buat peran IAM node.

    1. Jalankan perintah berikut untuk membuat file JSON kebijakan kepercayaan IAM.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Buat peran IAM dan simpan Nama Sumber Daya Amazon (ARN) yang dikembalikan dalam variabel untuk digunakan pada langkah selanjutnya.

      node_role_arn=$(aws iam create-role --role-name myCustomNetworkingNodeRole --assume-role-policy-document file://"node-role-trust-relationship.json" \ --query Role.Arn --output text)
    3. Lampirkan tiga kebijakan yang dikelola IAM yang diperlukan ke peran IAM.

      aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myCustomNetworkingNodeRole aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myCustomNetworkingNodeRole aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myCustomNetworkingNodeRole
      penting

      Untuk kesederhanaan dalam tutorial ini, kebijakan Amazoneks_CNI_Pol icy dilampirkan ke peran IAM node. Namun, dalam cluster produksi, sebaiknya lampirkan kebijakan ke peran IAM terpisah yang hanya digunakan dengan plugin Amazon VPC CNI untuk Kubernetes. Untuk informasi selengkapnya, lihat Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA.

  2. Buat salah satu jenis grup simpul berikut. Untuk menentukan jenis instans yang ingin Anda terapkan, lihatPilih jenis instans node Amazon EC2 yang optimal. Untuk tutorial ini, lengkapi Managed, Tanpa template peluncuran atau dengan template peluncuran tanpa opsi ID AMI yang ditentukan. Jika Anda akan menggunakan grup node untuk beban kerja produksi, sebaiknya Anda membiasakan diri dengan semua grup node terkel ola dan opsi grup node yang dikelola sendiri sebelum menerapkan grup node.

    • Ter kelola — Menerapkan grup node Anda menggunakan salah satu opsi berikut:

      • Tanpa template peluncuran atau dengan template peluncuran tanpa ID AMI yang ditentukan - Jalankan perintah berikut. Untuk tutorial ini, gunakan nilai contoh. Untuk grup node produksi, ganti semua nilai contoh dengan nilai Anda sendiri. 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.

        aws eks create-nodegroup --cluster-name my-custom-networking-cluster --nodegroup-name my-nodegroup \ --subnets $subnet_id_1 $subnet_id_2 --instance-types t3.medium --node-role $node_role_arn
      • Dengan template peluncuran dengan ID AMI tertentu

        1. Tentukan jumlah maksimum Pod untuk node berdasarkan jenis instans Anda. Untuk informasi selengkapnya, lihat Bagaimana MaxPods ditentukan. Perhatikan nilai untuk digunakan pada langkah berikutnya.

        2. Di template peluncuran Anda, tentukan ID AMI yang dioptimalkan Amazon EKS, atau AMI khusus yang dibangun dari AMI yang dioptimalkan Amazon EKS, lalu terapkan grup node menggunakan template peluncuran dan berikan data pengguna berikut di template peluncuran. Data pengguna ini meneruskan argumen ke dalam NodeConfig spesifikasi. Untuk informasi selengkap NodeConfig nya, lihat referensi NodeConfig API. Anda dapat mengganti 20 dengan nilai dari langkah sebelumnya (disarankan) atau nilai Anda sendiri.

          --- MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: application/node.eks.aws --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster ... kubelet: config: maxPods: 20

          Jika Anda telah membuat AMI khusus yang tidak dibangun dari AMI yang dioptimalkan Amazon EKS, maka Anda perlu membuat konfigurasi sendiri secara kustom.

    • Self-managed

      1. Tentukan jumlah maksimum Pod untuk node berdasarkan jenis instans Anda. Untuk informasi selengkapnya, lihat Bagaimana MaxPods ditentukan. Perhatikan nilai untuk digunakan pada langkah berikutnya.

      2. Terapkan grup node menggunakan instruksi diBuat node Amazon Linux yang dikelola sendiri.

    catatan

    Jika Anda ingin node dalam cluster produksi mendukung jumlah Pod yang jauh lebih tinggi, Anda dapat mengaktifkan delegasi awalan. Misalnya, 110 dikembalikan untuk jenis m5.large instance. Untuk petunjuk tentang cara mengaktifkan kemampuan ini, lihatTetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan. Anda dapat menggunakan kemampuan ini dengan jaringan khusus.

  3. Pembuatan grup node membutuhkan waktu beberapa menit. Anda dapat memeriksa status pembuatan grup node terkelola dengan perintah berikut.

    aws eks describe-nodegroup --cluster-name my-custom-networking-cluster --nodegroup-name my-nodegroup --query nodegroup.status --output text

    Jangan lanjutkan ke langkah berikutnya sampai output yang dikembalikanACTIVE.

  4. Untuk tutorial, Anda dapat melewati langkah ini.

    Untuk cluster produksi, jika Anda tidak memberi nama yang sama dengan Availability Zone tempat Anda menggunakannya, maka Anda harus membuat anotasi node Anda dengan ENIConfig nama yang seharusnya digunakan dengan node tersebut. ENIConfigs Langkah ini tidak diperlukan jika Anda hanya memiliki satu subnet di setiap Zona Ketersediaan dan Anda menamainya ENIConfigs dengan nama yang sama dengan Zona Ketersediaan Anda. Ini karena plugin Amazon VPC CNI untuk Kubernetes secara otomatis mengaitkan node yang benar ENIConfig untuk Anda ketika Anda mengaktifkannya untuk melakukannya di langkah sebelumnya. [custom-networking-automatically-apply-eniconfig]

    1. Dapatkan daftar node di cluster Anda.

      kubectl get nodes

      Contoh output adalah sebagai berikut.

      NAME STATUS ROLES AGE VERSION ip-192-168-0-126.us-west-2.compute.internal Ready <none> 8m49s v1.22.9-eks-810597c ip-192-168-0-92.us-west-2.compute.internal Ready <none> 8m34s v1.22.9-eks-810597c
    2. Tentukan Zona Ketersediaan di mana setiap node berada. Jalankan perintah berikut untuk setiap node yang dikembalikan pada langkah sebelumnya, mengganti alamat IP berdasarkan output sebelumnya.

      aws ec2 describe-instances --filters Name=network-interface.private-dns-name,Values=ip-192-168-0-126.us-west-2.compute.internal \ --query 'Reservations[].Instances[].{AvailabilityZone: Placement.AvailabilityZone, SubnetId: SubnetId}'

      Contoh output adalah sebagai berikut.

      [ { "AvailabilityZone": "us-west-2d", "SubnetId": "subnet-Example5" } ]
    3. Anotasi setiap node dengan ENIConfig yang Anda buat untuk ID subnet dan Zona Ketersediaan. Anda hanya dapat membuat anotasi node dengan satuENIConfig, meskipun beberapa node dapat dianotasi dengan yang sama. ENIConfig Ganti Contoh nilai dengan nilai Anda sendiri.

      kubectl annotate node ip-192-168-0-126.us-west-2.compute.internal k8s.amazonaws.com/eniConfig=EniConfigName1 kubectl annotate node ip-192-168-0-92.us-west-2.compute.internal k8s.amazonaws.com/eniConfig=EniConfigName2
  5. Jika Anda memiliki node dalam cluster produksi dengan Pod yang berjalan sebelum beralih menggunakan fitur jaringan khusus, selesaikan tugas berikut:

    1. Pastikan Anda memiliki node yang tersedia yang menggunakan fitur jaringan khusus.

    2. Tutup dan tiriskan node untuk mematikan Pod dengan anggun. Untuk informasi selengkapnya, lihat Mengur angi Node dengan Aman di dokumentasi Kubernetes.

    3. Hentikan node. Jika node berada dalam grup node terkelola yang ada, Anda dapat menghapus grup node. Jalankan perintah berikut.

      aws eks delete-nodegroup --cluster-name my-custom-networking-cluster --nodegroup-name my-nodegroup

    Hanya simpul-simpul baru yang terdaftar dengan label k8s.amazonaws.com/eniConfig yang menggunakan fitur jaringan kustom.

  6. Konfirmasikan bahwa Pod diberi alamat IP dari blok CIDR yang terkait dengan salah satu subnet yang Anda buat pada langkah sebelumnya.

    kubectl get pods -A -o wide

    Contoh output adalah sebagai berikut.

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-2rkn4 1/1 Running 0 7m19s 192.168.0.92 ip-192-168-0-92.us-west-2.compute.internal <none> <none> kube-system aws-node-k96wp 1/1 Running 0 7m15s 192.168.0.126 ip-192-168-0-126.us-west-2.compute.internal <none> <none> kube-system coredns-657694c6f4-smcgr 1/1 Running 0 56m 192.168.1.23 ip-192-168-0-92.us-west-2.compute.internal <none> <none> kube-system coredns-657694c6f4-stwv9 1/1 Running 0 56m 192.168.1.28 ip-192-168-0-92.us-west-2.compute.internal <none> <none> kube-system kube-proxy-jgshq 1/1 Running 0 7m19s 192.168.0.92 ip-192-168-0-92.us-west-2.compute.internal <none> <none> kube-system kube-proxy-wx9vk 1/1 Running 0 7m15s 192.168.0.126 ip-192-168-0-126.us-west-2.compute.internal <none> <none>

    Anda dapat melihat bahwa Pod coredns diberi alamat IP dari blok 192.168.1.0 CIDR yang Anda tambahkan ke VPC Anda. Tanpa jaringan khusus, mereka akan diberi alamat dari blok 192.168.0.0 CIDR, karena itu adalah satu-satunya blok CIDR yang awalnya terkait dengan VPC.

    Jika Pod spec berisihostNetwork=true, itu ditetapkan alamat IP utama dari node tersebut. Itu tidak ditetapkan alamat dari subnet yang Anda tambahkan. Secara default, nilai ini diatur ke false. Nilai ini disetel ke true untuk plugin kube-proxy dan Amazon VPC CNI untuk Pod Kubernetes (aws-node) yang berjalan di cluster Anda. Inilah sebabnya mengapa kube-proxy Pod dan plugin tidak diberi alamat 192.168.1.x di output sebelumnya. aws-node Untuk informasi selengkapnya tentang hostNetwork pengaturan Pod, lihat inti PodSpec v1 di referensi API Kubernetes.

Langkah 5: Hapus sumber daya tutorial

Setelah Anda menyelesaikan tutorial, kami sarankan Anda menghapus sumber daya yang Anda buat. Anda kemudian dapat menyesuaikan langkah-langkah untuk mengaktifkan jaringan khusus untuk cluster produksi.

  1. Jika grup node yang Anda buat hanya untuk pengujian, maka hapus.

    aws eks delete-nodegroup --cluster-name my-custom-networking-cluster --nodegroup-name my-nodegroup
  2. Bahkan setelah output AWS CLI mengatakan bahwa cluster dihapus, proses penghapusan mungkin tidak benar-benar selesai. Proses penghapusan membutuhkan waktu beberapa menit. Konfirmasikan bahwa itu selesai dengan menjalankan perintah berikut.

    aws eks describe-nodegroup --cluster-name my-custom-networking-cluster --nodegroup-name my-nodegroup --query nodegroup.status --output text

    Jangan lanjutkan sampai output yang dikembalikan mirip dengan output berikut.

    An error occurred (ResourceNotFoundException) when calling the DescribeNodegroup operation: No node group found for name: my-nodegroup.
  3. Jika grup node yang Anda buat hanya untuk pengujian, maka hapus peran IAM node.

    1. Lepaskan kebijakan dari peran.

      aws iam detach-role-policy --role-name myCustomNetworkingNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam detach-role-policy --role-name myCustomNetworkingNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly aws iam detach-role-policy --role-name myCustomNetworkingNodeRole --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
    2. Hapus peran.

      aws iam delete-role --role-name myCustomNetworkingNodeRole
  4. Hapus klaster .

    aws eks delete-cluster --name my-custom-networking-cluster

    Konfirmasikan cluster dihapus dengan perintah berikut.

    aws eks describe-cluster --name my-custom-networking-cluster --query cluster.status --output text

    Ketika output yang mirip dengan berikut ini dikembalikan, cluster berhasil dihapus.

    An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-custom-networking-cluster.
  5. Hapus peran IAM cluster.

    1. Lepaskan kebijakan dari peran.

      aws iam detach-role-policy --role-name myCustomNetworkingAmazonEKSClusterRole --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy
    2. Hapus peran.

      aws iam delete-role --role-name myCustomNetworkingAmazonEKSClusterRole
  6. Hapus subnet yang Anda buat pada langkah sebelumnya.

    aws ec2 delete-subnet --subnet-id $new_subnet_id_1 aws ec2 delete-subnet --subnet-id $new_subnet_id_2
  7. Hapus VPC yang Anda buat.

    aws cloudformation delete-stack --stack-name my-eks-custom-networking-vpc