如何在Kubernetes(K8s)中删除服务
本分分享了如何在Kubernetes中删除服务,本文共包含两个删除Kubernetes服务的方法。一种是kubectl delete删除Kubernetes服务,一种是通过引用创建文件的相同YAML文件进行删除。
什么是Kubernetes服务?
服务使应用程序内部和外部的各个组件之间能够进行通信。Kubernetes服务可帮助您将应用程序与其他应用程序或用户连接在一起。它提供了稳定的虚拟IP(VIP)地址。通过使用服务IP,客户端可以可靠地连接到在pod内运行的容器。
例如,您的应用程序具有在各个部分运行的Pod组,例如用于为用户提供前端负载的组,以及用于运行后端进程的其他组,以及连接到外部数据源的第三组。
通过这些服务,可以在这些Pod组之间建立连接。您可以在集群中提供所需数量的服务。
我们为什么使用服务?
Kubernetes Pod是不可靠且非永久的资源,因为它们被创建和销毁以匹配集群的状态。当你创建一个Kubernetes部署来运行你的应用程序,它可以动态创建和销毁豆荚。
每个Pod都有自己的IP地址,此地址可能在以后的某个时间更改,因为该Pod可能会被破坏并且可能会出现一个新IP地址。
这就导致了一个问题:如果群集中的某些Pod组(称为“后端”)为其他Pod(称为“前端”)提供了功能,那么前端如何找出并跟踪要连接的IP地址,以便前端可以使用工作量的后端部分?
这就是Kubernetes架构师提出一个称为Service的解决方案的原因。
删除Kubernetes服务
首先列出您的kubernetes集群中的可用服务。
此命令将列出在所有名称空间内创建的所有服务:
root@kmaster-rj:~/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
您可以my-dep-svc
在webapps
命名空间中看到一个名为created的服务。
让我们描述一下该服务以快速了解其功能。
root@kmaster-rj:~/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>
正如我之前提到的,服务是pod的分组。您可以确定该服务具有与此关联的两个端点。也许在以后的文章中有更多关于端点关联的内容。
服务my-dep-svc
已为其分配了虚拟IP 10.100.159.167
。
为了进行快速演示,让我们尝试使用服务IP(10.100.159.167)及其端口(8080)访问在这两个终结点(pod)上运行的应用程序。
root@kmaster-rj:~/pod-create# curl 10.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
root@kmaster-rj:~/pod-create#
我想您现在可能已经对Kubernetes服务有了一个基本的想法。
现在,有两种删除Kubernetes中服务的方法。让我们一一看。
方法1:使用kubectl delete命令删除服务
您可以通过直接向kubectl命令提供资源名称来删除Kubernetes中的服务:
root@kmaster-rj:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted
现在,如果您列出所有服务:
root@kmaster-rj:~/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
方法2:通过引用创建该文件的相同YAML文件进行删除
从中my-dep-svc
创建服务的YAML配置文件。
root@kmaster-rj:~/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
现在,通过引用用于创建该服务的同一YAML文件来删除该服务。
root@kmaster-rj:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted
再次列出所有服务。
root@kmaster-rj:~/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
以上就是如何在kubernets中删除服务的全部内容。
{{ nComment.author.nickname }}
{{ nComment.time }}