Исследование команды kubectl expose
Команда kubectl expose
используется для создания нового сервиса (service) Kubernetes, который делает доступным существующий ресурс, такой как под (pod), развертывание (deployment) или контроллер репликации (replication controller). Она упрощает настройку сети, автоматически создавая сервисы на основе предоставленного ресурса.
Выполните следующую команду, чтобы просмотреть доступные параметры для kubectl expose
:
kubectl expose -h
Вы увидите следующий вывод:
Создать новый сервис Kubernetes на основе существующего ресурса.
Находит развертывание, сервис, набор реплик (replica set), контроллер репликации или под по имени и использует селектор этого ресурса в качестве селектора для нового сервиса на указанном порту. Развертывание или набор реплик будут доступны как сервис только в том случае, если их селектор может быть преобразован в селектор, поддерживаемый сервисом, то есть когда селектор содержит только компонент matchLabels. Обратите внимание, что если порт не указан с помощью флага --port и у экспортируемого ресурса есть несколько портов, все они будут использованы новым сервисом. Также, если метки не указаны, новый сервис будет использовать метки из ресурса, который он экспортирует.
Возможные ресурсы включают (без учета регистра):
pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs)
Примеры:
## Создать сервис для реплицированного nginx, который слушает на порту 80 и подключается к контейнерам на порту 8000
kubectl expose rc nginx --port=80 --target-port=8000
## Создать сервис для контроллера репликации, идентифицируемого по типу и имени, указанным в файле "nginx-controller.yaml",
который слушает на порту 80 и подключается к контейнерам на порту 8000
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000
## Создать сервис для пода valid-pod, который слушает на порту 444 с именем "frontend"
kubectl expose pod valid-pod --port=444 --name=frontend
## Создать второй сервис на основе вышеуказанного сервиса, экспортируя порт контейнера 8443 как порт 443 с именем
"nginx-https"
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https
## Создать сервис для реплицированного потокового приложения на порту 4100, балансирующий UDP-трафик и имеющий имя 'video-stream'.
kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream
## Создать сервис для реплицированного nginx с использованием набора реплик, который слушает на порту 80 и подключается к контейнерам на
порту 8000
kubectl expose rs nginx --port=80 --target-port=8000
## Создать сервис для развертывания nginx, который слушает на порту 80 и подключается к контейнерам на порту 8000
kubectl expose deployment nginx --port=80 --target-port=8000