kubectl通过命令行将选择器用作NodePort服务公开Pod

时间:2019-10-28 09:23:10

标签: kubernetes kubectl

我需要通过命令行将选择器用作NodePort服务来公开Pod。可以有一个或多个吊舱。并且服务需要在它们来来去去时动态地包含Pod。例如,

NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
rakesh        rakesh-pod1                              1/1     Running   0          4d18h
rakesh        rakesh-pod2                              1/1     Running   0          4d18h

我可以创建一个服务,该服务使用服务定义yaml文件选择所需的pod-

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可能会起作用。

因此,可以归结为基于选择器选择pod并将其作为服务公开。

我的kubernetes版本:1.12.5上游

我的kubectl版本:1.12.5上游

2 个答案:

答案 0 :(得分:1)

您可以这样做:

kubectl expose $(kubectl get po -l abc.property=rakesh -o name) --port 30005 --name np-service --type NodePort

答案 1 :(得分:0)

是否没有使用部署或副本集的原因?

相关问题