我正在使用jenkins-x通过以下方式创建Amazon EKS集群:
jx create cluster eks -n demo --node-type=t3.xlarge --nodes=1 --nodes-max=5 --nodes-min=1 --skip-installation
此后,根据this指南,我添加了用于自动发现的集群自动定标器IAM策略,并在自动定标组和创建的实例上添加了标签。
我为此文件(kubectl create -f rbac-config.yaml
)添加了分till和自动定标器的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
我安装了分till:
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上手动更改了所需的节点数,当节点数为偶数时,域是不可访问的,而当节点数为奇数时,域是可以到达的。
我不认为这与自动缩放器有关,因为按比例放大和按比例缩小都工作正常,而且如果我手动更改服务器的所需节点,问题也同样存在。
什么原因导致偶数个节点的入口失败?如何进一步调查此问题?
所有入口部件的日志和描述符都发布在here上。
答案 0 :(得分:1)
您可以通过查看AWS ASG(AutoScaling组)和load balancer(ELB)目标实例来调试它。
您可以看到实例已添加到ASG:
然后,您可以在负载均衡器中看到实例正在使用中:
可能是偶数个实例中的某些实例不在服务中。他们碰巧在另一个可用区中吗?是否从ELB中删除了“奇数”数字?流量没有转发给他们吗?
答案 1 :(得分:0)
FWIW,我似乎遇到了这个问题:
https://github.com/kubernetes/kubernetes/issues/64148
仍会与AWS Support一起检查EKS是否也是这种情况,但这似乎非常合理。