如何在Kubernetes(K8s)中删除服务


原文地址:如何在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-svcwebapps命名空间中看到一个名为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中删除服务的全部内容。

评论

登录后评论

服务器优惠活动

Top