docker - 在Minikube中创建部署时指定nodeport

标签 docker minikube

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

当我更新一个 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'

最佳答案

您可以通过创建 service 来公开部署NodePort 类型并在 .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

关于docker - 在Minikube中创建部署时指定nodeport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896718/

相关文章:

node.js - 在 Jenkins docker 实例上找不到 Node

bash - Docker错误C:\Program Files\Docker Toolbox\docker.exe:无效的引用格式:存储库名称必须为小写

php - 如何在AWS Elastic Beanstalk Docker容器中记录PHP错误

mongodb - 连接到远程dockerized MongoDB副本集

virtualbox - 如何在特定网络上启动minikube

node.js - 如何在 Docker 中运行两个 Node.js 应用程序和 mysql

docker - 如何在我的 Mac 上查看在 Docker 中运行的所有 minikube 集群的列表?

amazon-web-services - 以相同的方式设置 Kubernetes 集群以进行本地开发和测试和部署

ip - kubernetes 的外部 ip 在 minikube 中显示 <nodes>

kubernetes - 在minikube中使用外部ip