когда я обычно запускаю узел, все работает нормально, но когда я пытаюсь запустить его с помощью шаблона запуска, у меня возникают проблемы с подключением в кластере.
более конкретно, модуль aws-node завершается с ошибкой:
{"level":"info","caller":"/usr/local/go/src/runtime/proc.go:225","msg":"timeout: failed to connect service \":50051\" within 5s"}
Просматривая другие сообщения здесь, многие люди, кажется, указывают на проблемы с ролью iam, но моя роль iam в порядке, и, кроме того, я использовал ту же роль для запуска многих других узлов, и они успешно запустились.
вот мои файлы терраформирования:
resource "aws_eks_node_group" "eth-staking-nodes" {
cluster_name = aws_eks_cluster.staking.name
node_group_name = "ethstaking-nodes-testnet"
node_role_arn = aws_iam_role.nodes.arn
subnet_ids = [ data.aws_subnet.private-1.id,
data.aws_subnet.private-2.id
]
scaling_config {
desired_size = 1
max_size = 5
min_size = 0
}
update_config {
max_unavailable = 1
}
labels = {
role = "general"
}
launch_template {
version = aws_launch_template.staking.latest_version
id = aws_launch_template.staking.id
}
depends_on = [
aws_iam_role_policy_attachment.nodes-AmazonEKSWorkerNodePolicy,
aws_iam_role_policy_attachment.nodes-AmazonEKS_CNI_Policy,
aws_iam_role_policy_attachment.nodes-AmazonEC2ContainerRegistryReadOnly,
]
}
шаблон запуска:
esource "aws_launch_template" "staking" {
name = "${var.stage}-staking-node-launch-template"
instance_type = "m5.2xlarge"
image_id = "ami-08712c7468e314435"
key_name = "nivpem"
block_device_mappings {
device_name = "/dev/xvda"
ebs {
volume_size = 450
volume_type = "gp2"
}
}
lifecycle {
create_before_destroy = false
}
vpc_security_group_ids = [aws_security_group.eks-ec2-sg.id]
user_data = base64encode(templatefile("${path.module}/staking_userdata.sh", {
password = "********"
}))
tags = {
"eks:cluster-name" = aws_eks_cluster.staking.name
"eks:nodegroup-name" = "ethstaking-nodes-testnet"
}
tag_specifications {
resource_type = "instance"
tags = {
Name = "${var.stage}-staking-node"
"eks:cluster-name" = aws_eks_cluster.staking.name
"eks:nodegroup-name" = "ethstaking-nodes-testnet"
}
}
}
группа безопасности:
resource "aws_security_group" "eks-ec2-sg" {
name = "eks-ec2-sg-staking-testnet"
vpc_id = data.aws_vpc.vpc.id
ingress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
tags = {
Name = "allow_tls"
}
}
Да, они. если я запускаю узел с той же конфигурацией, но без шаблона запуска, он работает отлично.
Тогда ответ, который вы получили, работает на вас?
Нет, по-прежнему не удается заставить ноду работать при запуске через шаблон запуска. Эта проблема кричит о проблеме группы безопасности, так как я вижу «отказ в соединении» среди ошибок из модуля aws-node. Я проверил созданный узел, и все, от групп безопасности до роли iam, кажется правильным и должно быть достаточным.
Не могли бы вы добавить конфигурацию SG к вопросу?
для всех портов установлено значение 0.0.0.0/0 (для тестирования), я добавлю его к вопросу
Вы пытались добавить vpc_config с vpc_config
и endpoint_public_access
, установленными на true, в свой ресурс aws_eks_cluster
?
@MohammadTeimoriPabandi, вот оно! хотя в моем случае я использовал частные подсети, поэтому мне пришлось установить значение endpoint_private_access в true. большое спасибо.
Я добавлю его как ответ, чтобы вы могли выбрать его как правильный: D.
Попробуйте добавить vpc_config
с vpc_config
и endpoint_public_access
, установленным на true
, в свой ресурс aws_eks_cluster
. Это должно заставить его работать, поскольку вы используете частные подсети.
Настроили ли вы сеть в соответствии с требованиями? Например, находятся ли ваши узлы в частной подсети? Если да, развернут ли шлюз NAT? Подключен ли к VPC соответствующий интернет-шлюз?