无法访问部署在 AKS 上的应用程序
Can't access an application deployed on AKS
我正在尝试访问部署在 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
,
应用程序 运行ning 正确,但如果我尝试使用 http://20.103.147.69 从浏览器访问应用程序,则会返回超时。
还有什么问题?
在您的部署中,您将容器配置为侦听端口 8080。您需要在服务定义中添加设置为 8080 的目标端口值。
您似乎没有 Ingress Controller deployed on your AKS as you have your application exposed directly. You will need that in order to get ingress 工作。
要验证您的应用程序是否正常工作,您可以使用 port-forward 然后访问 http://localhost:8080 :
kubectl port-forward aspnetapp 8080:8080
但是你应该定义。安装 ingress-controller:这是来自 MS 的工作流程,用于在您的集群上安装 ingress-nginx 作为 IC。
然后您将只向 Internet 公开 ingress-controller,如果您提前创建了 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:切勿将您的应用程序直接暴露在互联网上,始终使用入口控制器
我正在尝试访问部署在 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
,
应用程序 运行ning 正确,但如果我尝试使用 http://20.103.147.69 从浏览器访问应用程序,则会返回超时。
还有什么问题?
在您的部署中,您将容器配置为侦听端口 8080。您需要在服务定义中添加设置为 8080 的目标端口值。
您似乎没有 Ingress Controller deployed on your AKS as you have your application exposed directly. You will need that in order to get ingress 工作。
要验证您的应用程序是否正常工作,您可以使用 port-forward 然后访问 http://localhost:8080 :
kubectl port-forward aspnetapp 8080:8080
但是你应该定义。安装 ingress-controller:这是来自 MS 的工作流程,用于在您的集群上安装 ingress-nginx 作为 IC。
然后您将只向 Internet 公开 ingress-controller,如果您提前创建了 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:切勿将您的应用程序直接暴露在互联网上,始终使用入口控制器