Rangkaian EKS: VPC CNI dan Pengimbangan Beban
Gunakan pemalam Amazon VPC CNI supaya pod memperoleh alamat IP VPC asli, dan dedahkan perkhidmatan dengan AWS Load Balancer Controller.
Rangkaian EKS: VPC CNI dan Pengimbangan Beban ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Asas Rangkaian Kubernetes
Kubernetes memerlukan setiap pod mempunyai alamat IP yang unik dan boleh dihalakan, serta pod dapat berkomunikasi antara satu sama lain tanpa NAT. Pemalam Container Network Interface (CNI) bertanggungjawab menetapkan IP dan mengkonfigurasi laluan rangkaian pada nod pekerja. Platform Kubernetes yang berbeza menggunakan pelaksanaan CNI yang berbeza; AWS menggunakan pemalam Amazon VPC CNI untuk mengintegrasikan rangkaian Kubernetes secara langsung dengan lapisan VPC.
Pemalam Amazon VPC CNI
Pemalam Amazon VPC CNI menetapkan setiap pod alamat IP secara langsung daripada julat CIDR subnet VPC Anda. Ini bermakna pod ialah entiti VPC kelas pertama — pod boleh dicapai oleh sumber VPC lain, sistem di premis melalui VPN/Direct Connect dan kumpulan keselamatan tanpa penterjemahan rangkaian tindanan. Setiap nod pekerja EC2 mengekalkan kumpulan IP peribadi sekunder (satu bagi setiap slot ENI) yang ditetapkan kepada pod apabila pod dijadualkan.
# Check the VPC CNI version installed in your cluster
kubectl describe daemonset aws-node -n kube-system | grep Image
# View the secondary IPs assigned to a node
aws ec2 describe-network-interfaces \
--filters 'Name=attachment.instance-id,Values=i-0abcdef1234567890' \
--query 'NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress'ENI dan Kumpulan IP Sedia
Pemalam VPC CNI mengekalkan kumpulan alamat IP yang diperuntukkan terlebih dahulu pada setiap nod untuk membolehkan penjadualan pod yang pantas. Apabila nod dimulakan, CNI melampirkan beberapa ENI dan menetapkan IP sekunder sehingga nilai pemboleh ubah persekitaran WARM_IP_TARGET atau MINIMUM_IP_TARGET. Oleh itu, bilangan maksimum pod yang boleh dijalankan oleh sesebuah nod dihadkan oleh bilangan ENI tika didarab dengan bilangan IP bagi setiap ENI, yang berbeza mengikut jenis tika.
# Check maximum pods supported by an instance type
aws ec2 describe-instance-types \
--instance-types m5.large \
--query 'InstanceTypes[].NetworkInfo.{MaxENIs:MaximumNetworkInterfaces,IPv4sPerENI:Ipv4AddressesPerInterface}'
# Max pods formula: (MaxENIs x (IPv4sPerENI - 1)) + 2
# m5.large: 3 ENIs x (10-1) + 2 = 29 podsKumpulan Keselamatan untuk Pod
Secara lalai, semua pod pada sesebuah nod berkongsi kumpulan keselamatan nod tersebut. Dengan ciri Security Groups for Pods, Anda boleh menetapkan kumpulan keselamatan individu kepada pod tertentu menggunakan sumber tersuai SecurityGroupPolicy. Ini membolehkan kawalan akses rangkaian yang terperinci — contohnya, hanya pod pangkalan data boleh menerima trafik pada port 5432 daripada kumpulan keselamatan pod API. Ciri ini memerlukan versi VPC CNI 1.7.7 atau lebih baharu serta ENI trunk pada nod.
# Define a SecurityGroupPolicy (custom resource)
apiVersion: vpcresources.k8s.aws/v1beta1
kind: SecurityGroupPolicy
metadata:
name: db-pod-sg-policy
namespace: production
spec:
podSelector:
matchLabels:
role: database
securityGroups:
groupIds:
- sg-0db1234567890abcdJenis Perkhidmatan Kubernetes pada EKS
Perkhidmatan Kubernetes mendedahkan sekumpulan pod di bawah nama DNS dan IP yang stabil. Pada EKS, tiga jenis perkhidmatan yang berkaitan ialah: ClusterIP (hanya untuk komunikasi dalaman kluster), NodePort (membuka port pada setiap nod — jarang digunakan pada EKS), dan LoadBalancer (menyediakan pengimbang beban AWS secara automatik). Jenis LoadBalancer ialah cara kebanyakan perkhidmatan EKS yang menghadap internet didedahkan.
# Expose a deployment with a LoadBalancer service
kubectl expose deployment my-api \
--type=LoadBalancer \
--name=my-api-svc \
--port=80 \
--target-port=8080
# Check the assigned AWS load balancer hostname
kubectl get svc my-api-svc -o wideAWS Load Balancer Controller
AWS Load Balancer Controller ialah pengawal Kubernetes sumber terbuka yang mengurus sumber ALB dan NLB bagi pihak kluster EKS. Apabila Anda mencipta objek Kubernetes Ingress, pengawal tersebut menyediakan Application Load Balancer. Apabila Anda mencipta Service jenis LoadBalancer dengan anotasi yang betul, pengawal tersebut menyediakan Network Load Balancer. Pengawal ini menggantikan pembekal pengimbang beban Kubernetes terbina dalam yang lebih lama.
# Install AWS Load Balancer Controller with Helm
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=my-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set region=us-east-1 \
--set vpcId=vpc-0abc1234def567890Ingress Kubernetes dengan ALB
Objek Kubernetes Ingress mentakrifkan peraturan penghalaan HTTP/HTTPS — berdasarkan laluan dan hos — ke dalam kluster Anda. AWS Load Balancer Controller membaca objek Ingress yang dianotasi dengan kubernetes.io/ingress.class: alb dan mencipta Application Load Balancer yang sepadan dengan peraturan pendengar yang sepadan. Ini menghapuskan keperluan untuk mencipta ALB dan kumpulan sasaran secara manual bagi setiap perkhidmatan aplikasi.
# Ingress YAML that creates an ALB
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-ingress
namespace: production
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 80NLB untuk Beban Kerja TCP/UDP
Apabila beban kerja Anda memerlukan TCP atau UDP (bukan HTTP) — seperti pelayan permainan, perkhidmatan gRPC atau proksi pangkalan data — gunakan NLB dan bukannya ALB. Anotasikan Service Kubernetes dengan service.beta.kubernetes.io/aws-load-balancer-type: 'external' dan service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: 'ip'. Pengawal tersebut menyediakan NLB dengan IP pod sebagai sasaran langsung, lalu memintas pemajuan port peringkat nod untuk kependaman yang lebih rendah.
# Service YAML that creates an NLB with IP targets
apiVersion: v1
kind: Service
metadata:
name: grpc-svc
namespace: production
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: 'external'
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: 'ip'
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
spec:
type: LoadBalancer
selector:
app: grpc-server
ports:
- port: 50051
targetPort: 50051
protocol: TCPPenyelesaian DNS dalam Kluster
EKS menjalankan CoreDNS sebagai penyedia DNS kluster. Setiap perkhidmatan mendapat nama DNS dalam format service-name.namespace.svc.cluster.local, yang diselesaikan kepada ClusterIP perkhidmatan tersebut. Pod juga boleh ditemui melalui DNS. CoreDNS digunakan sebagai Deployment (bukan DaemonSet), dan replikanya patut diskalakan berdasarkan saiz kluster. EKS mengurus CoreDNS sebagai add-on, yang membolehkan naik taraf versi secara automatik.
# Verify DNS resolution from within a pod
kubectl run dns-test --image=busybox --rm -it --restart=Never -- \
nslookup kubernetes.default.svc.cluster.local
# Expected output: Name: kubernetes.default.svc.cluster.local
# Address: 10.100.0.1 (ClusterIP of the kubernetes service)Dasar Rangkaian dalam EKS
Objek Kubernetes NetworkPolicy mentakrifkan peraturan kebenaran untuk trafik antara pod dan trafik pod ke luar. Secara lalai, semua pod dalam kluster boleh berkomunikasi secara bebas. Untuk menguatkuasakan rangkaian sifar kepercayaan, Anda boleh memasang pengawal dasar rangkaian Amazon VPC CNI (tersedia sejak VPC CNI v1.14). Dasar rangkaian dinilai pada tahap kernel Linux menggunakan eBPF, lalu menyediakan penguatkuasaan berprestasi tinggi tanpa rangkaian tindanan.
# NetworkPolicy: allow traffic to api pods only from frontend pods
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-allow-frontend
namespace: production
spec:
podSelector:
matchLabels:
role: api
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 8080Petua Penyelesaian Masalah VPC CNI
Masalah rangkaian EKS yang lazim termasuk kehabisan alamat IP (atasi dengan mendayakan pendelegasian awalan atau menambah subnet yang lebih besar), pod tersekat dalam keadaan Pending kerana nod tiada IP sekunder yang tersedia, dan kegagalan penyelesaian DNS yang berselang-seli disebabkan bilangan replika CoreDNS yang tidak mencukupi. Gunakan kubectl describe pod untuk menyemak peristiwa, kubectl describe node untuk melihat bilangan IP yang diperuntukkan, dan CloudWatch Container Insights untuk memantau kadar ralat DNS pada skala kluster.
# Enable prefix delegation to increase pod density per node
kubectl set env daemonset aws-node \
-n kube-system \
ENABLE_PREFIX_DELEGATION=true \
WARM_PREFIX_TARGET=1
# Check current IP usage on a node
kubectl describe node ip-10-0-1-100.ec2.internal | grep -A5 'Allocatable'Semakan Pantas
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.
Ulang Kaji Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahawa: pemalam Amazon VPC CNI menetapkan IP VPC natif kepada setiap pod untuk integrasi VPC yang lancar, AWS Load Balancer Controller menyediakan ALB untuk Ingress HTTP dan NLB untuk Service TCP/UDP, dan Security Groups for Pods membolehkan kawalan akses rangkaian pada peringkat pod. Seterusnya, kita akan meneroka IRSA untuk mengikat peranan IAM yang terperinci kepada akaun perkhidmatan Kubernetes.
Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Rangkaian EKS: VPC CNI dan Pengimbangan Beban” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Rangkaian EKS: VPC CNI dan Pengimbangan Beban”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Rangkaian EKS: VPC CNI dan Pengimbangan Beban”?
Gunakan pemalam Amazon VPC CNI supaya pod memperoleh alamat IP VPC asli, dan dedahkan perkhidmatan dengan AWS Load Balancer Controller. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Rangkaian EKS: VPC CNI dan Pengimbangan Beban” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Satah Kawalan dan Nod Pekerja EKS
- Profil Fargate untuk Pod Tanpa Pelayan
- Rangkaian EKS: VPC CNI dan Pengimbangan Beban
- Peranan IAM untuk Akaun Perkhidmatan (IRSA)