0

我正在使用 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 策略以及在自动缩放组和创建的实例上添加的标签。

我使用此文件 ( ) 添加了分蘖和自动缩放器的 rbac 角色kubectl create -f rbac-config.yaml

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

我安装了分蘖:

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

再次,接受所有默认值。这工作正常,詹金斯拾取的应用程序被编译,我可以看到:

http://jenkins.jx.mydomain.com

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

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

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

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

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

我不认为这与自动缩放器有关,因为放大和缩小工作正常,如果我手动更改服务器的所需节点,问题也存在。

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

所有入口部分的日志和描述符都张贴在这里

4

2 回答 2

1

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

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

ASG

然后您可以在负载均衡器中看到实例正在服务中:

在役

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

于 2018-12-03T21:02:24.303 回答
0

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

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

如果 EKS 也是这种情况,仍在与 AWS Support 核实,但这似乎很合理。

于 2018-12-14T19:45:26.807 回答