![](/img/trans.png)
[英]Azure kubernetes service loadbalancer external IP not accessible
[英]My external IP on Azure Kubernetes Service doesn't work
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.