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.
IPv6
alamat 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.
-
IPv6
Alamat 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.sh
file 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
eksctl
versi 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
-
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
-
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
-
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>
-
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
-
(Opsional) Menyebarkan aplikasi sampel atau menyebarkan AWS Load Balancer Controllerdan aplikasi sampel untuk memuat aplikasi keseimbangan atau lalu lintas jaringan ke. IPv6
Pods
-
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 yum
apt-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.
-
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.
-
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
-
Buat VPC Amazon dengan subnet publik dan pribadi yang memenuhi Amazon EKS dan persyaratan. IPv6
-
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
-
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
-
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
-
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
-
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}
-
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.
-
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
-
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
-
Buat peran.
aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json
"
-
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)
-
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
-
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
-
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
-
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
.
-
Buat peran IAM node.
-
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
Buat kebijakan IAM.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
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
-
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
-
Buat peran IAM.
aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json
"
-
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
-
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
-
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)
-
Buat grup node terkelola.
-
Lihat ID subnet yang Anda buat pada langkah sebelumnya.
echo $subnets
Contoh output adalah sebagai berikut.
subnet-0a1a56c486EXAMPLE
,subnet-099e6ca77aEXAMPLE
,subnet-0377963d69EXAMPLE
,subnet-0c05f819d5EXAMPLE
-
Buat grup simpul. Ganti 0a1a56c486EXAMPLE
099e6ca77aEXAMPLE
,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
-
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>
-
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
-
(Opsional) Menyebarkan aplikasi sampel atau menyebarkan AWS Load Balancer Controllerdan aplikasi sampel untuk memuat aplikasi keseimbangan atau lalu lintas jaringan ke. IPv6
Pods
-
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.
-
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
-
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
-
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
.
-
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
-
Hapus AWS CloudFormation tumpukan yang membuat VPC.
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name