【问题标题】:kubectl expose pods using selector as a NodePort service via command-linekubectl 通过命令行使用选择器作为 NodePort 服务公开 pod
【发布时间】:2021-10-08 13:46:00
【问题描述】:

我需要从命令行使用选择器作为 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 之间。我对此很好,因为我可以稍后将其修补到所需的端口。

另请注意:不幸的是,这些 pod 不是部署的一部分。否则,expose deployment 可能会起作用。

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

我的kubernetes 版本:1.12.5 上游

我的kubectl 版本:1.12.5 上游

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

    • 谢谢@suren。假设按照上面的建议创建服务后 pod 的数量增加/减少,那么我需要再次执行/重新创建服务。你不这么认为吗?
    • np。如果 pod 的标签相同,则无需重新创建服务。
    • 我添加了另一个 pod rakesh-pod3,这不是上面创建的服务的一部分。 :(
    • 如果标签与服务的标签选择器匹配,则同一服务将选择几个独立的 pod。如果要动态创建 Pod,并且这些 Pod 由同一服务选择,则必须确保 Pod 具有相同的标签。
    【解决方案2】:

    您可以使用create nodeport 命令创建具有指定名称的 NodePort 服务:

    kubectl create nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
    

    例如:

    kubectl create service nodeport myservice --node-port=31000 --tcp=3000:80
    

    您可以查看 Kubectl 参考以获取更多信息:

    【讨论】:

    • 嗨@snnsnn,您的回答没有解决选择器的要求。它不起作用。
    猜你喜欢
    • 2019-10-25
    • 2023-02-01
    • 2020-04-18
    • 2019-07-26
    • 2021-04-15
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多