【发布时间】:2020-01-25 16:18:19
【问题描述】:
我在 EKS 集群上运行 AWS 上的 ALB。我正在尝试在路由上应用 Ingress 资源的更改,以便它指向不同的后端。
以下 Ingress 的唯一区别是后端规范。
为什么更新不起作用?如何更新 ALB 上的路由?
原始入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/backend-protocol: HTTP
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
labels:
app: api
type: ingress
spec:
backend:
serviceName: api-service
servicePort: 80
更新入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/backend-protocol: HTTP
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
labels:
app: api
type: ingress
spec:
backend:
serviceName: offline-service
servicePort: 9001
控制器:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
name: alb-ingress-controller
namespace: kube-system
spec:
selector:
matchLabels:
app.kubernetes.io/name: alb-ingress-controller
template:
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
spec:
containers:
- name: alb-ingress-controller
args:
- --ingress-class=alb
- --cluster-name=cluster-22
env:
- name: AWS_ACCESS_KEY_ID
value: key
- name: AWS_SECRET_ACCESS_KEY
value: key
image: docker.io/amazon/aws-alb-ingress-controller:v1.1.3
serviceAccountName: alb-ingress-controller
【问题讨论】:
-
可以通过描述 Ingress 服务 (
kubectl describe service my-ingress-controller-service) 和检查kube-controller-manager日志 (kubectl logs --namespace=kube-system kube-controller-manager-...) 找到 Ingress 更新日志。看看当你更新你的配置时发生了什么,如果可能的话,用信息更新你的问题。 -
Yeo @EduardoBaitello 是对的。经常发生的情况是 ingress 中定义的服务之一无法访问,此时 ALB-ingress 控制器决定它不会更新 AWS ALB 中的任何规则。
-
是的,我仍然没有部署离线服务服务。我会尝试这样做。
-
这很可能是问题所在。
-
是的,这是个问题。谢谢大家。
标签: amazon-web-services kubernetes kubernetes-ingress aws-alb