ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как удалить сервис в Kubernetes

Как читать узлы в Kubernetes

Из этого совета Kubernetes вы узнаете об удалении сервиса в Kubernetes.

 

Что такое сервис Kubernetes?

Сервисы обеспечивают связь между различными компонентами внутри и вне приложения. Сервисы Kubernetes помогают вам соединять приложения вместе с другими приложениями или пользователями. Он обеспечивает стабильный виртуальный IP-адрес (VIP). Используя служебный IP-адрес, клиенты могут надежно подключаться к контейнерам, работающим внутри модулей.

Например, в вашем приложении есть группы модулей, работающих для различных разделов, таких как группа для обслуживания клиентской нагрузки для пользователей и другая группа для запуска внутренних процессов, а третья группа подключается к внешнему источнику данных.

Это службы, которые обеспечивают связь между этими группами модулей. В кластере может быть столько сервисов, сколько требуется.

 

Почему мы пользуемся Сервисом?

Модули Kubernetes – ненадежные и непостоянные ресурсы, потому что они создаются и уничтожаются в соответствии с состоянием вашего кластера. Когда вы создаете развертывание Kubernetes для запуска своего приложения, оно может динамически создавать и уничтожать поды.

У каждого модуля есть свой IP-адрес, который может измениться позже, потому что этот модуль может быть уничтожен и может появиться новый.

Это приводит к проблеме: если какой-то набор модулей (назовите их «бэкэндами») предоставляет функциональность другим модулям (назовите их «внешними интерфейсами») внутри вашего кластера, как внешние интерфейсы узнают и отслеживают, к какому IP-адресу подключаться? , чтобы веб-интерфейс мог использовать внутреннюю часть рабочей нагрузки?

По этой причине архитекторы Kubernetes предложили решение, известное как Service.

 

Удаление сервиса Kubernetes

Сначала перечислите доступные сервисы в вашем кластере Kubernetes.

Эта команда выведет список всех сервисов, созданных во всех пространствах имен:

root@andreyex:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE     SELECTOR
default       kubernetes   ClusterIP   15.86.0.1        <none>        443/TCP                  24d     <none>
kube-system   kube-dns     ClusterIP   15.86.0.10       <none>        53/UDP,53/TCP,9153/TCP   64d     k8s-app=kube-dns
webapps       my-dep-svc   ClusterIP   15.100.159.167   <none>        8080/TCP                 2m45s   tier=front-end

 

Вы можете увидеть службу с именем, my-dep-svcсозданную в пространстве имен webapps.

Давайте опишем эту услугу, чтобы быстро понять ее функциональность.

root@andreyex:~/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:                15.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>

 

Как мы упоминали ранее, услуга – это группа модулей. Вы можете сказать, что у этой службы есть две конечные точки, связанные с ней. Подробнее об ассоциации конечных точек, возможно, в будущей статье.

Сервису my-dep-svc назначен виртуальный IP-адрес 15.100.159.167.

Для быстрой демонстрации давайте попробуем получить доступ к приложению, работающему на этих двух конечных точках (модулях), используя IP-адрес службы (15.100.159.167) и его порт (8080).

root@andreyex:~/pod-create# curl 15.100.159.167:8080
<html><body><h1>It works!</h1></body></html>
root@andreyex:~/pod-create#

 

Мы думаем, что вы уже получили общее представление о сервисах Kubernetes.

Теперь есть два способа удалить сервис в Kubernetes. Посмотрим на них одного за другим.

 

Метод 1. Используйте команду kubectl delete для удаления службы

Вы можете удалить службу в Kubernetes, указав имя ресурса непосредственно в команде kubectl:

root@andreyex:~/pod-create# kubectl delete svc --namespace=webapps my-dep-svc
service "my-dep-svc" deleted

 

Теперь, если вы перечислите все услуги:

root@andreyex:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
default       kubernetes   ClusterIP   15.86.0.1    <none>        443/TCP                  24d   <none>
kube-system   kube-dns     ClusterIP   15.86.0.10   <none>        53/UDP,53/TCP,9153/TCP   64d   k8s-app=kube-dns

 

Метод 2: удалить, указав тот же файл YAML, с помощью которого он был создан

Файл конфигурации YAML, из которого была создана служба my-dep-svc.

root@andreyex:~/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@andreyex:~/pod-create# kubectl delete -f my-dep-svc.yml
service "my-dep-svc" deleted

 

Снова перечислите все услуги.

root@andreyex:~/pod-create# kubectl get svc --all-namespaces -o wide
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   SELECTOR
default       kubernetes   ClusterIP   15.86.0.1    <none>        443/TCP                  24d   <none>
kube-system   kube-dns     ClusterIP   15.86.0.10   <none>        53/UDP,53/TCP,9153/TCP   64d   k8s-app=kube-dns

 

Вот и все. Вы научились удалять сервис в Kubernetes. Следите за новостями.

Exit mobile version