我使用yaml配置在AWS中使用kubectl创建网络负载均衡器。负载平衡器已成功创建,并且目标组已正确连接。
作为设置的一部分,我传递了AWS所需的注释,但在AWS控制台中查看负载均衡器时,所有注释都没有应用。
未设置名称,并且未启用负载平衡器日志。我得到了一个随机字母数字名称的负载均衡器。
apiVersion: v1
kind: Service
metadata:
name: test-nlb-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-name: test-nlb # not set
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: ELBSecurityPolicy-2016-08
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-central-1:***********:certificate/*********************
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp,http"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: 443,8883
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "environment=dev,app=test, name=test-nlb-dev"
service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true" # not set
service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "15" # not set
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "random-bucket-name" # not set
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "random-bucket-name/dev/test-nlb-dev" # not set
labels:
app: test
spec:
ports:
- name: mqtt
protocol: TCP
port: 443
targetPort: 8080
- name: websocket
protocol: TCP
port: 8883
targetPort: 1883
type: LoadBalancer
selector:
app: test
如果有人能指出这里的问题是什么?我使用的是kubectl v1.19和Kubernetes v1.19
我认为这是一个版本问题。我假设您运行的是树内云控制器,而不是外部云控制器(请参阅此处(。
注释service.beta.kubernetes.io/aws-load-balancer-name
甚至不存在于kubernetes的master分支中。
但这并不能解释为什么其他注释不起作用。事实上在这里,您可以看到kubernetes 1.19.12支持哪些注释,您提到的其他不起作用的注释在源代码中列出。
您可以在controller-manager
日志中找到更多信息。
我的建议是禁用controller manager
中的树内云控制器并运行独立版本。
有两个Kubernetes控制器可以触摸表单的注释service.beta.kubernetes.io/aws-load-balancer-*
一个内置在kubernetesaws-cloud-controller-manager
中(并且在EKS主机上运行,所以您看不到它。(
另一个是一个名为aws-load-balancer-controller
的kubernetes插件(如果你没有安装它,它们将被忽略,所以基本上如果你按照https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/deploy/installation/你的问题应该得到解决。(
https://www.doit.com/demystifying-the-kubernetes-aws-lb-controller/
深入解释主题,应该是一个很好的资源
(免责声明:我是链接文章的作者。同样有趣的是,这篇文章和其他一些帖子激发了我写这篇文章的灵感。(