kubernetes 应用网关(AGIC)不指向服务,而是指向AKS中的Pod

s4n0splo  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(166)

我正在试用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

4jb9z9bj

4jb9z9bj1#

直接回答您的问题:-
1.->只需使用默认暴露的clusterIP的服务
1.-> Service和Pod都应该具有相同的端口,因为它是为入口YAML文件中的各个路径配置的
1.->当您的部署扩展时,当新的Pod提供IP时,这些IP将直接添加到AG的后端池中。
基本上会有一个AGIC pod被部署,该pod的主要目的是监控变化并反映回来
更多信息:
Ingress Controller在客户的AKS上的自己的pod中运行。AGIC监控Kubernetes资源的一个子集的更改。AKS群集的状态将转换为应用程序网关特定的配置,并应用于Azure资源管理器(ARM)。

相关问题