簡體   English   中英

我在 Azure Kubernetes 上的外部 IP 服務不起作用

[英]My external IP on Azure Kubernetes Service doesn't work

我在 Azure 上創建了一個 kubernetes 集群。 我已經部署了一些沒有前端(微服務)的 pod。

我使用 Postman 和 VS Code 在本地執行了測試:這些微服務返回 200 O` 或 500。

問題是在 Kubernetes 我有正確的外部 IP,但我無法從外部訪問。

我有另一個 Mongo 容器,我可以毫無問題地訪問它。我留下一些圖像來嘗試解決:

在此處輸入圖像描述 在此處輸入圖像描述

你能幫助我嗎? 謝謝!!

Kubernetes 比簡單的 docker 容器稍微復雜一些,因此一開始運行它可能會讓人感到困惑。 我將解釋您需要在哪些點配置服務的公開。

每個容器都有自己的 ip 地址空間,因此每個容器可以為一個應用程序使用相同的端口。 在您的情況下,您可能希望使用端口 6060。這是應用程序需要綁定到所有網絡接口(ip 0.0.0.0)的端口,以便從外部訪問。 這是您將在 dockerfile 中聲明為 EXPOSE 的端口。

在本地測試時,您可以 map 每個容器到不同的本地端口進行測試: docker run -p external-port:internal-port

您用於 EXPOSE 的端口是您在 Pod 或 Deployment 中配置為containerPort的端口。

一個或多個 Pod 在 kubernetes 中使用服務公開為負載平衡服務。 在那里,您可能希望 map 請求端口 - 對於 http 通常為 80 - 到容器端口,在您的情況下為 6060。

然后可以使用 LoadBalancer 向外部公開該服務。 LoadBalancer 的外部 IP 將映射到您的 Service 的(虛擬 IP),Service 將請求端口映射到容器端口並使用選擇器選擇合適的 pod。 pod 包含一個在容器端口上偵聽的容器,然后回復您的請求。

必須正確配置整個鏈才能使其正常工作。 保持簡單(不為每個應用程序使用不同的端口)更容易正確。

您是否嘗試過點擊 restApi URI,例如

ExternalIP:Port/uri

這應該是可訪問的,我也將這種方法與 AKS 一起使用

正如我從您的問題和評論中的 YAML 文件中看到的那樣,我認為可能的原因是您在部署容器中設置了命令,此命令將覆蓋圖像中的默認命令。 所以我懷疑你的應用程序可能沒有啟動,你可以檢查一下。

我還建議您檢查您暴露給外部的端口是否與圖像中的端口相同。

我已經能夠解除 4 個微服務之一。

我嘗試使用相同的 YAML 提升其余三個微服務(更改圖像 URL 和端口),但這些都不起作用。

使用的 YAML 是這樣的:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: permissions
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: permissions
    spec:
      containers:
      - name: permissions
        image: URL IMAGE
        ports:
        - containerPort: 6060
      imagePullSecrets:
      - name: nameimage
---
apiVersion: v1
kind: Service
metadata:
  name: permissions
spec:
  type: LoadBalancer
  ports:
  - port: 6060
  selector:
    app: permissions

我添加了這個來為其他微服務設置資源限制:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: users
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: users
    spec:
      containers:
      - name: users
        image: URL IMAGE
        resources:
          requests:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 6061
---
apiVersion: v1
kind: Service
metadata:
  name: users
spec:
  type: LoadBalancer
  ports:
  - port: 6061
  selector:
    app: users

正如我所說,我只能舉起第一個。

一些幫助?

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM