我正在试用AGIC,以前,我们有APIM高级版,其中的服务部署在具有内部负载均衡器的AKS中,由于VNet集成,APIM可以直接与之通信。我目前的设置是我有一个部署两个pod和一个服务与内部负载均衡器(我不认为它的必要)和入口路径的服务。我假设当我部署yaml文件时,它将在App gateway中创建一个backendpool,其中包含服务的IP,而不是ingress创建了pod的IP并添加了两个IP,显然我有两个pod。我想知道
1.如果我们需要内部负载均衡器的服务,或者只需要默认暴露clusterip的服务。
1.目前,我的dotnet应用程序公开了端口8080,而服务公开了8000。由于AGIC直接指向pod,服务和pod应该暴露相同的端口?
1.如果它要直接添加pod的IP,它将如何工作,以防自动缩放,它将添加/删除pod的IP作为和当它发生?
我正在浏览应用程序网关文档,我无法从那里获取太多信息。
部署yaml文件示例
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sampleservice-deployment
labels:
app: sampleservice
spec:
replicas: 2
selector:
matchLabels:
app: sampleservice
template:
metadata:
labels:
app: sampleservice
spec:
containers:
- name: sampleapi
image: #{containerRepo}#/samplesvc:#{tag}#
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: #{hpa_samplesvc_requestedcpu}#
limits:
cpu: #{hpa_samplesvc_maxcpulimit}#
---
apiVersion: v1
kind: Service
metadata:
name: samplesvc
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
labels:
app: samplesvc
spec:
ports:
- name: http-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: sampleservice
type: LoadBalancer
---
apiVersion: autoscaling/v2
<not relevant>
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sampleingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: /sample-path
backend:
service:
name: samplesvc
port:
number: 8080
pathType: Exact
这是部署。yaml
1条答案
按热度按时间4jb9z9bj1#
直接回答您的问题:-
1.->只需使用默认暴露的clusterIP的服务
1.-> Service和Pod都应该具有相同的端口,因为它是为入口YAML文件中的各个路径配置的
1.->当您的部署扩展时,当新的Pod提供IP时,这些IP将直接添加到AG的后端池中。
基本上会有一个AGIC pod被部署,该pod的主要目的是监控变化并反映回来
更多信息:
Ingress Controller在客户的AKS上的自己的pod中运行。AGIC监控Kubernetes资源的一个子集的更改。AKS群集的状态将转换为应用程序网关特定的配置,并应用于Azure资源管理器(ARM)。