View a markdown version of this page

AWSSupport-TroubleshootEKSALBControllerIssues - AWS Systems Manager Referensi Buku Runbook Otomasi

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWSSupport-TroubleshootEKSALBControllerIssues

Deskripsi

Runbook AWSSupport-TroubleshootEKSALBControllerIssues otomatisasi membantu mendiagnosis masalah umum yang mencegah AWS Load Balancer Controller menyediakan dan mengelola Application Load Balancer (ALB) dan Network Load Balancer (NLB) dengan benar untuk masuk dan layanan Kubernetes.

Runbook ini melakukan end-to-end validasi komponen penting termasuk pengaturan penyedia identitas OIDC, konfigurasi IRSA, prasyarat jaringan, konfigurasi, dan kuota sumber daya. ingress/service Ini juga menangkap log pengontrol dan konfigurasi sumber daya Kubernetes yang relevan untuk membantu mengidentifikasi kesalahan konfigurasi atau masalah operasional.

penting

Runbook otomatisasi ini dirancang untuk kluster Amazon EKS menggunakan grup node Amazon Elastic Compute Cloud (Amazon EC2) dan saat ini tidak mendukung cluster yang berjalan. AWS Fargate

Bagaimana cara kerjanya?

Runbook AWSSupport-TroubleshootEKSALBControllerIssues melakukan langkah-langkah tingkat tinggi berikut:

  • Memvalidasi status klaster Amazon EKS, konfigurasi entri akses, dan penyiapan penyedia OIDC.

  • Membuat proxy Lambda sementara untuk komunikasi API Kubernetes.

  • Memeriksa penyebaran AWS Load Balancer Controller dan konfigurasi akun layanan.

  • Memverifikasi webhook identitas pod dan injeksi peran IAM.

  • Memvalidasi konfigurasi subnet dan penandaan untuk Application Load Balancer dan penyediaan Network Load Balancer.

  • Memeriksa kuota akun Application Load Balancer dan Network Load Balancer terhadap penggunaan saat ini.

  • Memvalidasi anotasi sumber daya masuk dan layanan.

  • Memeriksa penandaan grup keamanan node pekerja untuk integrasi penyeimbang beban.

  • Mengumpulkan log pod pengontrol untuk diagnostik.

  • Membersihkan sumber daya otentikasi sementara.

  • Menghasilkan laporan diagnostik dengan temuan dan langkah-langkah remediasi.

catatan
  • Cluster Amazon EKS harus memiliki entri akses yang dikonfigurasi untuk entitas IAM yang menjalankan otomatisasi ini. Mode otentikasi cluster harus diatur ke salah satu API atauAPI_AND_CONFIG_MAP. Tanpa konfigurasi entri akses yang tepat, otomatisasi akan berakhir selama validasi awal.

  • LambdaRoleArnParameter diperlukan dan harus memiliki kebijakan AWS terkelola AWSLambdaBasicExecutionRole dan AWSLambdaVPCAccessExecutionRole dilampirkan untuk memungkinkan fungsi proxy berkomunikasi dengan Kubernetes API.

  • AWS Load Balancer Controller harus versi v2.1.1 atau yang lebih baru.

  • Otomatisasi mencakup langkah pembersihan yang menghapus sumber daya infrastruktur otentikasi sementara. Langkah pembersihan ini berjalan bahkan ketika langkah-langkah sebelumnya gagal, memastikan tidak ada sumber daya yatim piatu yang tersisa di akun Anda. AWS

Jalankan Otomasi ini (konsol)

Jenis dokumen

Otomatisasi

Pemilik

Amazon

Platform

/

Izin IAM yang diperlukan

AutomationAssumeRoleParameter memerlukan tindakan berikut untuk menggunakan runbook dengan sukses.

  • cloudformation:CreateStack

  • cloudformation:DeleteStack

  • cloudformation:DescribeStacks

  • cloudformation:UpdateStack

  • ec2:CreateNetworkInterface

  • ec2:DeleteNetworkInterface

  • ec2:DescribeInstances

  • ec2:DescribeNetworkInterfaces

  • ec2:DescribeRouteTables

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • eks:DescribeCluster

  • eks:ListAssociatedAccessPolicies

  • elasticloadbalancing:DescribeAccountLimits

  • elasticloadbalancing:DescribeLoadBalancers

  • iam:GetRole

  • iam:ListOpenIDConnectProviders

  • iam:PassRole

  • lambda:CreateFunction

  • lambda:DeleteFunction

  • lambda:GetFunction

  • lambda:InvokeFunction

  • lambda:ListTags

  • lambda:TagResource

  • lambda:UntagResource

  • lambda:UpdateFunctionCode

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:ListTagsForResource

  • logs:PutLogEvents

  • logs:PutRetentionPolicy

  • logs:TagResource

  • logs:UntagResource

  • ssm:DescribeAutomationExecutions

  • ssm:GetAutomationExecution

  • ssm:StartAutomationExecution

  • tag:GetResources

  • tag:TagResources

Instruksi

Ikuti langkah-langkah ini untuk mengonfigurasi dan menjalankan otomatisasi:

catatan

Sebelum menjalankan otomatisasi, ikuti langkah-langkah berikut untuk mengonfigurasi peran IAM yang diperlukan: satu untuk Systems Manager Automation untuk menjalankan runbook, dan satu lagi untuk Lambda untuk berkomunikasi dengan Kubernetes API:

  1. Buat peran otomatisasi SSM TroubleshootEKSALBController-SSM-Role di akun Anda. Verifikasi bahwa hubungan kepercayaan berisi kebijakan berikut.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Lampirkan kebijakan IAM berikut untuk memberikan izin yang diperlukan:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "TroubleshootEKSALBControllerIssuesActions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListAssociatedAccessPolicies", "iam:GetRole", "iam:ListOpenIDConnectProviders", "ssm:StartAutomationExecution", "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeAccountLimits", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Sid": "SetupK8sApiProxyForEKSActions", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "eks:DescribeCluster", "iam:GetRole", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:ListTagsForResource", "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:TagResource", "logs:UntagResource", "ssm:DescribeAutomationExecutions", "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Sid": "PassRoleToAutomation", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ssm.amazonaws.com" ] } } }] }
  3. Konfigurasikan entri akses untuk klaster Amazon EKS Anda. Ini adalah persyaratan wajib untuk otomatisasi. Untuk langkah-langkah mengonfigurasi mode autentikasi untuk entri akses, lihat Menyiapkan entri akses.

    Di konsol Amazon EKS, navigasikan ke cluster Anda dan ikuti langkah-langkah berikut:

    • Di bagian Access, verifikasi konfigurasi autentikasi Anda diatur ke salah satu API atauAPI_AND_CONFIG_MAP.

    • Pilih Buat entri akses dan konfigurasikan:

      • Untuk ARN utama IAM, pilih peran IAM yang Anda buat (). TroubleshootEKSALBController-SSM-Role

      • Untuk Jenis, pilihStandard.

    • Tambahkan kebijakan akses:

      • Untuk nama Kebijakan, pilihAmazonEKSAdminViewPolicy.

      • Untuk cakupan Akses, pilihCluster.

    • Pilih Tambahkan kebijakan.

    • Verifikasi detailnya dan pilih Buat.

  4. Buat peran IAM untuk fungsi Lambda (direferensikan LambdaRoleArn seperti pada parameter input):

    • Buat peran IAM baru dengan kebijakan kepercayaan berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    • Lampirkan kebijakan AWS terkelola berikut ke peran ini:

      • AWSLambdaBasicExecutionRole

      • AWSLambdaVPCAccessExecutionRole

    • Perhatikan ARN dari peran ini karena Anda akan membutuhkannya untuk parameter LambdaRoleArn input.

  1. Arahkan ke AWSSupport-TroubleshootEKSALBControllerIssueskonsol AWS Systems Manager.

  2. Pilih Eksekusi otomatisasi.

  3. Untuk parameter input masukkan yang berikut ini:

    • AutomationAssumeRole (Opsional):

      Jenis: AWS::IAM::Role: :Arn

      Deskripsi: (Opsional) Nama Sumber Daya Amazon (ARN) dari peran AWS Identity and Access Management (IAM) yang memungkinkan Otomasi Systems Manager untuk melakukan tindakan atas nama Anda. Jika tidak ada peran yang ditentukan, Systems Manager Automation menggunakan izin pengguna yang memulai runbook ini.

      Pola yang Diizinkan: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :peran/? [A-za-Z_0-9+=, .@\ -_/] +$

    • EksClusterName (Diperlukan):

      Tipe: String

      Deskripsi: (Wajib) Nama klaster Amazon Elastic Kubernetes Service (Amazon EKS).

      Pola yang Diizinkan: ^ [0-9A-za-Z] [A-za-z0-9-_] {0,99} $

    • ALBControllerDeploymentName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama penerapan AWS Load Balancer Controller di klaster Amazon EKS Anda. Ini biasanya 'aws-load-balancer-controller' kecuali Anda telah menyesuaikannya selama instalasi.

      Pola yang Diizinkan: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

      Default: aws-load-balancer-controller

    • ALBControllerNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace Kubernetes tempat Load Balancer AWS Controller di-deploy. Secara default, ini adalah 'kube-system', tetapi mungkin berbeda jika Anda telah menginstal controller di namespace khusus.

      Pola yang Diizinkan: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

      Default: kube-system

    • ServiceAccountName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama Akun Layanan Kubernetes yang terkait dengan Load Balancer AWS Controller. Ini biasanya 'aws-load-balancer-controller' kecuali disesuaikan selama instalasi.

      Pola yang Diizinkan: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $

      Default: aws-load-balancer-controller

    • ServiceAccountNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace Kubernetes tempat Account Service untuk Load Balancer AWS Controller berada. Ini biasanya 'kube-system', tetapi mungkin berbeda jika Anda telah menggunakan namespace khusus.

      Pola yang Diizinkan: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $

      Default: kube-system

    • IngressName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama sumber daya Ingress untuk divalidasi (Application Load Balancer). Jika tidak ditentukan, validasi Ingress akan dilewati.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

      Default: “” (string kosong)

    • IngressNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace dari sumber daya Ingress. Diperlukan IngressName jika ditentukan.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

      Default: “” (string kosong)

    • ServiceName (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Nama sumber daya Layanan tertentu untuk memvalidasi anotasi Network Load Balancer (Network Load Balancer). Jika tidak ditentukan, validasi sumber daya layanan akan dilewati.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $

      Default: “” (string kosong)

    • ServiceNamespace (Opsional):

      Tipe: String

      Deskripsi: (Opsional) Namespace sumber daya Layanan. Diperlukan ServiceName jika ditentukan.

      Pola yang Diizinkan: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $

      Default: “” (string kosong)

    • LambdaRoleArn (Diperlukan):

      Jenis: AWS::IAM::Role: :Arn

      Deskripsi: (Wajib) ARN dari peran IAM yang memungkinkan fungsi ( AWS Lambda Lambda) untuk mengakses layanan dan sumber daya yang diperlukan. AWS Kaitkan kebijakan AWS terkelola: AWSLambdaBasicExecutionRole dan AWSLambdaVPCAccessExecutionRole ke peran IAM eksekusi fungsi lambda Anda.

      Pola yang Diizinkan: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :peran/? [A-za-Z_0-9+=, .@\ -_/] +$

  4. Pilih Eksekusi.

  5. Otomatisasi dimulai.

  6. Dokumen melakukan langkah-langkah berikut:

    1. ValidateAccessEntryAndOIDCProvider:

      Memvalidasi penyiapan IAM cluster Amazon EKS dengan memeriksa izin entri akses dan konfigurasi penyedia OIDC.

    2. SetupK8sAuthenticationClient:

      Jalankan SAW Document AWSSupport-SetupK 8 sApiProxy FOREKS untuk menyiapkan fungsi lambda untuk menjalankan panggilan Amazon EKS API di cluster.

    3. Verifikasi ALBController DanIRSASetup:

      Memeriksa apakah pengontrol Service Account & Application Load Balancer yang diberikan ada di ruang nama masing-masing. Juga memeriksa kebijakan Anotasi Peran & Kepercayaan Akun Layanan Pengontrol Application Load Balancer.

    4. VerifyPodIdentityWebhookAndEnv:

      Memeriksa pod-identity-webhook apakah sedang berjalan. Juga memeriksa apakah IRSA disuntikkan ke variabel ENV pod.

    5. ValidateSubnetRequirements:

      Periksa setidaknya dua subnet dalam dua AZ dengan 8 IP yang tersedia, penandaan subnet yang tepat ada untuk public/private penyeimbang beban.

    6. CheckLoadBalancerLimitsAndUsage:

      Bandingkan limit akun dengan jumlah Application Load Balancer dan Network Load Balancer.

    7. CheckIngressOrServiceAnnotations:

      Memeriksa anotasi dan spesifikasi yang benar dalam sumber daya Ingress dan Service untuk memastikan mereka dikonfigurasi dengan benar untuk Application Load Balancer dan penggunaan Network Load Balancer.

    8. CheckWorkerNodeSecurityGroupTags:

      Verifikasi bahwa tepat satu grup keamanan yang dilampirkan ke node pekerja memiliki tag cluster yang diperlukan.

    9. Tangkap ALBController Log:

      Mengambil log diagnostik terbaru dari pod AWS Load Balancer Controller yang berjalan di cluster Amazon EKS.

    10. sAuthenticationClientBersihUPK8:

      Mengeksekusi Dokumen SAW 'AWSSupport-SetupK8 sApiProxy FOREKS' menggunakan operasi 'Pembersihan' untuk membersihkan sumber daya yang dibuat sebagai bagian dari otomatisasi.

    11. GenerateReport:

      Menghasilkan laporan otomatisasi.

  7. Setelah eksekusi selesai, tinjau bagian Output untuk hasil eksekusi yang terperinci:

    1. Laporkan:

      Memberikan ringkasan komprehensif dari semua pemeriksaan yang dilakukan, termasuk status klaster Amazon EKS, pengaturan Application Load Balancer Controller, konfigurasi IRSA, persyaratan subnet, batas penyeimbang beban, ingress/service anotasi, tag grup keamanan node pekerja, dan log Application Load Balancer Controller. Ini juga mencakup masalah yang diidentifikasi dan langkah-langkah perbaikan yang direkomendasikan.

Referensi

Otomatisasi Systems Manager

Dokumentasi yang berkaitan dengan AWS Load Balancer Controller