IPv6alamat untuk cluster,Pods, dan services - Amazon EKS

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.

IPv6alamat untuk cluster,Pods, dan services

Secara default, Kubernetes berikan IPv4 alamat ke alamat Anda Pods danservices. Alih-alih menetapkan IPv4 alamat ke Pods danservices, Anda dapat mengonfigurasi klaster Anda untuk menetapkan IPv6 alamat kepada mereka. Amazon EKS tidak mendukung dual-stacked Pods atauservices, meskipun Kubernetes dalam versi 1.23 dan yang lebih baru. Akibatnya, Anda tidak dapat menetapkan keduanya IPv4 dan IPv6 alamat ke Pods danservices.

Anda memilih keluarga IP mana yang ingin Anda gunakan untuk cluster Anda saat Anda membuatnya. Anda tidak dapat mengubah keluarga setelah Anda membuat cluster.

Pertimbangan untuk menggunakan IPv6 keluarga untuk cluster Anda

  • Anda harus membuat cluster baru dan menentukan bahwa Anda ingin menggunakan IPv6 keluarga untuk cluster itu. Anda tidak dapat mengaktifkan IPv6 keluarga untuk klaster yang Anda perbarui dari versi sebelumnya. Untuk petunjuk tentang cara membuat klaster baru, lihat Membuat klaster Amazon EKS.

  • Versi add-on Amazon VPC CNI yang Anda terapkan ke cluster Anda harus versi atau yang lebih baru. 1.10.1 Versi ini atau yang lebih baru digunakan secara default. Setelah menerapkan add-on, Anda tidak dapat menurunkan versi add-on Amazon VPC CNI ke versi yang lebih rendah daripada 1.10.1 tanpa terlebih dahulu menghapus semua node di semua grup node di cluster Anda.

  • WindowsPodsdan services tidak didukung.

  • Jika Anda menggunakan node Amazon EC2, Anda harus mengonfigurasi add-on Amazon VPC CNI dengan delegasi awalan IP dan. IPv6 Jika Anda memilih IPv6 keluarga saat membuat cluster Anda, 1.10.1 versi add-on default ke konfigurasi ini. Ini adalah kasus untuk add-on Amazon EKS yang dikelola sendiri atau Amazon. Untuk informasi selengkapnya tentang delegasi awalan IP, lihat. Tingkatkan jumlah alamat IP yang tersedia untuk node Amazon EC2 Anda

  • Saat Anda membuat klaster, VPC dan subnet yang Anda tentukan harus memiliki blok IPv6 CIDR yang ditetapkan ke VPC dan subnet yang Anda tentukan. Mereka juga harus memiliki blok IPv4 CIDR yang ditugaskan untuk mereka. Ini karena, bahkan jika Anda hanya ingin menggunakanIPv6, VPC masih memerlukan blok IPv4 CIDR untuk berfungsi. Untuk informasi selengkapnya, lihat Mengaitkan blok IPv6 CIDR dengan VPC Anda di Panduan Pengguna Amazon VPC.

  • Saat Anda membuat cluster dan node, Anda harus menentukan subnet yang dikonfigurasi untuk menetapkan alamat secara otomatisIPv6. Jika tidak, Anda tidak dapat menerapkan cluster dan node Anda. Secara default, konfigurasi ini dinonaktifkan. Untuk informasi selengkapnya, lihat Memodifikasi atribut IPv6 pengalamatan untuk subnet Anda di Panduan Pengguna Amazon VPC.

  • Tabel rute yang ditetapkan ke subnet Anda harus memiliki rute untuk IPv6 alamat. Untuk informasi selengkapnya, lihat Memigrasi ke IPv6 dalam Panduan Pengguna Amazon VPC.

  • Grup keamanan Anda harus mengizinkan IPv6 alamat. Untuk informasi selengkapnya, lihat Memigrasi ke IPv6 dalam Panduan Pengguna Amazon VPC.

  • Anda hanya dapat menggunakan IPv6 dengan node Amazon EC2 atau Fargate AWS berbasis Nitro.

  • Anda tidak dapat menggunakan IPv6 Kelompok keamanan untuk Pods dengan node Amazon EC2. Namun, Anda dapat menggunakannya dengan node Fargate. Jika Anda memerlukan grup keamanan terpisah untuk individuPods, lanjutkan menggunakan IPv4 keluarga dengan node Amazon EC2, atau gunakan node Fargate sebagai gantinya.

  • Jika sebelumnya Anda menggunakan jaringan khusus untuk membantu mengurangi kelelahan alamat IP, Anda dapat menggunakannya sebagai gantinya. IPv6 Anda tidak dapat menggunakan jaringan khusus denganIPv6. Jika Anda menggunakan jaringan khusus untuk isolasi jaringan, maka Anda mungkin perlu terus menggunakan jaringan khusus dan IPv4 keluarga untuk cluster Anda.

  • Anda tidak dapat menggunakan IPv6 dengan AWS Outposts.

  • Podsdan hanya services diberi IPv6 alamat. Mereka tidak diberi IPv4 alamat. Karena Pods dapat berkomunikasi ke IPv4 titik akhir melalui NAT pada instance itu sendiri, DNS64 dan NAT64 tidak diperlukan. Jika lalu lintas membutuhkan alamat IP publik, lalu lintas kemudian alamat jaringan sumber diterjemahkan ke IP publik.

  • IPv6Alamat sumber dari alamat jaringan Pod bukan sumber yang diterjemahkan ke IPv6 alamat node saat berkomunikasi di luar VPC. Ini dirutekan menggunakan gateway internet atau gateway internet khusus egres.

  • Semua node diberi IPv6 alamat IPv4 dan.

  • Driver CSI Amazon FSx for Lustre tidak didukung.

  • Anda dapat menggunakan versi 2.3.1 atau yang lebih baru dari AWS Load Balancer Controller untuk memuat aplikasi keseimbangan atau lalu lintas jaringan ke IPv6 Pods dalam mode IP, tetapi bukan mode instance. Untuk informasi selengkapnya, lihat Apa itu AWS Load Balancer Controller?.

  • Anda harus melampirkan kebijakan IPv6 IAM ke peran IAM node atau CNI IAM Anda. Di antara keduanya, kami sarankan Anda melampirkannya ke peran IAM CNI. Untuk informasi selengkapnya, lihat Buat kebijakan IAM untuk cluster yang menggunakan keluarga IPv6 dan Langkah 1: Buat peran Amazon VPC CNI plugin for Kubernetes IAM.

  • Setiap Fargate Pod menerima IPv6 alamat dari CIDR yang ditentukan untuk subnet tempat ia digunakan. Unit perangkat keras yang mendasari yang menjalankan Fargate Pods mendapatkan IPv6 alamat unik IPv4 dan dari CIDR yang ditugaskan ke subnet tempat unit perangkat keras digunakan.

  • Kami menyarankan Anda melakukan evaluasi menyeluruh terhadap aplikasi, add-on Amazon EKS, dan AWS layanan yang Anda integrasikan sebelum menerapkan clusterIPv6. Ini untuk memastikan bahwa semuanya berfungsi seperti yang diharapkanIPv6.

  • Penggunaan IPv6 titik akhir Layanan Metadata Instans Amazon EC2 tidak didukung dengan Amazon EKS.

  • Saat membuat grup node yang dikelola sendiri dalam cluster yang menggunakan IPv6 keluarga, data pengguna harus menyertakan yang berikut BootstrapArguments untuk bootstrap.shfile yang berjalan saat node start up. Ganti cidr Anda dengan IPv6 CIDR rentang VPC cluster Anda.

    --ip-family ipv6 --service-ipv6-cidr your-cidr

    Jika Anda tidak tahu IPv6 CIDR rentang untuk cluster Anda, Anda dapat melihatnya dengan perintah berikut (memerlukan AWS CLI versi 2.4.9 atau yang lebih baru).

    aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text

Menerapkan IPv6 cluster dan mengelola node Amazon Linux

Dalam tutorial ini, Anda menerapkan VPC IPv6 Amazon, kluster Amazon EKS bersama IPv6 keluarga, dan grup node terkelola dengan node Amazon EC2 Amazon Linux. Anda tidak dapat menerapkan node Amazon Windows EC2 di IPv6 klaster. Anda juga dapat menerapkan node Fargate ke cluster Anda, meskipun instruksi tersebut tidak disediakan dalam topik ini untuk kesederhanaan.

Sebelum membuat cluster untuk penggunaan produksi, kami sarankan Anda membiasakan diri dengan semua pengaturan dan menyebarkan cluster dengan pengaturan yang memenuhi persyaratan Anda. Untuk informasi lebih lanjut, lihatMembuat klaster Amazon EKS, Grup simpul terkelola dan pertimbangan untuk topik ini. Anda hanya dapat mengaktifkan beberapa pengaturan saat membuat cluster Anda.

Prasyarat

Sebelum memulai tutorial ini, Anda harus menginstal dan mengonfigurasi alat-alat dan sumber daya yang Anda butuhkan berikut untuk membuat dan mengelola sebuah klaster Amazon EKS.

  • Alat baris kubectl perintah diinstal pada perangkat Anda atau AWS CloudShell. Versi dapat sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari Kubernetes versi cluster Anda. Misalnya, jika versi cluster Anda1.29, Anda dapat menggunakan kubectl versi1.28,1.29, atau 1.30 dengan itu. Untuk menginstal atau memutakhirkan kubectl, lihat Menginstal atau memperbarui kubectl.

  • Prinsip keamanan IAM yang Anda gunakan harus memiliki izin untuk bekerja dengan peran Amazon EKS IAM, peran terkait layanan,, VPC, AWS CloudFormation dan sumber daya terkait. Untuk informasi selengkapnya, lihat Kunci tindakan, sumber daya, dan kondisi untuk Amazon Elastic Kubernetes Service dan Menggunakan peran terkait layanan di Panduan Pengguna IAM.

Prosedur disediakan untuk membuat sumber daya dengan salah satu eksctl atau AWS CLI. Anda juga dapat menerapkan sumber daya menggunakan AWS Management Console, tetapi instruksi tersebut tidak disediakan dalam topik ini untuk kesederhanaan.

eksctl
Prasyarat

eksctlversi 0.183.0 atau yang lebih baru diinstal pada komputer Anda. Untuk menginstal atau memperbaruinya, lihat Instalasi di eksctl dokumentasi.

Untuk menyebarkan IPv6 cluster dengan eksctl
  1. Buat file ipv6-cluster.yaml. Salin perintah yang mengikuti ke perangkat Anda. Buat modifikasi berikut pada perintah sesuai kebutuhan dan kemudian jalankan perintah yang dimodifikasi:

    • Ganti my-cluster dengan nama untuk cluster 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 region-code dengan apa pun Wilayah AWS yang didukung oleh Amazon EKS. Untuk daftar Wilayah AWS, lihat titik akhir dan kuota Amazon EKS di panduan Referensi AWS Umum.

    • Nilai untuk version dengan versi cluster Anda. Untuk informasi selengkapnya, lihat Kubernetesversi Amazon EKS yang didukung.

    • Ganti my-nodegroup 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.

    • Ganti t3.medium dengan jenis instans Sistem AWS Nitro apa pun.

    cat >ipv6-cluster.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "X.XX" kubernetesNetworkConfig: ipFamily: IPv6 addons: - name: vpc-cni version: latest - name: coredns version: latest - name: kube-proxy version: latest iam: withOIDC: true managedNodeGroups: - name: my-nodegroup instanceType: t3.medium EOF
  2. Buat cluster Anda.

    eksctl create cluster -f ipv6-cluster.yaml

    Pembuatan cluster membutuhkan waktu beberapa menit. Jangan lanjutkan sampai Anda melihat baris output terakhir, yang terlihat mirip dengan output berikut.

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. Konfirmasikan bahwa default Pods adalah IPv6 alamat yang ditetapkan.

    kubectl get pods -n kube-system -o wide

    Contoh output adalah sebagai berikut.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  4. Konfirmasikan bahwa layanan default adalah IPv6 alamat yang ditetapkan.

    kubectl get services -n kube-system -o wide

    Contoh output adalah sebagai berikut.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  5. (Opsional) Menyebarkan aplikasi sampel atau menyebarkan AWS Load Balancer Controllerdan aplikasi sampel untuk memuat aplikasi keseimbangan atau lalu lintas jaringan ke. IPv6 Pods

  6. Setelah Anda selesai dengan cluster dan node yang Anda buat untuk tutorial ini, Anda harus membersihkan sumber daya yang Anda buat dengan perintah berikut.

    eksctl delete cluster my-cluster
AWS CLI
Prasyarat

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. Package manager seperti yumapt-get,, atau Homebrew untuk macOS sering beberapa versi di belakang versi terbaru dari file AWS CLI. Untuk menginstal versi terbaru, lihat Menginstal, memperbarui, dan menghapus konfigurasi AWS CLI dan Cepat dengan aws configure di Panduan AWS Command Line Interface Pengguna. AWS CLI Versi yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di Panduan AWS CloudShell Pengguna. Jika Anda menggunakan AWS CloudShell, Anda mungkin perlu menginstal versi 2.12.3 atau yang lebih baru 1.27.160 atau atau yang lebih baru AWS CLI, karena AWS CLI versi default yang diinstal di AWS CloudShell mungkin versi sebelumnya.

penting
  • Anda harus menyelesaikan semua langkah dalam prosedur ini sebagai pengguna yang sama. Untuk memeriksa pengguna saat ini, jalankan perintah berikut:

    aws sts get-caller-identity
  • Anda harus menyelesaikan semua langkah dalam prosedur ini di shell yang sama. Beberapa langkah menggunakan variabel yang diatur dalam langkah sebelumnya. Langkah-langkah yang menggunakan variabel tidak akan berfungsi dengan baik jika nilai variabel diatur dalam shell yang berbeda. Jika Anda menggunakan AWS CloudShelluntuk menyelesaikan prosedur berikut, ingatlah bahwa jika Anda tidak berinteraksi dengannya menggunakan keyboard atau pointer selama kurang lebih 20-30 menit, sesi shell Anda berakhir. Proses yang berjalan tidak dihitung sebagai interaksi.

  • Instruksi ditulis untuk cangkang Bash, dan mungkin perlu disesuaikan dengan cangkang lainnya.

Untuk membuat cluster Anda dengan AWS CLI

Ganti semua example values langkah prosedur ini dengan nilai Anda sendiri.

  1. Jalankan perintah berikut untuk mengatur beberapa variabel yang digunakan dalam langkah-langkah selanjutnya. Ganti region-code dengan tempat Wilayah AWS Anda ingin menyebarkan sumber daya Anda. Nilainya bisa berupa apa saja Wilayah AWS yang didukung oleh Amazon EKS. Untuk daftar Wilayah AWS, lihat titik akhir dan kuota Amazon EKS di panduan Referensi AWS Umum. Ganti my-cluster dengan nama untuk cluster 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 my-nodegroup 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. Ganti 111122223333 dengan ID akun Anda.

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. Buat VPC Amazon dengan subnet publik dan pribadi yang memenuhi Amazon EKS dan persyaratan. IPv6

    1. Jalankan perintah berikut untuk mengatur variabel untuk nama AWS CloudFormation tumpukan Anda. Anda dapat mengganti my-eks-ipv6-vpc dengan nama apa pun yang Anda pilih.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Buat IPv6 VPC menggunakan template. AWS CloudFormation

      aws cloudformation create-stack --region $region_code --stack-name $vpc_stack_name \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml

      Tumpukan membutuhkan waktu beberapa menit untuk membuatnya. Jalankan perintah berikut. Jangan melanjutkan ke langkah berikutnya sampai output dari perintah tersebutCREATE_COMPLETE.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. Ambil ID subnet publik yang dibuat.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text

      Contoh output adalah sebagai berikut.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE
    4. Aktifkan opsi IPv6 alamat tetapkan otomatis untuk subnet publik yang dibuat.

      aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-0a1a56c486EXAMPLE --assign-ipv6-address-on-creation aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-099e6ca77aEXAMPLE --assign-ipv6-address-on-creation
    5. Ambil nama subnet dan grup keamanan yang dibuat oleh template dari AWS CloudFormation tumpukan yang digunakan dan simpan dalam variabel untuk digunakan di langkah selanjutnya.

      security_groups=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SecurityGroups`].OutputValue' --output text) public_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text) private_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPrivate`].OutputValue' --output text) subnets=${public_subnets},${private_subnets}
  3. Buat peran IAM cluster dan lampirkan kebijakan terkelola Amazon EKS IAM yang diperlukan ke dalamnya. Kubernetescluster yang dikelola oleh Amazon EKS melakukan panggilan ke AWS layanan lain atas nama Anda untuk mengelola sumber daya yang Anda gunakan dengan layanan ini.

    1. Jalankan perintah berikut untuk membuat eks-cluster-role-trust-policy.json file.

      cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Jalankan perintah berikut untuk menetapkan variabel untuk nama peran Anda. Anda dapat mengganti myAmazonEKSClusterRole dengan nama apa pun yang Anda pilih.

      export cluster_role_name=myAmazonEKSClusterRole
    3. Buat peran.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. Ambil ARN dari peran IAM dan simpan dalam variabel untuk langkah selanjutnya.

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. Lampirkan kebijakan terkelola IAM Amazon EKS yang diperlukan untuk peran tersebut.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. Buat cluster Anda.

    aws eks create-cluster --region $region_code --name $cluster_name --kubernetes-version 1.XX \ --role-arn $cluster_iam_role --resources-vpc-config subnetIds=$subnets,securityGroupIds=$security_groups \ --kubernetes-network-config ipFamily=ipv6
    1. catatan

      Mungkin error akan terjadi karena salah satu Availability Zone dalam permintaan Anda tidak memiliki kapasitas yang cukup untuk membuat klaster 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.

      Cluster membutuhkan waktu beberapa menit untuk membuatnya. Jalankan perintah berikut. Jangan melanjutkan ke langkah berikutnya sampai output dari perintahACTIVE.

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. Buat atau perbarui kubeconfig file untuk klaster Anda sehingga Anda dapat berkomunikasi dengan cluster Anda.

    aws eks update-kubeconfig --region $region_code --name $cluster_name

    Secara default, file config dibuat di ~/.kube atau konfigurasi klaster baru ditambahkan ke file config yang sudah ada di ~/.kube.

  6. Buat peran IAM node.

    1. Jalankan perintah berikut untuk membuat vpc-cni-ipv6-policy.json file.

      cat >vpc-cni-ipv6-policy <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] } EOF
    2. Buat kebijakan IAM.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. Jalankan perintah berikut untuk membuat node-role-trust-relationship.json file.

      cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    4. Jalankan perintah berikut untuk menetapkan variabel untuk nama peran Anda. Anda dapat mengganti AmazonEKSNodeRole dengan nama apa pun yang Anda pilih.

      export node_role_name=AmazonEKSNodeRole
    5. Buat peran IAM.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. Lampirkan kebijakan IAM ke peran IAM.

      aws iam attach-role-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name $node_role_name
      penting

      Untuk kesederhanaan dalam tutorial ini, kebijakan dilampirkan ke peran IAM ini. Namun, dalam klaster produksi, kami merekomendasikan untuk melampirkan kebijakan ke peran IAM yang terpisah. Untuk informasi selengkapnya, lihat Mengkonfigurasi Amazon VPC CNI plugin for Kubernetes untuk menggunakan peran IAM untuk akun layanan (IRSA).

    7. Lampirkan dua kebijakan terkelola IAM yang diperlukan ke peran IAM.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name $node_role_name aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name $node_role_name
    8. Ambil ARN dari peran IAM dan simpan dalam variabel untuk langkah selanjutnya.

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. Buat grup node terkelola.

    1. Lihat ID subnet yang Anda buat pada langkah sebelumnya.

      echo $subnets

      Contoh output adalah sebagai berikut.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. Buat grup simpul. Ganti 0a1a56c486EXAMPLE099e6ca77aEXAMPLE,0377963d69EXAMPLE,, dan 0c05f819d5EXAMPLE dengan nilai yang dikembalikan dalam output dari langkah sebelumnya. Pastikan untuk menghapus koma antara ID subnet dari output sebelumnya dalam perintah berikut. Anda dapat mengganti t3.medium dengan jenis instans Sistem AWS Nitro apa pun.

      aws eks create-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --subnets subnet-0a1a56c486EXAMPLE subnet-099e6ca77aEXAMPLE subnet-0377963d69EXAMPLE subnet-0c05f819d5EXAMPLE \ --instance-types t3.medium --node-role $node_iam_role

      Grup simpul membutuhkan waktu beberapa menit untuk membuatnya. Jalankan perintah berikut. Jangan lanjutkan ke langkah berikutnya sampai output yang dikembalikanACTIVE.

      aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --query nodegroup.status --output text
  8. Konfirmasikan bahwa default Pods adalah IPv6 alamat yang ditetapkan di IP kolom.

    kubectl get pods -n kube-system -o wide

    Contoh output adalah sebagai berikut.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  9. Konfirmasikan bahwa layanan default diberikan IPv6 alamat di IP kolom.

    kubectl get services -n kube-system -o wide

    Contoh output adalah sebagai berikut.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  10. (Opsional) Menyebarkan aplikasi sampel atau menyebarkan AWS Load Balancer Controllerdan aplikasi sampel untuk memuat aplikasi keseimbangan atau lalu lintas jaringan ke. IPv6 Pods

  11. Setelah Anda selesai dengan cluster dan node yang Anda buat untuk tutorial ini, Anda harus membersihkan sumber daya yang Anda buat dengan perintah berikut. Pastikan Anda tidak menggunakan sumber daya apa pun di luar tutorial ini sebelum menghapusnya.

    1. Jika Anda menyelesaikan langkah ini di shell yang berbeda dari saat Anda menyelesaikan langkah sebelumnya, tetapkan nilai semua variabel yang digunakan pada langkah sebelumnya, ganti example values dengan nilai yang Anda tentukan saat Anda menyelesaikan langkah sebelumnya. Jika Anda menyelesaikan langkah ini di shell yang sama dengan tempat Anda menyelesaikan langkah sebelumnya, lewati ke langkah berikutnya.

      export region_code=region-code export vpc_stack_name=my-eks-ipv6-vpc export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333 export node_role_name=AmazonEKSNodeRole export cluster_role_name=myAmazonEKSClusterRole
    2. Hapus grup node Anda.

      aws eks delete-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name

      Penghapusan membutuhkan waktu beberapa menit. Jalankan perintah berikut. Jangan lanjutkan ke langkah berikutnya jika ada output yang dikembalikan.

      aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
    3. Hapus klaster .

      aws eks delete-cluster --region $region_code --name $cluster_name

      Cluster membutuhkan beberapa menit untuk menghapus. Sebelum melanjutkan pastikan bahwa cluster dihapus dengan perintah berikut.

      aws eks describe-cluster --region $region_code --name $cluster_name

      Jangan lanjutkan ke langkah berikutnya sampai output Anda mirip dengan output berikut.

      An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster.
    4. Hapus sumber daya IAM yang Anda buat. Ganti AmazonEKS_CNI_IPv6_Policy dengan nama yang Anda pilih, jika Anda memilih nama yang berbeda dari yang digunakan pada langkah sebelumnya.

      aws iam detach-role-policy --role-name $cluster_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-role --role-name $cluster_role_name aws iam delete-role --role-name $node_role_name
    5. Hapus AWS CloudFormation tumpukan yang membuat VPC.

      aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name