Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan dan men-debug kluster Amazon EKS
Svenja Raether dan Mathew George, Amazon Web Services
Ringkasan
Container menjadi bagian penting dari pengembangan aplikasi cloud native. Kubernetes menyediakan cara yang efisien untuk mengelola dan mengatur kontainer. Amazon Elastic Kubernetes Service (Amazon EKS) adalah layanan kesesuaian Kubernetes
Penting bagi pengembang dan administrator untuk mengetahui opsi debugging saat menjalankan beban kerja kontainer. Pola ini memandu Anda melalui penerapan dan debugging container di Amazon EKS dengan AWS Fargate
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Peran AWS Identity and Access Management (IAM) yang dikonfigurasi dengan izin yang memadai untuk membuat dan berinteraksi dengan Amazon EKS, peran IAM, dan peran terkait layanan
AWS Command Line Interface (AWS CLI) diinstal pada mesin lokal
Batasan
Pola ini memberi pengembang praktik debugging yang berguna untuk lingkungan pengembangan. Ini tidak menyatakan praktik terbaik untuk lingkungan produksi.
Jika Anda menjalankan Windows, gunakan perintah khusus sistem operasi Anda untuk mengatur variabel lingkungan.
Versi produk yang digunakan
versi kubectl dalam satu perbedaan versi minor dari bidang kontrol Amazon EKS yang Anda gunakan
Arsitektur
Tumpukan teknologi
Penyeimbang Beban Aplikasi
Amazon EKS
AWS Fargate
Arsitektur target
Semua sumber daya yang ditunjukkan dalam diagram disediakan dengan menggunakan eksctl dan kubectl perintah yang dikeluarkan dari mesin lokal. Cluster pribadi harus dijalankan dari instance yang ada di dalam VPC pribadi.
Arsitektur target terdiri dari cluster EKS menggunakan tipe peluncuran Fargate. Ini menyediakan kapasitas komputasi sesuai permintaan dan berukuran tepat tanpa perlu menentukan jenis server. Kluster EKS memiliki bidang kontrol, yang digunakan untuk mengelola node cluster dan beban kerja. Pod disediakan ke subnet VPC pribadi yang mencakup beberapa Availability Zone. Galeri Publik Amazon ECR direferensikan untuk mengambil dan menyebarkan image server web NGINX ke pod cluster.
Diagram menunjukkan cara mengakses bidang kontrol Amazon EKS menggunakan kubectl perintah dan cara mengakses aplikasi dengan menggunakan Application Load Balancer.
.

Mesin lokal di luar AWS Cloud mengirimkan perintah ke bidang kontrol Kubernetes di dalam VPC yang dikelola Amazon EKS.
Amazon EKS menjadwalkan pod berdasarkan pemilih di profil Fargate.
Mesin lokal membuka URL Application Load Balancer di browser.
Application Load Balancer membagi lalu lintas antara pod Kubernetes di node klaster Fargate yang digunakan dalam subnet pribadi yang mencakup beberapa Availability Zone.
Alat
Layanan AWS
Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan Kubernetes di AWS tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri. Pola ini juga menggunakan alat baris perintah eksctl untuk bekerja dengan cluster Kubernetes di Amazon EKS.
AWS Fargate membantu Anda menjalankan container tanpa perlu mengelola server atau instans Amazon Elastic Compute Cloud (Amazon). EC2 Ini digunakan bersama dengan Amazon Elastic Container Service (Amazon ECS).
Elastic Load Balancing (ELB) mendistribusikan lalu lintas aplikasi atau jaringan yang masuk ke beberapa target. Misalnya, Anda dapat mendistribusikan lalu lintas di seluruh instans, container, dan alamat IP Amazon Elastic Compute Cloud (Amazon EC2) di satu atau beberapa Availability Zone. Pola ini menggunakan komponen pengendali AWS Load Balancer Controller untuk membuat Application Load Balancer ketika ingress Kubernetes
disediakan. Application Load Balancer mendistribusikan lalu lintas masuk di antara beberapa target.
Alat-alat lainnya
Helm
adalah manajer paket open-source untuk Kubernetes. Dalam pola ini, Helm digunakan untuk menginstal AWS Load Balancer Controller. Kubernetes
adalah sistem sumber terbuka untuk mengotomatiskan penerapan, penskalaan, dan pengelolaan aplikasi kontainer. NGINX
adalah web berkinerja tinggi dan server proxy terbalik.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat file. | Menggunakan kode di bagian Informasi tambahan, buat file-file berikut:
| Pengembang aplikasi, administrator AWS, AWS DevOps |
Tetapkan variabel lingkungan. | catatanJika perintah gagal karena tugas yang belum selesai sebelumnya, tunggu beberapa detik, lalu jalankan perintah lagi. Pola ini menggunakan AWS Region dan nama cluster yang ditentukan dalam file
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Buat cluster EKS. | Untuk membuat cluster EKS yang menggunakan spesifikasi dari
File berisi Profil Fargate default dikonfigurasi dengan dua pemilih ( | Pengembang aplikasi, AWS DevOps, administrator AWS |
Periksa cluster yang dibuat. | Untuk memeriksa cluster yang dibuat, jalankan perintah berikut.
Outputnya harus sebagai berikut.
Periksa profil Fargate yang dibuat dengan menggunakan file.
Perintah ini menampilkan informasi tentang sumber daya. Anda dapat menggunakan informasi untuk memverifikasi cluster yang dibuat. Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan server web NGINX. | Untuk menerapkan penyebaran server web NGINX pada cluster, jalankan perintah berikut.
Outputnya harus sebagai berikut.
Penyebaran mencakup tiga replika gambar NGINX yang diambil dari Galeri Publik Amazon ECR. Gambar di-deploy ke namespace default dan diekspos pada port 80 pada pod yang sedang berjalan. | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Periksa penerapan dan pod. | (Opsional) Periksa penyebaran. Anda dapat memverifikasi status penyebaran Anda dengan perintah berikut.
Outputnya harus sebagai berikut.
Pod adalah sebuah objek deployable di Kubernetes, yang berisi satu atau beberapa kontainer. Untuk membuat daftar semua pod, jalankan perintah berikut.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator AWS |
Skala penyebaran. | Untuk menskalakan penyebaran dari tiga replika yang ditentukan menjadi empat replika, gunakan perintah berikut.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tetapkan variabel lingkungan. | Jelaskan CloudFormation tumpukan cluster untuk mengambil informasi tentang VPC-nya.
Outputnya harus sebagai berikut.
Salin ID VPC dan ekspor sebagai variabel lingkungan.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Konfigurasikan IAM untuk akun layanan cluster. | Gunakan
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Unduh dan buat kebijakan IAM. | Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan ke APIs AWS atas nama Anda.
Buat kebijakan di akun AWS Anda dengan menggunakan AWS CLI.
Anda akan melihat output berikut.
Simpan Nama Sumber Daya Amazon (ARN) dari kebijakan sebagai.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Buat akun layanan IAM. | Buat akun layanan IAM bernama
Verifikasi pembuatannya.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Instal AWS Load Balancer Controller. | Perbarui repositori Helm.
Tambahkan repositori bagan Amazon EKS ke repo Helm.
Terapkan definisi sumber daya kustom Kubernetes (CRDs) yang digunakan oleh AWS Load Balancer Controller
Outputnya harus sebagai berikut.
Instal bagan Helm, menggunakan variabel lingkungan yang Anda tetapkan sebelumnya.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Buat layanan NGINX. | Buat layanan untuk mengekspos pod NGINX dengan menggunakan file.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Buat sumber daya ingress Kubernetes. | Buat layanan untuk mengekspos ingress Kubernetes NGINX dengan menggunakan file tersebut.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Dapatkan URL penyeimbang beban. | Untuk mengambil informasi ingress, gunakan perintah berikut.
Outputnya harus sebagai berikut.
Salin | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Pilih pod. | Buat daftar semua pod, dan salin nama pod yang diinginkan.
Outputnya harus sebagai berikut.
Perintah ini mencantumkan pod yang ada dan informasi tambahan. Jika Anda tertarik dengan pod tertentu, isi nama pod yang Anda minati untuk
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Akses log. | Dapatkan log dari pod yang ingin Anda debug.
| Pengembang aplikasi, administrator sistem AWS, AWS DevOps |
Teruskan port NGINX. | Gunakan port-forwarding untuk memetakan port pod untuk mengakses server web NGINX ke port di komputer lokal Anda.
Di browser Anda, buka URL berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Jalankan perintah di dalam pod. | Untuk melihat
Anda dapat menggunakan | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Salin file ke pod. | Hapus
Unggah file lokal yang disesuaikan
Anda dapat menggunakan | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Gunakan port-forwarding untuk menampilkan perubahan. | Gunakan port-forwarding untuk memverifikasi perubahan yang Anda buat pada pod ini.
Buka URL berikut di browser Anda.
Perubahan yang diterapkan pada | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus penyeimbang beban. | Hapus masuknya.
Outputnya harus sebagai berikut.
Hapus layanan.
Outputnya harus sebagai berikut.
Hapus pengontrol penyeimbang beban.
Outputnya harus sebagai berikut.
Hapus akun layanan.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Hapus penyebaran. | Untuk menghapus sumber daya penyebaran, gunakan perintah berikut.
Outputnya harus sebagai berikut.
| Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Hapus klaster . | Hapus kluster EKS dengan menggunakan perintah berikut, di
Perintah ini menghapus seluruh cluster, termasuk semua sumber daya terkait. | Pengembang aplikasi, AWS DevOps, administrator sistem AWS |
Hapus kebijakan IAM. | Hapus kebijakan yang dibuat sebelumnya dengan menggunakan AWS CLI.
| Pengembang aplikasi, administrator AWS, AWS DevOps |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Anda menerima pesan galat pada pembuatan klaster
| Buat cluster lagi menggunakan Availability Zones yang direkomendasikan dari pesan kesalahan. Tentukan daftar Availability Zones di baris terakhir |
Sumber daya terkait
Informasi tambahan
clusterconfig-fargate.yaml
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-fargate region: us-east-1 fargateProfiles: - name: fp-default selectors: - namespace: default - namespace: kube-system
nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: "nginx-deployment" namespace: "default" spec: replicas: 3 selector: matchLabels: app: "nginx" template: metadata: labels: app: "nginx" spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:latest ports: - containerPort: 80
nginx-service.yaml
apiVersion: v1 kind: Service metadata: annotations: alb.ingress.kubernetes.io/target-type: ip name: "nginx-service" namespace: "default" spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app: "nginx"
nginx-ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: "default" name: "nginx-ingress" annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: "nginx-service" port: number: 80
index.html
<!DOCTYPE html> <html> <body> <h1>Welcome to your customized nginx!</h1> <p>You modified the file on this running pod</p> </body> </html>