Я создаю кластер 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
снова, принимая все значения по умолчанию. Это отлично работает, приложение подобрано 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 и запускает новый узел, потому что автомасштабирование видит, что на первом узле недостаточно ресурсов процессора.
После появления второго узла я больше не могу связаться с Дженкинсом и приложением через доменные имена. Так что по какой-то причине мой вход больше не работает.
Я много играл с этим и вручную менял желаемое количество узлов непосредственно на EC2, и когда есть четное количество узлов, домены недоступны, а когда есть нечетное количество узлов, домены достижимы.
Я не думаю, что это связано с автоматическим масштабированием, потому что увеличение и уменьшение масштаба работают нормально, и проблема также возникает, если я вручную изменяю нужные узлы сервера.
Что вызывает сбой входа для четного числа узлов? Как я могу изучить эту проблему дальше?
Журналы и дескрипторы для всех входящих частей размещены здесь.
kubectl describe
'Если бы вы вошли, чтобы посмотреть, что там происходит, было бы хорошим началом. - person Clorichel   schedule 03.12.2018