堆栈:
Azure Kubernetes服务
NGINX入口控制器-https://github.com/kubernetes/ingress-nginx
AKS负载平衡器
Docker容器
我的目标是创建一个K8s集群,该集群将允许我在单个IP下使用多个Pod来创建微服务架构。经过大量的教程和文档工作之后,我对最终目标一无所获。我的观点是可以使用Loadbalancer访问单个部署,但是到目前为止,引入该入口并没有成功。这些服务分为各自的文件,以提高可读性和易于控制。
此外,还按照安装说明中的说明,使用kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/cloud/deploy.yaml
LoadBalancer.yml:
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
loadBalancerIP: x.x.x.x
selector:
app: ingress-service
tier: backend
ports:
- name: "default"
port: 80
targetPort: 80
type: LoadBalancer
IngressService.yml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /api
backend:
serviceName: api-service
servicePort: 80
api-deployment.yml
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
selector:
app: api
ports:
- port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
spec:
selector:
matchLabels:
app: api
tier: backend
track: stable
replicas: 1
template:
metadata:
labels:
app: api
tier: backend
track: stable
spec:
containers:
- name: api
image: image:tag
ports:
- containerPort: 80
imagePullPolicy: Always
imagePullSecrets:
- name: SECRET
图像中的API正确显示在端口80上。
应用上述yml服务和部署中的每一个之后,我尝试通过LoadBalancer的IP向一个api资源发出Web请求,并且仅收到我的请求超时。
答案 0 :(得分:1)
经过足够的狩猎后找到了我的答案。基本上,问题是入口控制器在yaml中内置了负载均衡器,如上面的注释中所述。但是,该LoadBalancer的选择器需要将您的Ingress服务标记为该类的一部分。然后,该Ingress服务指向附加到您的pod的每个服务。我还必须进行一些小的修改,以允许在提供的负载均衡器中使用静态IP。