Kelompok keamanan untuk Pods - 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.

Kelompok keamanan untuk Pods

Grup keamanan untuk Pods mengintegrasikan grup keamanan Amazon EC2 dengan. Kubernetes Pods Anda dapat menggunakan grup keamanan Amazon EC2 untuk menentukan aturan yang memungkinkan lalu lintas jaringan masuk dan keluar ke dan dari yang Anda gunakan ke node Pods yang berjalan di banyak jenis instans Amazon EC2 dan Fargate. Untuk penjelasan rinci tentang kemampuan ini, lihat Memperkenalkan grup keamanan untuk posting Pods blog.

Pertimbangan

  • Sebelum menerapkan grup keamanan untukPods, pertimbangkan batasan dan ketentuan berikut:

  • Grup keamanan untuk tidak Pods dapat digunakan dengan Windows node.

  • Grup keamanan untuk Pods dapat digunakan dengan cluster yang dikonfigurasi untuk IPv6 keluarga yang berisi node Amazon EC2 dengan menggunakan versi 1.16.0 atau yang lebih baru dari plugin Amazon VPC CNI. Anda dapat menggunakan grup keamanan untuk Pods dengan cluster mengkonfigurasi IPv6 keluarga yang hanya berisi node Fargate dengan menggunakan versi 1.7.7 atau yang lebih baru dari plugin Amazon VPC CNI. Untuk informasi selengkapnya, lihat IPv6alamat untuk cluster,Pods, dan services

  • Grup keamanan untuk Pods didukung oleh sebagian besar keluarga instans Amazon EC2 berbasis Nitro, meskipun tidak oleh semua generasi keluarga. Misalnya, keluarga dan generasi m5 c5r5, m6gc6g,,,, dan r6g contoh didukung. Tidak ada jenis instance dalam t keluarga yang didukung. Untuk daftar lengkap jenis instans yang didukung, lihat file limits.go di Github. Node Anda harus menjadi salah satu jenis instance terdaftar yang ada IsTrunkingCompatible: true di file itu.

  • Jika Anda juga menggunakan kebijakan Pod keamanan untuk membatasi akses ke Pod mutasi, maka eks:vpc-resource-controller Kubernetes pengguna harus ditentukan dalam Kubernetes ClusterRoleBinding untuk role yang Anda psp tetapkan. Jika Anda menggunakan Amazon EKS defaultpsp,role, danClusterRoleBinding, ini adalah eks:podsecuritypolicy:authenticatedClusterRoleBinding. Misalnya, Anda menambahkan pengguna ke subjects: bagian, seperti yang ditunjukkan pada contoh berikut:

    [...] subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated - apiGroup: rbac.authorization.k8s.io kind: User name: eks:vpc-resource-controller - kind: ServiceAccount name: eks-vpc-resource-controller
  • Jika Anda menggunakan jaringan kustom dan grup keamanan untuk Pods bersama-sama, grup keamanan yang ditentukan oleh grup keamanan untuk Pods digunakan, bukan grup keamanan yang ditentukan dalamENIConfig.

  • Jika Anda menggunakan versi 1.10.2 atau sebelumnya dari plugin Amazon VPC CNI dan Anda menyertakan terminationGracePeriodSeconds pengaturan dalam Pod spesifikasi Anda, nilai untuk pengaturan tidak bisa nol.

  • Jika Anda menggunakan versi 1.10 atau sebelumnya dari plugin Amazon VPC CNI, atau versi 1.11 dengan POD_SECURITY_GROUP_ENFORCING_MODE =strict, yang merupakan setelan default, maka Kubernetes layanan jenis NodePort dan LoadBalancer menggunakan target instans dengan externalTrafficPolicy set ke Local tidak didukung dengan Pods yang Anda tetapkan ke grup keamanan. Untuk informasi selengkapnya tentang penggunaan penyeimbang beban dengan target instans, lihat Rute TCP dan UDP lalu lintas dengan Network Load Balancers

  • Jika Anda menggunakan versi 1.10 atau sebelumnya dari plugin Amazon VPC CNI atau versi 1.11 dengan POD_SECURITY_GROUP_ENFORCING_MODE =strict, yang merupakan pengaturan default, sumber NAT dinonaktifkan untuk lalu lintas keluar dari grup keamanan Pods yang ditetapkan sehingga aturan grup keamanan keluar diterapkan. Untuk mengakses internet, Pods dengan grup keamanan yang ditetapkan harus diluncurkan pada node yang digunakan dalam subnet pribadi yang dikonfigurasi dengan gateway atau instance NAT. Podsdengan kelompok keamanan yang ditugaskan dikerahkan ke subnet publik tidak dapat mengakses internet.

    Jika Anda menggunakan versi 1.11 atau yang lebih baru dari plugin dengan POD_SECURITY_GROUP_ENFORCING_MODE =standard, lalu Pod lintas yang ditujukan untuk di luar VPC diterjemahkan ke alamat IP antarmuka jaringan utama instans. Untuk lalu lintas ini, aturan dalam grup keamanan untuk antarmuka jaringan utama digunakan, bukan aturan dalam kelompok Pod's keamanan.

  • Untuk menggunakan kebijakan Calico jaringan dengan Pods yang memiliki grup keamanan terkait, Anda harus menggunakan versi 1.11.0 atau yang lebih baru dari plugin Amazon VPC CNI dan set =. POD_SECURITY_GROUP_ENFORCING_MODE standard Jika tidak, arus lalu lintas ke dan dari Pods dengan grup keamanan terkait tidak dikenakan penegakan kebijakan Calico jaringan dan terbatas pada penegakan kelompok keamanan Amazon EC2 saja. Untuk memperbarui versi CNI VPC Amazon Anda, lihat Bekerja dengan EKS add-on Amazon VPC CNI plugin for Kubernetes Amazon

  • Podsberjalan di node Amazon EC2 yang menggunakan grup keamanan dalam cluster yang menggunakan Nodelocal DNScache hanya didukung dengan versi atau yang lebih baru 1.11.0 dari plugin Amazon VPC CNI dan dengan =. POD_SECURITY_GROUP_ENFORCING_MODE standard Untuk memperbarui versi plugin Amazon VPC CNI Anda, lihat Bekerja dengan EKS add-on Amazon VPC CNI plugin for Kubernetes Amazon

  • Grup keamanan untuk Pods dapat menyebabkan latensi Pod startup yang lebih tinggi untuk Pods dengan churn tinggi. Hal ini disebabkan pembatasan tingkat dalam pengontrol sumber daya.

Amazon VPC CNI plugin for KubernetesKonfigurasikan grup keamanan untuk Pods

Untuk menyebarkan grup keamanan untuk Pods

Jika Anda menggunakan grup keamanan Pods hanya untuk Fargate, dan tidak memiliki node Amazon EC2 di cluster Anda, lewati ke. Menyebarkan aplikasi contoh

  1. Periksa Amazon VPC CNI plugin for Kubernetes versi Anda saat ini dengan perintah berikut:

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Contoh output adalah sebagai berikut.

    v1.7.6

    Jika Amazon VPC CNI plugin for Kubernetes versi Anda lebih awal dari1.7.7, maka perbarui plugin ke versi 1.7.7 atau yang lebih baru. Untuk informasi selengkapnya, lihat Bekerja dengan EKS add-on Amazon VPC CNI plugin for Kubernetes Amazon

  2. Tambahkan kebijakan IAM AmazonEKSVPCResourceControllerterkelola ke peran klaster yang terkait dengan kluster Amazon EKS Anda. Kebijakan ini memungkinkan peran untuk mengelola antarmuka jaringan, alamat IP pribadi mereka, dan lampiran serta detasemen mereka ke dan dari instance jaringan.

    1. Ambil nama peran IAM cluster Anda dan simpan dalam variabel. Ganti my-cluster dengan nama klaster Anda.

      cluster_role=$(aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2)
    2. Lampirkan kebijakan pada peran tersebut.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
  3. Aktifkan add-on Amazon VPC CNI untuk mengelola antarmuka jaringan Pods dengan menyetel variabel ke dalamENABLE_POD_ENI. true aws-node DaemonSet Setelah pengaturan ini diatur ketrue, untuk setiap node di cluster add-on membuat sumber daya kustom cninode. Pengendali sumber daya VPC membuat dan melampirkan satu antarmuka jaringan khusus yang disebut antarmuka jaringan trunk dengan deskripsi aws-k8s-trunk-eni.

    kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=true
    catatan

    Antarmuka jaringan trunk termasuk dalam jumlah maksimum antarmuka jaringan yang didukung oleh tipe instans. Untuk daftar jumlah maksimum antarmuka jaringan yang didukung oleh setiap jenis instans, lihat alamat IP per antarmuka jaringan per jenis instans di Panduan Pengguna Amazon EC2. Jika simpul Anda sudah memiliki jumlah maksimum antarmuka jaringan standar yang terlampir padanya, maka pengendali sumber daya VPC akan menyimpan sebuah ruang. Anda harus mengurangi ukuran berjalan Anda Pods agar pengontrol dapat melepaskan dan menghapus antarmuka jaringan standar, membuat antarmuka jaringan trunk, dan melampirkannya ke instance.

  4. Anda dapat melihat node mana yang memiliki sumber daya CNINode khusus dengan perintah berikut. Jika No resources found dikembalikan, maka tunggu beberapa detik dan coba lagi. Langkah sebelumnya membutuhkan restart Amazon VPC CNI plugin for KubernetesPods, yang memakan waktu beberapa detik.

    $ kubectl get cninode -A NAME FEATURES ip-192-168-64-141.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}] ip-192-168-7-203.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}]

    Jika Anda menggunakan versi VPC CNI yang lebih lama dari1.15, label node digunakan sebagai pengganti sumber daya khusus. CNINode Anda dapat melihat node mana yang memiliki label node aws-k8s-trunk-eni diatur true dengan perintah berikut. Jika No resources found dikembalikan, maka tunggu beberapa detik dan coba lagi. Langkah sebelumnya membutuhkan restart Amazon VPC CNI plugin for KubernetesPods, yang memakan waktu beberapa detik.

    kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=true -

    Setelah antarmuka jaringan trunk dibuat, Pods diberikan alamat IP sekunder dari trunk atau antarmuka jaringan standar. Antarmuka trunk secara otomatis dihapus jika simpul dihapus.

    Saat Anda menyebarkan grup keamanan untuk langkah selanjutnya, pengontrol sumber daya VPC membuat antarmuka jaringan khusus yang disebut antarmuka jaringan cabang dengan deskripsi aws-k8s-branch-eni dan mengaitkan grup keamanan ke Pod dalamnya. Antarmuka jaringan cabang dibuat sebagai tambahan dari antarmuka jaringan standar dan trunk yang terlampir pada simpul.

    Jika Anda menggunakan probe keaktifan atau kesiapan, maka Anda juga perlu menonaktifkan demux awal TCP, sehingga kubelet dapat terhubung ke Pods antarmuka jaringan cabang menggunakan TCP. Untuk menonaktifkan demux awal TCP, jalankan perintah berikut:

    kubectl patch daemonset aws-node -n kube-system \ -p '{"spec": {"template": {"spec": {"initContainers": [{"env":[{"name":"DISABLE_TCP_EARLY_DEMUX","value":"true"}],"name":"aws-vpc-cni-init"}]}}}}'
    catatan

    Jika Anda menggunakan 1.11.0 atau yang lebih baru dari Amazon VPC CNI plugin for Kubernetes add-on dan set POD_SECURITY_GROUP_ENFORCING_MODE =standard, seperti yang dijelaskan pada langkah berikutnya, maka Anda tidak perlu menjalankan perintah sebelumnya.

  5. Jika klaster Anda menggunakanNodeLocal DNSCache, atau Anda ingin menggunakan kebijakan Calico jaringan dengan grup keamanan mereka sendiri, atau Anda memiliki Kubernetes layanan jenis NodePort dan LoadBalancer menggunakan target instans dengan externalTrafficPolicy set Local untuk Pods yang ingin Anda tetapkan grup keamanan, maka Anda harus menggunakan versi 1.11.0 atau versi Amazon VPC CNI plugin for Kubernetes add-on yang lebih baru, dan Anda harus mengaktifkan pengaturan berikut: Pods

    kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standard
    penting
    • PodAturan grup keamanan tidak diterapkan pada lalu lintas antara Pods atau di antara Pods danservices, seperti kubelet ataunodeLocalDNS, yang berada di node yang sama. Pod yang menggunakan grup keamanan berbeda pada node yang sama tidak dapat berkomunikasi karena mereka dikonfigurasi dalam subnet yang berbeda, dan routing dinonaktifkan di antara subnet ini.

    • Lalu lintas keluar dari Pods ke alamat di luar VPC adalah alamat jaringan yang diterjemahkan ke alamat IP antarmuka jaringan utama instans (kecuali jika Anda juga AWS_VPC_K8S_CNI_EXTERNALSNAT=true telah mengatur). Untuk lalu lintas ini, aturan dalam grup keamanan untuk antarmuka jaringan utama digunakan, bukan aturan dalam kelompok Pod's keamanan.

    • Agar pengaturan ini diterapkan ke yang adaPods, Anda harus memulai ulang Pods atau node yang Pods sedang berjalan.

Menyebarkan aplikasi contoh

Untuk menggunakan grup keamananPods, Anda harus memiliki grup keamanan yang ada dan Menerapkan Amazon EKS SecurityGroupPolicy ke klaster Anda, seperti yang dijelaskan dalam prosedur berikut. Langkah-langkah berikut menunjukkan kepada Anda cara menggunakan kebijakan grup keamanan untuk filePod. Kecuali dinyatakan lain, selesaikan semua langkah dari terminal yang sama karena variabel digunakan dalam langkah-langkah berikut yang tidak bertahan di seluruh terminal.

Untuk menyebarkan contoh Pod dengan grup keamanan
  1. Buat Kubernetes namespace untuk menyebarkan sumber daya ke. Anda dapat mengganti namespace saya dengan nama namespace yang ingin Anda gunakan.

    kubectl create namespace my-namespace
  2. Menerapkan Amazon EKS SecurityGroupPolicy ke cluster Anda.

    1. Salin konten berikut ke perangkat Anda. Anda dapat mengganti PodSelector dengan serviceAccountSelector jika Anda lebih suka memilih Pods berdasarkan label akun layanan. Anda harus menentukan satu selektor atau yang lainnya. Sebuah kosong podSelector (contoh:podSelector: {}) memilih semua Pods di namespace. Anda dapat mengubah peran saya menjadi nama peran Anda. serviceAccountSelector yang kosong memilih semua akun layanan di namespace. Anda dapat mengganti my-security-group-policy dengan nama untuk namespace Anda SecurityGroupPolicy dan my-namespace dengan namespace yang ingin Anda buat. SecurityGroupPolicy

      Anda harus mengganti my_pod_security_group_id dengan ID grup keamanan yang ada. Jika Anda tidak memiliki grup keamanan yang ada, maka Anda harus membuatnya. Untuk informasi selengkapnya, lihat Grup Keamanan Amazon EC2 untuk instans Linux di Panduan Pengguna Amazon EC2. Anda dapat menentukan 1-5 ID grup keamanan. Jika Anda menentukan lebih dari satu ID, maka kombinasi semua aturan di semua grup keamanan efektif untuk yang dipilihPods.

      cat >my-security-group-policy.yaml <<EOF apiVersion: vpcresources.k8s.aws/v1beta1 kind: SecurityGroupPolicy metadata: name: my-security-group-policy namespace: my-namespace spec: podSelector: matchLabels: role: my-role securityGroups: groupIds: - my_pod_security_group_id EOF
      penting

      Grup keamanan atau grup yang Anda tentukan untuk Pod s Anda harus memenuhi kriteria berikut:

      • Mereka harus ada. Jika tidak ada, maka, ketika Anda menerapkan Pod yang cocok dengan pemilih, Anda Pod tetap terjebak dalam proses pembuatan. Jika Anda mendeskripsikannyaPod, Anda akan melihat pesan kesalahan yang mirip dengan yang berikut:An error occurred (InvalidSecurityGroupID.NotFound) when calling the CreateNetworkInterface operation: The securityGroup ID 'sg-05b1d815d1EXAMPLE' does not exist.

      • Mereka harus mengizinkan komunikasi masuk dari grup keamanan yang diterapkan ke node Anda (untukkubelet) melalui port apa pun yang telah Anda konfigurasi probe.

      • Mereka harus mengizinkan komunikasi keluar TCP dan UDP port 53 ke grup keamanan yang ditugaskan ke Pods (atau node yang Pods dijalankanCoreDNS). Grup keamanan untuk Anda CoreDNS Pods harus mengizinkan lalu lintas masuk TCP dan UDP port 53 dari grup keamanan yang Anda tentukan.

      • Mereka harus memiliki aturan masuk dan keluar yang diperlukan untuk berkomunikasi dengan orang lain Pods yang perlu mereka komunikasikan.

      • Mereka harus memiliki aturan yang memungkinkan Pods untuk berkomunikasi dengan pesawat Kubernetes kontrol jika Anda menggunakan kelompok keamanan dengan Fargate. Cara termudah untuk melakukannya adalah dengan menentukan grup keamanan klaster sebagai salah satu grup keamanan.

      Kebijakan grup keamanan hanya berlaku untuk yang baru dijadwalkanPods. Mereka tidak mempengaruhi berlariPods.

    2. Deploy kebijakan.

      kubectl apply -f my-security-group-policy.yaml
  3. Menerapkan aplikasi sampel dengan label yang cocok dengan my-role nilai podSelector yang Anda tentukan pada langkah sebelumnya.

    1. Salin konten berikut ke perangkat Anda. Ganti nilai contoh dengan milik Anda sendiri dan kemudian jalankan perintah yang dimodifikasi. Jika Anda mengganti peran saya, pastikan itu sama dengan nilai yang Anda tentukan untuk pemilih pada langkah sebelumnya.

      cat >sample-application.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment namespace: my-namespace labels: app: my-app spec: replicas: 4 selector: matchLabels: app: my-app template: metadata: labels: app: my-app role: my-role spec: terminationGracePeriodSeconds: 120 containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.23 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-app namespace: my-namespace labels: app: my-app spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 EOF
    2. Deploy aplikasi dengan perintah berikut. Saat Anda menerapkan aplikasi, Amazon VPC CNI plugin for Kubernetes pencocokan role label dan grup keamanan yang Anda tentukan pada langkah sebelumnya diterapkan kePod.

      kubectl apply -f sample-application.yaml
  4. Lihat yang Pods digunakan dengan aplikasi sampel. Untuk sisa topik ini, terminal ini disebut sebagaiTerminalA.

    kubectl get pods -n my-namespace -o wide

    Contoh output adalah sebagai berikut.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-deployment-5df6f7687b-4fbjm 1/1 Running 0 7m51s 192.168.53.48 ip-192-168-33-28.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-j9fl4 1/1 Running 0 7m51s 192.168.70.145 ip-192-168-92-33.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-rjxcz 1/1 Running 0 7m51s 192.168.73.207 ip-192-168-92-33.region-code.compute.internal <none> <none> my-deployment-5df6f7687b-zmb42 1/1 Running 0 7m51s 192.168.63.27 ip-192-168-33-28.region-code.compute.internal <none> <none>
    catatan
    • Jika Pods ada yang terjebak di Waiting negara bagian, maka jalankankubectl describe pod my-deployment-xxxxxxxxxx-xxxxx -n my-namespace. Jika Anda melihatnyaInsufficient permissions: Unable to create Elastic Network Interface., konfirmasikan bahwa Anda menambahkan kebijakan IAM ke peran klaster IAM di langkah sebelumnya.

    • Jika Pods ada yang macet dalam Pending status, konfirmasikan bahwa jenis instance node Anda terdaftar limits.godan bahwa produk dari jumlah maksimum antarmuka jaringan cabang yang didukung oleh jenis instance dikalikan kali jumlah node dalam grup node Anda belum terpenuhi. Misalnya, sebuah instans m5.large mendukung sembilan antarmuka jaringan cabang. Jika grup simpul Anda memiliki lima simpul, maka maksimum 45 antarmuka jaringan cabang dapat dibuat untuk grup simpul. Ke-46 Pod yang Anda coba terapkan akan berada dalam Pending status sampai Pod yang lain yang memiliki grup keamanan terkait dihapus.

    Jika Anda menjalankan kubectl describe pod my-deployment-xxxxxxxxxx-xxxxx -n my-namespace dan melihat pesan yang serupa dengan pesan berikut, maka dapat diabaikan dengan aman. Pesan ini mungkin muncul ketika Amazon VPC CNI plugin for Kubernetes mencoba untuk mengatur jaringan host dan gagal saat antarmuka jaringan sedang dibuat. Plugin mencatat peristiwa ini sampai antarmuka jaringan dibuat.

    Failed to create Pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e24268322e55c8185721f52df6493684f6c2c3bf4fd59c9c121fd4cdc894579f" network for Pod "my-deployment-5df6f7687b-4fbjm": networkPlugin
    cni failed to set up Pod "my-deployment-5df6f7687b-4fbjm-c89wx_my-namespace" network: add cmd: failed to assign an IP address to container

    Anda tidak dapat melebihi jumlah maksimum Pods yang dapat dijalankan pada jenis instance. Untuk daftar jumlah maksimum Pods yang dapat Anda jalankan pada setiap jenis instance, lihat eni-max-pods.txt padaGitHub. Saat Anda menghapus Pod yang memiliki grup keamanan terkait, atau menghapus node yang Pod sedang berjalan, pengontrol sumber daya VPC menghapus antarmuka jaringan cabang. Jika Anda menghapus cluster dengan Pods menggunakan Pods untuk grup keamanan, maka pengontrol tidak menghapus antarmuka jaringan cabang, jadi Anda harus menghapusnya sendiri. Untuk informasi tentang cara menghapus antarmuka jaringan, lihat Menghapus antarmuka jaringan di Panduan Pengguna Amazon EC2.

  5. Di terminal terpisah, masukkan ke salah satuPods. Untuk sisa topik ini, terminal ini disebut sebagaiTerminalB. Ganti 5df6f7687b - 4fbjm dengan ID salah satu yang dikembalikan dalam output Anda dari langkah sebelumnya. Pods

    kubectl exec -it -n my-namespace my-deployment-5df6f7687b-4fbjm -- /bin/bash
  6. Dari shell masukTerminalB, konfirmasikan bahwa aplikasi sampel berfungsi.

    curl my-app

    Contoh output adalah sebagai berikut.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    [...]

    Anda menerima output karena semua Pods menjalankan aplikasi dikaitkan dengan grup keamanan yang Anda buat. Grup itu berisi aturan yang memungkinkan semua lalu lintas di antara semua Pods yang terkait dengan grup keamanan. Lalu lintas DNS diizinkan keluar dari grup keamanan tersebut ke grup keamanan klaster, yang terkait dengan node Anda. Node menjalankan CoreDNSPods, yang Anda Pods lakukan pencarian nama.

  7. DariTerminalA, hapus aturan grup keamanan yang memungkinkan komunikasi DNS ke grup keamanan klaster dari grup keamanan Anda. Jika Anda tidak menambahkan aturan DNS ke grup keamanan klaster pada langkah sebelumnya, ganti $my_cluster_security_group_id dengan ID grup keamanan tempat Anda membuat aturan.

    aws ec2 revoke-security-group-ingress --group-id $my_cluster_security_group_id --security-group-rule-ids $my_tcp_rule_id aws ec2 revoke-security-group-ingress --group-id $my_cluster_security_group_id --security-group-rule-ids $my_udp_rule_id
  8. DariTerminalB, coba akses aplikasi lagi.

    curl my-app

    Contoh output adalah sebagai berikut.

    curl: (6) Could not resolve host: my-app

    Upaya gagal karena Pod tidak lagi dapat mengakses CoreDNSPods, yang memiliki grup keamanan cluster yang terkait dengannya. Grup keamanan klaster tidak lagi memiliki aturan grup keamanan yang memungkinkan komunikasi DNS dari grup keamanan yang terkait dengan AndaPod.

    Jika Anda mencoba mengakses aplikasi menggunakan alamat IP yang dikembalikan untuk salah satu langkah sebelumnya, Anda masih menerima respons karena semua port diizinkan antara Pods yang memiliki grup keamanan yang terkait dengannya dan pencarian nama tidak diperlukan. Pods

  9. Setelah selesai bereksperimen, Anda dapat menghapus contoh kebijakan grup keamanan, aplikasi, dan grup keamanan yang Anda buat. Jalankan perintah berikut dariTerminalA.

    kubectl delete namespace my-namespace aws ec2 revoke-security-group-ingress --group-id $my_pod_security_group_id --security-group-rule-ids $my_inbound_self_rule_id wait sleep 45s aws ec2 delete-security-group --group-id $my_pod_security_group_id