kubectl выставляет модули, используя селектор в качестве службы NodePort через командную строку - PullRequest
0 голосов
/ 28 октября 2019

У меня есть требование выставлять модули, используя селектор в качестве службы 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

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Вы можете сделать:

kubectl expose $(kubectl get po -l abc.property=rakesh -o name) --port 30005 --name np-service --type NodePort
0 голосов
/ 29 октября 2019

есть ли причина, по которой вы не используете развертывание или репликацию?

...