如何刪除 Kubernetes 中的服務(wù)
什么是 Kubernetes 服務(wù)
服務(wù)使應(yīng)用程序內(nèi)外的各種組件之間能夠進(jìn)行通信。Kubernetes 服務(wù)可以幫助我們將應(yīng)用程序與其他應(yīng)用程序或用戶連接在一起。它提供了一個(gè)穩(wěn)定的虛擬 IP(VIP)地址。通過(guò)使用服務(wù) IP,客戶端可以可靠地連接到 pods 內(nèi)運(yùn)行的容器。
例如,你的應(yīng)用程序有多組 pod 運(yùn)行在不同的部分,比如一組用于向用戶提供前端負(fù)載,另一組用于運(yùn)行后端進(jìn)程,第三組連接到外部數(shù)據(jù)源。
正是服務(wù)實(shí)現(xiàn)了這些 pod 組之間的連接,使得我們可以在集群中擁有所需數(shù)量的服務(wù)。
為什么要使用服務(wù)
Kubernetes Pods 是不可靠且非永久性的資源,因?yàn)樗鼈兪歉鶕?jù)集群的狀態(tài)創(chuàng)建和銷(xiāo)毀的。當(dāng)你創(chuàng)建一個(gè) Kubernetes 部署來(lái)運(yùn)行你的應(yīng)用程序時(shí),它可以動(dòng)態(tài)地創(chuàng)建和銷(xiāo)毀 Pods。
每個(gè) pod 都有自己的 IP 地址,并且有可能發(fā)生變化,因?yàn)檫@個(gè) pod 有可能被注銷(xiāo)然后再出現(xiàn)一個(gè)新的。
這就導(dǎo)致了一個(gè)問(wèn)題:如果某組 Pod(稱之為“后端”)為集群內(nèi)的其他 Pod(也稱之為“前端”)提供功能,那么前端如何找到并跟蹤要連接的 IP 地址,以便前端可以使用工作負(fù)載的后端部分呢?
這就是 Kubernetes 設(shè)計(jì)者提出服務(wù)這一解決方案的原因。
刪除 Kubernetes 服務(wù)
要?jiǎng)h除服務(wù),首先需要列出 kubernetes 集群中的可用服務(wù)列表。
如下命令可列出所有在命名空間內(nèi)創(chuàng)建的所有服務(wù):?
如上所示,在命名空間 webapps 中可以看到一個(gè)名為 my-dep-svc 的服務(wù)。
讓我們描述一下該服務(wù),以便快速理解其功能。如下:?
正如我們前面提到的,服務(wù)是一組 pod,可以看到該服務(wù)有兩個(gè)與之相關(guān)聯(lián)的端(endpoints)。
服務(wù) my-dep-svc 的虛擬 IP 地址為 10.100.159.167。
為了快速演示,讓我們嘗試使用服務(wù)IP(10.100.159.167)及其端口(8080)訪問(wèn)在這兩個(gè)端點(diǎn)(pod)上運(yùn)行的應(yīng)用程序。如下:?
這樣大家對(duì) Kubernetes 服務(wù)應(yīng)該有了一個(gè)基本的了解。
刪除 Kubernetes 中的服務(wù),大致有兩種方法。
方法1:使用 kubectl delete 命令刪除服務(wù)
根據(jù)服務(wù)資源的名稱,使用 kubectl 命令來(lái)刪除該服務(wù)。如下所示:?
現(xiàn)在再看一下服務(wù)列表:?
方法2:通過(guò)引用創(chuàng)建該文件的相同 YAML 文件進(jìn)行刪除
創(chuàng)建 my-dep-svc 服務(wù)的 YAML 配置文件。?
現(xiàn)在,通過(guò)引用用于創(chuàng)建服務(wù)的 YAML 文件來(lái)刪除該服務(wù)。?
再列出所有服務(wù):?