【问题标题】:How to get a external IP of VM running Kubernet Services如何获取运行 Kubernetes 服务的 VM 的外部 IP
【发布时间】:2019-12-12 12:09:22
【问题描述】:

我在 Azure 的 VM 中托管了 Docker 映像,我正在尝试访问 VM 外部的服务。这不起作用,因为没有为服务生成外部 IP。

构建 Docker 映像后,我已应用 yml 文件来创建部署和服务。我的 yml 文件如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: planservice-deployment
  labels: 
    app: planservice-deploy
spec:
  selector:
    matchLabels:
      run: planservice-deploy
  replicas: 2
  template:
    metadata:
      labels:
        run: planservice-deploy
    spec:
      containers:
      - name: planservice-deploy
        image: planserviceimage
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8086
---
apiVersion: v1
kind: Service
metadata:
  name: planservice-service
  labels: 
    app: planservice-deploy
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8086
  selector:
    run: planservice-deploy
---

在我运行以下命令查看正在运行的服务后:

kubectl get pods --output=wide

此命令返回所有正在运行的服务及其外部 IP 信息。但是,当我看到列表时,所有服务都是使用空白外部 IP 生成的。

如何为所有服务设置外部 IP,以便我可以在 VM 之外访问我的 Web 服务?

【问题讨论】:

  • 现有答案能解决您的问题吗?如果是,你可以接受。或者你需要提供更多信息来描述你想要什么。

标签: azure docker kubernetes ip virtual-machine


【解决方案1】:

您需要将type 更改为LoadBalancer

apiVersion: v1
kind: Service
metadata:
  name: planservice-service
  labels: 
    app: planservice-deploy
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8086
  selector:
    run: planservice-deploy

https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer

【讨论】:

  • 我也是这样做的,但是现在外部 IP 显示为localhost
  • 我不关注,这是什么意思?
  • type: NodePort 没有为外部 IP 生成任何内容。 type: LoadBalancer 正在生成 'localhost' 作为外部 IP
  • 你用的是aks还是什么?
  • 嗯,这意味着您需要安装 kubernetes cloud controller manager 并配置它以使用 azure
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 2019-05-13
相关资源
最近更新 更多