Из этого совета 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. Следите за новостями.