У меня есть требование выставлять модули, используя селектор в качестве службы NodePort из командной строки. Там может быть один или несколько стручков. И сервис должен динамически включать модули по мере их поступления и выхода. Например,
NAMESPACE NAME READY STATUS RESTARTS AGE
rakesh rakesh-pod1 1/1 Running 0 4d18h
rakesh rakesh-pod2 1/1 Running 0 4d18h
Я могу создать службу, которая выбирает нужные мне модули, используя файл yaml определения службы -
apiVersion: v1
kind: Service
metadata:
name: np-service
namespace: rakesh
spec:
type: NodePort
ports:
- name: port1
port: 30005
targetPort: 30005
nodePort: 30005
selector:
abc.property: rakesh
Однако мне нужно добиться того же с помощью командной строки,Я попробовал следующее -
kubectl -n rakesh expose pod --selector="abc.property: rakesh" --port=30005 --target-port=30005 --name=np-service --type=NodePort
и несколько других вариантов безуспешно.
Примечание: я понимаю, что в настоящее время нет способа указать порт узла с помощью команды-линия. Случайный порт выделен между 30000-32767. Я согласен с этим, так как позже я могу подключить его к необходимому порту.
Также обратите внимание: эти модули, к сожалению, не являются частью развертывания. В противном случае expose deployment
мог бы сработать.
Итак, все сводится к выбору модулей на основе селектора и представлению их как службы.
Моя kubernetes
версия:1.12.5 upstream
My kubectl
версия: 1.12.5 upstream