Я создаю кластер Amazon EKS с помощью jenkins-x с:
jx create cluster eks -n demo --node-type=t3.xlarge --nodes=1 --nodes-max=5 --nodes-min=1 --skip-installation
После этого я добавляю политику 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: 1
на replicaCount: 8
.Передайте и нажмите.Это запускает конвейер Jenkins и раскручивает новый узел, потому что автоскалер видит, что на первом узле недостаточно ресурсов ЦП.
После запуска второго узла я больше не могу связаться с Jenkins и приложениемчерез доменные имена.Так что по какой-то причине мой вход больше не работает.
Я много поиграл с этим, и вручную изменил нужное количество узлов непосредственно в EC2, и когда есть четное количество узлов,домены недоступны, и когда существует нечетное количество узлов, домены достижимы.
Я не думаю, что это связано с автоматическим масштабированием, потому что увеличение и уменьшение работают нормально, и проблематакже там, если я вручную изменяю нужные узлы сервера.
Что вызывает сбой входа для четного числа узлов?Как я могу исследовать эту проблему дальше?
Журналы и дескрипторы для всех входных частей размещены здесь .