繁体   English   中英

使用jenkins-x和cluster-autoscaler创建Amazon EKS集群可在偶数个节点上提供失败的入口

[英]Create a Amazon EKS cluster with jenkins-x and cluster-autoscaler gives fails ingress on even number of nodes

我正在使用jenkins-x通过以下方式创建Amazon EKS集群:

jx create cluster eks -n demo --node-type=t3.xlarge --nodes=1 --nodes-max=5 --nodes-min=1 --skip-installation

之后,根据指南,我添加了用于自动发现的cluster-autoscaler IAM策略,并在自动扩展组和创建的实例上添加了标签。

我使用以下文件( kubectl create -f rbac-config.yaml )为分kubectl create -f rbac-config.yaml和自动缩放器添加了rbac角色:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: autoscaler
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: autoscaler
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: autoscaler
    namespace: kube-system

我安装了分er器:

helm init --service-account tiller

并安装了集群自动缩放器:

helm install stable/cluster-autoscaler -f cluster-autoscaler-values.yaml --name cluster-autoscaler --namespace kube-system

然后安装jenkins-x系统:

jx install --provider=eks --domain=mydomain.com --default-environment-prefix=demo --skip-setup-tiller

我只接受所有默认问题(为我创建了nginx-ingress)。

然后,我创建一个默认的spring-boot-rest-prometheus应用程序:

jx create quickstart

再次接受所有默认值。 这工作正常,jenkins拾取了应用程序,并对其进行了编译,我可以在其中看到:

http://jenkins.jx.mydomain.com

我可以通过以下方式访问该应用:

http://spring-boot-rest-prometheus.jx-staging.mydomain.com

然后,我运行测试以查看自动缩放器是否正常工作,因此我打开了charts/spring-boot-rest-prometheus/values.yaml ,并将replicaCount: 1更改为replicaCount: 8 提交并推送。 Jenkins流水线启动并启动了一个新节点,因为自动缩放器发现第一个节点上的cpu资源不足。

在第二个节点出现后,我无法再通过域名访问Jenkins和该应用程序。 因此由于某种原因,我的入口不再起作用。

我已经玩了很多,并直接在EC2上手动更改了所需的节点数,并且当节点数为偶数时,域是不可访问的,而当节点数为奇数时,域是可访问的。

我认为这与自动缩放器无关,因为按比例放大和按比例缩小都工作正常,而且如果我手动更改服务器的所需节点,问题也就在那里。

是什么原因导致偶数个节点的入口失败? 如何进一步调查此问题?

所有入口部件的日志和描述符都发布在这里

您可以通过查看AWS ASG (AutoScaling组)和负载均衡器 (ELB)目标实例来进行调试。

您可以看到实例正在添加到ASG中:

ASG

然后,您可以在负载均衡器中看到实例正在使用中:

服役中

可能有偶数个实例中的某些实例不在服务中。 他们碰巧在另一个可用区中吗? 是否从ELB中删除了“奇数”数字? 流量没有转发给他们吗?

FWIW,我似乎遇到了这个问题:

https://github.com/kubernetes/kubernetes/issues/64148

仍在与AWS Support一起检查是否也适用于EKS,但这似乎非常合理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM