Docker 在Minikube中创建部署时指定节点端口

Docker 在Minikube中创建部署时指定节点端口,docker,minikube,Docker,Minikube,此需求主要针对开发环境 当我更新docker映像时,使用该映像通过Minikube创建并公开部署,我必须删除并重新创建此部署和服务。 但是,我希望维护分配给该特定服务的相同节点端口。我知道如果留给Minikube,会分配一个随机端口。但是我可以指定节点端口吗 我使用以下Yaml文件创建部署,并通过expose命令公开服务 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: dpl_name spec: templ

此需求主要针对开发环境

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

我使用以下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'

您可以通过创建NodePort类型并在其中指定
NodePort
值来公开部署。yaml配置:

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
种类:服务
版本:v1
元数据:
名称:应用程序名称
标签:
app:app_name
规格:
类型:节点端口
端口:
-港口:80
目标端口:8090

nodePort:30000#谢谢。它起作用了。接受这个答案。不过,我有几个后续问题:端口是用来做什么的?如果我理解正确,targetport会告诉服务在哪里转发请求(应该与容器端口相同),但我没有得到“端口”?第二个问题:我试着从集群内部通过其VIP和端口访问该服务,它可以工作,但我不能用它的名称访问该服务。还有什么我需要补充的吗?我需要这样做,如果我改变了环境,我可以继续使用的名称,即使VIP的变化。