我正在嘗試訪問部署在 Azure AKS 上的簡單 Asp.net 核心應用程式,但我做錯了。
這是部署 .yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: aspnetapp
spec:
replicas: 1
selector:
matchLabels:
app: aspnet
template:
metadata:
labels:
app: aspnet
spec:
containers:
- name: aspnetapp
image: <my_image>
resources:
limits:
cpu: "0.5"
memory: 64Mi
ports:
- containerPort: 8080
這是服務 .yml
apiVersion: v1
kind: Service
metadata:
name: aspnet-loadbalancer
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
name: aspnetapp
一切似乎都正確部署

我做的另一項檢查是進入 pod 并運行
curl http://localhost:80,應用程式運行正常,但如果我嘗試使用http://20.103.147.69從瀏覽器訪問應用程式,則會回傳超時。
還有什么可能是錯的?
uj5u.com熱心網友回復:
似乎您沒有在 AKS 上部署入口控制器,因為您的應用程式直接公開。您將需要它才能使ingress正常作業。
要驗證您的應用程式是否正在運行,您可以使用埠轉發,然后訪問 http://localhost:8080 :
kubectl port-forward aspnetapp 8080:8080
但是你應該定義。安裝入口控制器:這是來自 MS 的作業流程,用于在集群上安裝入口 nginx作為 IC。
然后,您將只將入口控制器公開給互聯網,并且如果您提前創建了 PublicIP,還可以靜態指定 loadBalancerIP:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-resource-group: myResourceGroup # only needed if the LB is in another RG
name: ingress-nginx-controller
spec:
loadBalancerIP: <YOUR_STATIC_IP>
type: LoadBalancer
然后,Ingress Controller 將使用 Ingress 資源將傳入流量路由到您的應用程式:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
spec:
ingressClassName: nginx # ingress-nginx specifix
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: test
port:
number: 80
PS:永遠不要將您的應用程式直接暴露在互聯網上,始終使用入口控制器
uj5u.com熱心網友回復:
在您的部署中,您將容器配置為偵聽埠 8080。您需要在服務定義中添加目標埠值設定為 8080。
檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425774.html
標籤:天蓝色 Kubernetes 天蓝色 天蓝色负载平衡器
