Bantu meningkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih GitHub tautan Edit halaman ini di yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan aplikasi sampel di Linux
Dalam topik ini, Anda menyebarkan aplikasi sampel ke cluster Anda di node Linux.
Prasyarat
-
Cluster Kubernetes yang ada dengan setidaknya satu node. Jika Anda tidak memiliki cluster Amazon EKS yang ada, Anda dapat menyebarkannya menggunakan salah satu panduan diMemulai dengan Amazon EKS.
-
Kubectldiinstal pada komputer Anda. Untuk informasi selengkapnya, lihat Siapkan kubectl dan eksctl . -
Kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda. Untuk informasi selengkapnya, lihat Hubungkan kubectl ke cluster EKS dengan membuat file kubeconfig. -
Jika Anda berencana untuk menerapkan beban kerja sampel Anda ke Fargate, maka Anda harus memiliki profil Fargate yang ada yang menyertakan namespace yang sama yang dibuat dalam tutorial ini, yaitu
eks-sample-app, kecuali Anda mengubah nama. Jika Anda membuat cluster dengan salah satu panduan diMemulai dengan Amazon EKS, maka Anda harus membuat profil baru, atau menambahkan namespace ke profil yang ada, karena profil yang dibuat dalam panduan memulai tidak menentukan namespace yang digunakan dalam tutorial ini. VPC Anda juga harus memiliki setidaknya satu subnet pribadi.
Meskipun banyak variabel dapat diubah dalam langkah-langkah berikut, kami merekomendasikan hanya mengubah nilai variabel jika ditentukan. Setelah Anda memiliki pemahaman yang lebih baik tentang Pod, penerapan, dan layanan Kubernetes, Anda dapat bereksperimen dengan mengubah nilai lainnya.
Buat namespace
Sebuah namespace memungkinkan Anda untuk mengelompokkan sumber daya di Kubernetes. Untuk informasi selengkapnya, lihat Ruang nama namespace dalam Definisikan Pod mana yang menggunakan AWS Fargate saat diluncurkan adalah. eks-sample-app
kubectl create namespace eks-sample-app
Membuat penerapan Kubernetes
Buat penerapan Kubernetes. Penerapan sampel ini menarik gambar kontainer dari repositori publik dan menyebarkan tiga replika (Pod individual) ke cluster Anda. Untuk mempelajari selengkapnya, lihat Pener apan
-
Simpan konten berikut ini ke file bernama
eks-sample-deployment.yaml. Wadah dalam aplikasi sampel tidak menggunakan penyimpanan jaringan, tetapi Anda mungkin memiliki aplikasi yang perlu. Untuk informasi selengkapnya, lihat Gunakan penyimpanan data aplikasi untuk klaster Anda.-
amd64Atauarm64valuesdi bawahkubernetes.io/archkunci berarti bahwa aplikasi dapat digunakan ke salah satu arsitektur perangkat keras (jika Anda memiliki keduanya di cluster Anda). Ini dimungkinkan karena gambar ini adalah gambar multi-arsitektur, tetapi tidak semuanya. Anda dapat menentukan arsitektur perangkat keras yang didukung gambar dengan melihat detail gambardi repositori tempat Anda menariknya. Saat menerapkan gambar yang tidak mendukung jenis arsitektur perangkat keras, atau yang Anda tidak ingin gambar digunakan, hapus jenis itu dari manifes. Untuk informasi selengkapnya, lihat L Well-Known abel, Anotasi, dan Taints dalam dokumentasi Kubernetes. -
kubernetes.io/os: linuxnodeSelectorArtinya jika Anda memiliki node Linux dan Windows (misalnya) di cluster Anda, gambar hanya akan digunakan ke node Linux. Untuk informasi selengkapnya, lihat L Well-Known abel, Anotasi, dan Taintsdalam dokumentasi Kubernetes. apiVersion: apps/v1 kind: Deployment metadata: name: eks-sample-linux-deployment namespace: eks-sample-app labels: app: eks-sample-linux-app spec: replicas: 3 selector: matchLabels: app: eks-sample-linux-app template: metadata: labels: app: eks-sample-linux-app spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/arch operator: In values: - amd64 - arm64 containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.23 ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: linux
-
-
Terapkan manifes penerapan ke cluster Anda.
kubectl apply -f eks-sample-deployment.yaml
Buat layanan
Layanan memungkinkan Anda mengakses semua replika melalui satu alamat IP atau nama. Untuk informasi selengkapnya, lihat Layanan
-
Simpan konten berikut ini ke file bernama
eks-sample-service.yaml. Kubernetes menetapkan layanan alamat IP sendiri yang hanya dapat diakses dari dalam cluster. Untuk mengakses layanan dari luar cluster Anda, gunakan Load Balancer Controller untuk menyeimbangkan aplikasi atau lalu lintas jaringan ke layanan. AWSapiVersion: v1 kind: Service metadata: name: eks-sample-linux-service namespace: eks-sample-app labels: app: eks-sample-linux-app spec: selector: app: eks-sample-linux-app ports: - protocol: TCP port: 80 targetPort: 80 -
Terapkan manifes layanan ke cluster Anda.
kubectl apply -f eks-sample-service.yaml
Tinjau sumber daya yang dibuat
-
Lihat semua sumber daya yang ada di namespace
eks-sample-app.kubectl get all -n eks-sample-appContoh output adalah sebagai berikut.
NAME READY STATUS RESTARTS AGE pod/eks-sample-linux-deployment-65b7669776-m6qxz 1/1 Running 0 27m pod/eks-sample-linux-deployment-65b7669776-mmxvd 1/1 Running 0 27m pod/eks-sample-linux-deployment-65b7669776-qzn22 1/1 Running 0 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/eks-sample-linux-service ClusterIP 10.100.74.8 <none> 80/TCP 32m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/eks-sample-linux-deployment 3/3 3 3 27m NAME DESIRED CURRENT READY AGE replicaset.apps/eks-sample-linux-deployment-776d8f8fd8 3 3 3 27mPada output, Anda melihat layanan dan penerapan yang ditentukan dalam manifes sampel yang digunakan pada langkah sebelumnya. Anda juga melihat tiga Pod. Ini karena
3replicasditentukan dalam manifes sampel. Untuk informasi selengkapnya tentang Pod, lihat Poddi dokumentasi Kubernetes. Kubernetes secara otomatis membuat replicasetsumber daya, meskipun tidak ditentukan dalam manifes sampel. Untuk informasi selengkapnyaReplicaSets, lihat dokument ReplicaSetasi Kubernetes. catatan
Kubernetes mempertahankan jumlah replika yang ditentukan dalam manifes. Jika ini adalah penerapan produksi dan Anda ingin Kubernetes menskalakan jumlah replika secara horizontal atau menskalakan sumber daya komputasi secara vertikal untuk Pod, gunakan penerapan S cale pod dengan Horizontal Pod Autoscaler dan sumber daya Adjust pod dengan Vertical Pod Autoscaler untuk melakukannya.
-
Lihat detail layanan yang di-deploy.
kubectl -n eks-sample-app describe service eks-sample-linux-serviceContoh output adalah sebagai berikut.
Name: eks-sample-linux-service Namespace: eks-sample-app Labels: app=eks-sample-linux-app Annotations: <none> Selector: app=eks-sample-linux-app Type: ClusterIP IP Families: <none> IP: 10.100.74.8 IPs: 10.100.74.8 Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints: 192.168.24.212:80,192.168.50.185:80,192.168.63.93:80 Session Affinity: None Events: <none>Pada output sebelumnya, nilai untuk
IP:adalah alamat IP unik yang dapat dicapai dari node atau Pod mana pun di dalam cluster, tetapi tidak dapat dijangkau dari luar cluster. Nilai untukEndpointsadalah alamat IP yang ditetapkan dari dalam VPC Anda ke Pod yang merupakan bagian dari layanan. -
Lihat detail salah satu Pod yang tercantum dalam output saat Anda melihat namespace di langkah sebelumnya. Ganti
65b7669776-m6qxzdengan nilai yang dikembalikan untuk salah satu Pod Anda.kubectl -n eks-sample-app describe pod eks-sample-linux-deployment-65b7669776-m6qxzContoh keluaran disingkat
Name: eks-sample-linux-deployment-65b7669776-m6qxz Namespace: eks-sample-app Priority: 0 Node: ip-192-168-45-132.us-west-2.compute.internal/192.168.45.132 [...] IP: 192.168.63.93 IPs: IP: 192.168.63.93 Controlled By: ReplicaSet/eks-sample-linux-deployment-65b7669776 [...] Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m20s default-scheduler Successfully assigned eks-sample-app/eks-sample-linux-deployment-65b7669776-m6qxz to ip-192-168-45-132.us-west-2.compute.internal [...]Pada output sebelumnya, nilai untuk
IP:adalah IP unik yang ditetapkan ke Pod dari blok CIDR yang ditetapkan ke subnet tempat node berada. Jika Anda lebih suka menetapkan alamat IP Pods dari blok CIDR yang berbeda, Anda dapat mengubah perilaku default. Untuk informasi selengkapnya, lihat Menerapkan Pod di subnet alternatif dengan jaringan khusus. Anda juga dapat melihat bahwa penjadwal Kubernetes menjadwalkan PodNodedengan alamat IP.192.168.45.132Tip
Alih-alih menggunakan baris perintah, Anda dapat melihat banyak detail tentang Pod, layanan, penerapan, dan sumber daya Kubernetes lainnya di. Konsol Manajemen AWS Untuk informasi selengkapnya, lihat Lihat sumber daya Kubernetes di Konsol Manajemen AWS.
Jalankan shell pada Pod
-
Jalankan shell pada Pod yang Anda jelaskan pada langkah sebelumnya, ganti
65b7669776-m6qxzdengan ID salah satu Pod Anda.kubectl exec -it eks-sample-linux-deployment-65b7669776-m6qxz -n eks-sample-app -- /bin/bash -
Dari Pod shell, lihat output dari server web yang diinstal dengan penerapan Anda di langkah sebelumnya. Anda hanya perlu menentukan nama layanan. Ini diselesaikan ke alamat IP layanan oleh CoreDNS, yang digunakan dengan cluster Amazon EKS, secara default.
curl eks-sample-linux-serviceContoh output adalah sebagai berikut.
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> [...] -
Dari Pod shell, lihat server DNS untuk Pod.
cat /etc/resolv.confContoh output adalah sebagai berikut.
nameserver 10.100.0.10 search eks-sample-app.svc.cluster.local svc.cluster.local cluster.local us-west-2.compute.internal options ndots:5Pada output sebelumnya,
10.100.0.10secara otomatis ditetapkan sebagainameserveruntuk semua Pod yang dikerahkan ke cluster. -
Putuskan sambungan dari Pod dengan mengetik
exit. -
Setelah selesai dengan aplikasi sampel, Anda dapat menghapus namespace sampel, layanan, dan penerapan dengan perintah berikut.
kubectl delete namespace eks-sample-app
Langkah Berikutnya
Setelah Anda menerapkan aplikasi sampel, Anda mungkin ingin mencoba beberapa latihan berikut: