【问题标题】:Specify nodeport when creating deployment in Minikube在 Minikube 中创建部署时指定 nodeport
【发布时间】:2017-03-21 03:26:52
【问题描述】:

此要求主要针对开发环境。

当我更新一个 docker 映像时,使用该映像创建部署并通过 Minikube 公开,我必须删除并重新创建此部署和服务。 但是,我想维护分配给该特定服务的相同节点端口。我知道如果留给 Minikube,则会分配一个随机端口。但是我可以指定 NodePort 吗?

我使用以下 Yaml 文件创建部署,并通过 expose 命令公开服务。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: dpl_name
spec:
  template:
    metadata:
      labels:
        app: app_name
    spec:
      containers:
      - name: ctr_name
        image: 192.168.42.22:80/imagename:latest
        ports:
        - containerPort: 8090
        volumeMounts:
        - mountPath: /var/containerdata
          name: vlm
      volumes:
        - name: vlm
          hostPath:
            path: '/data/vlm'

【问题讨论】:

    标签: docker minikube


    【解决方案1】:

    您可以通过创建 NodePort 类型的 service 并在该 .yaml 配置中指定 nodePort 值来公开部署:

    kind: Service
    apiVersion: v1
    metadata:
      name: app_name
      labels:
        app: app_name
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 8090
        nodePort: 30000 # <--
      selector:
        app: app_name
    

    这将指定始终使用nodePort 值:30000

    【讨论】:

    • 谢谢。有用。接受这个作为答案。但是,我确实有几个后续问题:“端口”是做什么用的?如果我理解正确,targetport 告诉服务将请求转发到哪里(应该与容器端口相同),但我没有得到“端口”?第二个问题:我尝试从集群内部通过其 VIP 和端口访问该服务并且它可以工作,但我不能使用它的名称来访问该服务。我还有什么需要补充的吗?我需要这样做,以便如果我更改环境,即使 VIP 更改,我也可以继续使用该名称。
    猜你喜欢
    • 2021-10-19
    • 2021-11-20
    • 2020-04-02
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多