Dalam tip Kubernetes ini, Anda akan mempelajari cara menghapus layanan di Kubernetes.
Apa itu Layanan Kubernetes?
Layanan memungkinkan komunikasi antara berbagai komponen di dalam dan di luar aplikasi. Layanan Kubernetes membantu Anda menghubungkan aplikasi dengan aplikasi atau pengguna lain. Ini memberikan alamat IP virtual (VIP) yang stabil. Dengan menggunakan IP layanan, klien dapat dengan andal terhubung ke container yang berjalan di dalam pod.
Misalnya, aplikasi Anda memiliki grup pod yang berjalan untuk berbagai bagian seperti grup untuk melayani beban front end kepada pengguna dan grup lain untuk menjalankan proses back end dan grup ketiga yang menghubungkan ke sumber data eksternal.
Ini adalah layanan yang memungkinkan konektivitas antara kelompok-kelompok pod ini. Anda dapat memiliki layanan sebanyak yang diperlukan dalam cluster.
Mengapa kami menggunakan Layanan?
Pod Kubernetes adalah resource yang tidak dapat diandalkan dan tidak permanen karena dibuat dan dimusnahkan agar sesuai dengan status cluster Anda. Saat Anda membuat Kubernetes Deployment untuk menjalankan aplikasi Anda, itu dapat membuat dan menghancurkan Pod secara dinamis.
Setiap pod memiliki alamat IP sendiri dan itu mungkin berubah di lain waktu karena pod tersebut mungkin rusak dan yang baru mungkin muncul.
Hal ini menyebabkan masalah:jika beberapa set Pod (sebut saja "backend") menyediakan fungsionalitas ke Pod lain (sebut saja "frontend") di dalam cluster Anda, bagaimana frontend mengetahui dan melacak alamat IP mana yang akan dihubungkan , sehingga frontend dapat menggunakan bagian backend dari beban kerja?
Itulah alasan arsitek Kubernetes menemukan solusi yang dikenal sebagai Layanan.
Menghapus layanan Kubernetes
Daftar pertama layanan yang tersedia di cluster kubernetes Anda.
Perintah ini akan mencantumkan semua layanan yang dibuat dalam semua ruang nama:
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
webapps my-dep-svc ClusterIP 10.100.159.167 <none> 8080/TCP 2m45s tier=front-end
Anda dapat melihat layanan bernama my-dep-svc
dibuat dalam webapps
ruang nama.
Mari kita jelaskan layanan tersebut untuk memahami fungsinya dengan cepat.
[email protected]:~/pod-create# kubectl describe svc my-dep-svc --namespace=webapps
Name: my-dep-svc
Namespace: webapps
Labels: <none>
Annotations: Selector: tier=front-end
Type: ClusterIP
IP: 10.100.159.167
Port: <unset> 8080/TCP
TargetPort: 80/TCP
Endpoints: 172.16.213.223:80,172.16.213.5:80
Session Affinity: None
Events: <none>
Seperti yang saya sebutkan sebelumnya, layanan adalah pengelompokan pod. Anda dapat mengetahui bahwa layanan ini memiliki dua titik akhir yang terkait dengan ini. Lebih lanjut tentang asosiasi titik akhir mungkin di artikel mendatang.
Layanan my-dep-svc
memiliki IP virtual yang ditetapkan untuknya 10.100.159.167
.
Untuk demo cepat, mari kita coba mengakses aplikasi yang berjalan di kedua endpoint (pod) tersebut dengan menggunakan Service IP (10.100.159.167) dan port-nya (8080).
[email protected]:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
[email protected]:~/pod-create#
Saya rasa Anda mungkin sudah mendapatkan ide dasar tentang layanan Kubernetes.
Sekarang, ada dua cara untuk menghapus layanan di Kubernetes. Mari kita lihat satu per satu.
Metode 1:Gunakan perintah kubectl delete untuk menghapus layanan
Anda dapat menghapus layanan di Kubernetes dengan memberikan nama sumber daya langsung ke perintah kubectl:
[email protected]:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
Sekarang, jika Anda mencantumkan semua layanan:
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
Metode 2:Hapus dengan merujuk file YAML yang sama dengan yang dibuat
File konfigurasi YAML dari mana layanan my-dep-svc
telah dibuat.
[email protected]:~/pod-create# cat my-dep-svc.yml
apiVersion: v1
kind: Service
metadata:
name: my-dep-svc
namespace: webapps
spec:
selector:
tier: front-end
ports:
- protocol: TCP
port: 8080
targetPort: 80
Sekarang hapus layanan dengan merujuk file YAML yang sama yang digunakan untuk membuatnya.
[email protected]:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
Sekali lagi daftar semua layanan.
[email protected]:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24d <none>
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 64d k8s-app=kube-dns
Itu dia. Anda belajar menghapus layanan di Kubernetes. Nantikan yang lainnya.