首页 > 解决方案 > 配置 EC2 节点:一旦准备好就被销毁

问题描述

我添加了一个 EC2 云,目的是使用 Windows 实例。Windows AMI 配置为使用 SSH 连接,而不是 WinRM。当我预置一个 Windows 实例时,我看到它在 AWS 控制台中启动,我在 Jenkins 控制台中看到它:

May 07, 2021 5:45:42 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-18-197-156-192.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 5:45:52 PM INFO hudson.plugins.ec2.EC2Cloud log
Failed to connect via ssh: The kexTimeout (10000 ms) expired.
May 07, 2021 5:45:52 PM INFO hudson.plugins.ec2.EC2Cloud log
Waiting for SSH to come up. Sleeping 5.
May 07, 2021 5:45:57 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-18-197-156-192.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 5:45:57 PM INFO hudson.plugins.ec2.EC2Cloud log
Failed to connect via ssh: There was a problem while connecting to ec2-18-197-156-192.eu-central-1.compute.amazonaws.com:22
May 07, 2021 5:45:57 PM INFO hudson.plugins.ec2.EC2Cloud log
Waiting for SSH to come up. Sleeping 5.

(重复多次)这当然是正常的,只要实例还在启动。

过了一会儿,我在 AWS 控制台中看到该实例正在运行。并立即终止。

我还在 Jenkins 日志中看到了这一点,这可能相关也可能不相关:

May 07, 2021 5:50:52 PM INFO hudson.plugins.ec2.EC2OndemandSlave lambda$terminate$0
Terminated EC2 instance (terminated): i-0c82439628de13743
May 07, 2021 5:50:52 PM INFO hudson.plugins.ec2.EC2OndemandSlave lambda$terminate$0
Removed EC2 instance from jenkins master: i-0c82439628de13743

这是我手动配置的时候:

May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate getImage
Getting image for request {ExecutableUsers: [],Filters: [],ImageIds: [ami-0d8ed2b0df1b1c6ef],Owners: []}
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate logProvisionInfo
SlaveTemplate{description='Windows', labels='aws windows'}. Considering launching
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate setupRootDevice
AMI had /dev/sda1
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate setupRootDevice
{DeleteOnTermination: true,SnapshotId: snap-0ab3c9f92925a0abf,VolumeSize: 200,VolumeType: gp2,Encrypted: false}
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate logProvisionInfo
SlaveTemplate{description='Windows', labels='aws windows'}. EBS default encryption value set to: Based on AMI (null)
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate logProvisionInfo
SlaveTemplate{description='Windows', labels='aws windows'}. Setting Instance Initiated Shutdown Behavior : ShutdownBehavior.Terminate
May 07, 2021 6:18:25 PM INFO hudson.plugins.ec2.SlaveTemplate logProvisionInfo
SlaveTemplate{description='Windows', labels='aws windows'}. Looking for existing instances with describe-instance: {Filters: [{Name: image-id,Values: [ami-0d8ed2b0df1b1c6ef]}, {Name: instance-type,Values: [t3a.medium]}, {Name: key-name,Values: [rsa-8192-aws-jenkins]}, {Name: tenancy,Values: [default]}, {Name: subnet-id,Values: [subnet-d426f499]}, {Name: instance.group-id,Values: [sg-0c2d470529c492f13]}, {Name: tag:jenkins_server_url,Values: [https://jenkins.itextsupport.com/]}, {Name: tag:jenkins_slave_type,Values: [demand_Windows]}, {Name: tag:Name,Values: [Jenkins/Windows]}],InstanceIds: [],}
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.SlaveTemplate logProvisionInfo
SlaveTemplate{description='Windows', labels='aws windows'}. Return instance: {AmiLaunchIndex: 0,ImageId: ami-0d8ed2b0df1b1c6ef,InstanceId: i-0078ac5df5320de3d,InstanceType: t3a.medium,KeyName: rsa-8192-aws-jenkins,LaunchTime: Fri May 07 18:18:26 CEST 2021,Monitoring: {State: pending},Placement: {AvailabilityZone: eu-central-1c,GroupName: ,Tenancy: default,},Platform: windows,PrivateDnsName: ip-172-31-12-78.eu-central-1.compute.internal,PrivateIpAddress: 172.31.12.78,ProductCodes: [],PublicDnsName: ,State: {Code: 0,Name: pending},StateTransitionReason: ,SubnetId: subnet-d426f499,VpcId: vpc-ddb7aab5,Architecture: x86_64,BlockDeviceMappings: [],ClientToken: e9f54d34-c9a4-47db-a472-a1204e9b5784,EbsOptimized: true,EnaSupport: true,Hypervisor: xen,ElasticGpuAssociations: [],ElasticInferenceAcceleratorAssociations: [],NetworkInterfaces: [{Attachment: {AttachTime: Fri May 07 18:18:26 CEST 2021,AttachmentId: eni-attach-0789ae7127addb88f,DeleteOnTermination: true,DeviceIndex: 0,Status: attaching,NetworkCardIndex: 0},Description: ,Groups: [{GroupName: ssh,GroupId: sg-0c2d470529c492f13}],Ipv6Addresses: [],MacAddress: 0a:1a:df:ec:e0:26,NetworkInterfaceId: eni-034d777e34991680a,OwnerId: 050520292612,PrivateDnsName: ip-172-31-12-78.eu-central-1.compute.internal,PrivateIpAddress: 172.31.12.78,PrivateIpAddresses: [{Primary: true,PrivateDnsName: ip-172-31-12-78.eu-central-1.compute.internal,PrivateIpAddress: 172.31.12.78}],SourceDestCheck: true,Status: in-use,SubnetId: subnet-d426f499,VpcId: vpc-ddb7aab5,InterfaceType: interface}],RootDeviceName: /dev/sda1,RootDeviceType: ebs,SecurityGroups: [{GroupName: ssh,GroupId: sg-0c2d470529c492f13}],SourceDestCheck: true,StateReason: {Code: pending,Message: pending},Tags: [{Key: Name,Value: Jenkins/Windows}, {Key: jenkins_slave_type,Value: demand_Windows}, {Key: jenkins_server_url,Value: https://jenkins.itextsupport.com/}],VirtualizationType: hvm,CpuOptions: {CoreCount: 1,ThreadsPerCore: 2},CapacityReservationSpecification: {CapacityReservationPreference: open,},Licenses: [],MetadataOptions: {State: pending,HttpTokens: optional,HttpPutResponseHopLimit: 1,HttpEndpoint: enabled},EnclaveOptions: {Enabled: false},}
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2RetentionStrategy start
Start requested for EC2 (eu-central-1 Windows) - Windows (i-0078ac5df5320de3d)
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2Cloud log
Launching instance: i-0078ac5df5320de3d
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2Cloud log
bootstrap()
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2Cloud log
Getting keypair...
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2Cloud log
Using private key rsa-8192-aws-jenkins (SHA-1 fingerprint 87:87:34:8e:a4:d5:7f:17:bb:08:9d:f8:68:c9:33:f1)
May 07, 2021 6:18:26 PM INFO hudson.plugins.ec2.EC2Cloud log
Authenticating as jenkins
May 07, 2021 6:18:27 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to null on port 22, with timeout 10000.
May 07, 2021 6:18:27 PM INFO hudson.plugins.ec2.EC2Cloud log
No SSH key verification (ssh-ed25519 57:02:49:51:15:8a:41:70:67:ca:7a:e5:48:5f:32:b6) for connections to EC2 (eu-central-1 Windows) - Windows (i-0078ac5df5320de3d)
May 07, 2021 6:18:27 PM INFO hudson.plugins.ec2.EC2Cloud log
Connected via SSH.
May 07, 2021 6:18:27 PM WARNING hudson.plugins.ec2.EC2Cloud log
Authentication failed. Trying again...
May 07, 2021 6:18:57 PM INFO hudson.plugins.ec2.EC2Cloud log
Authenticating as jenkins
May 07, 2021 6:18:57 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-3-66-217-65.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:19:00 PM INFO hudson.slaves.SlaveComputer tryReconnect
Attempting to reconnect aws-linux-node-eu-central-1-packer
May 07, 2021 6:19:07 PM INFO hudson.plugins.ec2.EC2Cloud log
Failed to connect via ssh: The kexTimeout (10000 ms) expired.
May 07, 2021 6:19:07 PM INFO hudson.plugins.ec2.EC2Cloud log
Waiting for SSH to come up. Sleeping 5.
May 07, 2021 6:19:12 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-3-66-217-65.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:19:22 PM INFO hudson.plugins.ec2.EC2Cloud log
Failed to connect via ssh: The kexTimeout (10000 ms) expired.
May 07, 2021 6:19:22 PM INFO hudson.plugins.ec2.EC2Cloud log
Waiting for SSH to come up. Sleeping 5.
May 07, 2021 6:19:27 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-3-66-217-65.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:19:37 PM INFO hudson.plugins.ec2.EC2Cloud log
Failed to connect via ssh: The kexTimeout (10000 ms) expired.
May 07, 2021 6:19:37 PM INFO hudson.plugins.ec2.EC2Cloud log
Waiting for SSH to come up. Sleeping 5.
May 07, 2021 6:19:42 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-3-66-217-65.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:19:47 PM INFO hudson.plugins.ec2.EC2Cloud log
No SSH key verification (ssh-ed25519 78:ed:18:5b:52:00:76:72:8e:ae:73:69:3c:69:31:dd) for connections to EC2 (eu-central-1 Windows) - Windows (i-0078ac5df5320de3d)
May 07, 2021 6:19:47 PM INFO hudson.plugins.ec2.EC2Cloud log
Connected via SSH.
May 07, 2021 6:19:48 PM INFO hudson.plugins.ec2.EC2Cloud log
connect fresh as root
May 07, 2021 6:19:48 PM INFO hudson.plugins.ec2.EC2Cloud log
Connecting to ec2-3-66-217-65.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:19:48 PM INFO hudson.plugins.ec2.EC2Cloud log
No SSH key verification (ssh-ed25519 78:ed:18:5b:52:00:76:72:8e:ae:73:69:3c:69:31:dd) for connections to EC2 (eu-central-1 Windows) - Windows (i-0078ac5df5320de3d)
May 07, 2021 6:19:48 PM INFO hudson.plugins.ec2.EC2Cloud log
Connected via SSH.
May 07, 2021 6:19:49 PM INFO hudson.plugins.ec2.EC2Cloud log
Creating tmp directory (/tmp) if it does not exist
May 07, 2021 6:20:07 PM INFO hudson.plugins.ec2.EC2Cloud log
Verifying: java -fullversion
May 07, 2021 6:20:12 PM INFO hudson.plugins.ec2.EC2Cloud log
Verifying: which scp
May 07, 2021 6:20:14 PM INFO hudson.plugins.ec2.EC2Cloud log
Copying remoting.jar to: /tmp
May 07, 2021 6:20:15 PM INFO hudson.plugins.ec2.EC2Cloud log
Launching remoting agent (via Trilead SSH2 Connection):  java -Dfile.encoding=UTF-8 -jar /tmp/remoting.jar -workDir C:\Users\jenkins
May 07, 2021 6:20:18 PM INFO hudson.plugins.ec2.EC2OndemandSlave lambda$terminate$0
Terminated EC2 instance (terminated): i-0078ac5df5320de3d
May 07, 2021 6:20:19 PM INFO hudson.plugins.ec2.EC2OndemandSlave lambda$terminate$0
Removed EC2 instance from jenkins master: i-0078ac5df5320de3d

在实例的控制台日志中:

May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Launching instance: i-02435726c827f7a6a
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: bootstrap()
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Getting keypair...
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Using private key rsa-8192-aws-jenkins (SHA-1 fingerprint 87:87:34:8e:a4:d5:7f:17:bb:08:9d:f8:68:c9:33:f1)
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Authenticating as jenkins
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Connecting to null on port 22, with timeout 10000.
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: No SSH key verification (ssh-ed25519 57:02:49:51:15:8a:41:70:67:ca:7a:e5:48:5f:32:b6) for connections to EC2 (eu-central-1 Windows) - Windows (i-02435726c827f7a6a)
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Connected via SSH.
May 07, 2021 6:29:46 PM hudson.plugins.ec2.EC2Cloud
WARNING: Authentication failed. Trying again...
May 07, 2021 6:30:16 PM hudson.plugins.ec2.EC2Cloud
INFO: Authenticating as jenkins
May 07, 2021 6:30:16 PM hudson.plugins.ec2.EC2Cloud
INFO: Connecting to ec2-52-29-72-22.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:30:26 PM hudson.plugins.ec2.EC2Cloud
INFO: Failed to connect via ssh: The kexTimeout (10000 ms) expired.
May 07, 2021 6:30:26 PM hudson.plugins.ec2.EC2Cloud
INFO: Waiting for SSH to come up. Sleeping 5.
(...)
May 07, 2021 6:31:01 PM hudson.plugins.ec2.EC2Cloud
INFO: Connecting to ec2-52-29-72-22.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:31:09 PM hudson.plugins.ec2.EC2Cloud
INFO: No SSH key verification (ssh-ed25519 78:ed:18:5b:52:00:76:72:8e:ae:73:69:3c:69:31:dd) for connections to EC2 (eu-central-1 Windows) - Windows (i-02435726c827f7a6a)
May 07, 2021 6:31:09 PM hudson.plugins.ec2.EC2Cloud
INFO: Connected via SSH.
May 07, 2021 6:31:09 PM hudson.plugins.ec2.EC2Cloud
INFO: connect fresh as root
May 07, 2021 6:31:09 PM hudson.plugins.ec2.EC2Cloud
INFO: Connecting to ec2-52-29-72-22.eu-central-1.compute.amazonaws.com on port 22, with timeout 10000.
May 07, 2021 6:31:13 PM hudson.plugins.ec2.EC2Cloud
INFO: No SSH key verification (ssh-ed25519 78:ed:18:5b:52:00:76:72:8e:ae:73:69:3c:69:31:dd) for connections to EC2 (eu-central-1 Windows) - Windows (i-02435726c827f7a6a)
May 07, 2021 6:31:13 PM hudson.plugins.ec2.EC2Cloud
INFO: Connected via SSH.
May 07, 2021 6:31:13 PM hudson.plugins.ec2.EC2Cloud
INFO: Creating tmp directory (C:\\Windows\\Temp\\) if it does not exist
[91mNew-Item: [91mAn item with the specified name C:\Windows\Temp already exists. [0m
May 07, 2021 6:31:28 PM hudson.plugins.ec2.EC2Cloud
INFO: Verifying: java -fullversion
openjdk full version "11.0.11+9"
May 07, 2021 6:31:32 PM hudson.plugins.ec2.EC2Cloud
INFO: Verifying: which scp
/c/Windows/System32/OpenSSH/scp
May 07, 2021 6:31:34 PM hudson.plugins.ec2.EC2Cloud
INFO: Copying remoting.jar to: C:\\Windows\\Temp\\
May 07, 2021 6:31:35 PM hudson.plugins.ec2.EC2Cloud
INFO: Launching remoting agent (via Trilead SSH2 Connection):  java -Dfile.encoding=UTF-8 -jar C:\\Windows\\Temp\\/remoting.jar -workDir C:\Users\jenkins





HTTP ERROR 404 Not Found

URI:    /computer/EC2%20(eu-central-1%20Windows)%20-%20Windows%20(i-02435726c827f7a6a)/logText/progressiveHtml
STATUS: 404
MESSAGE:    Not Found
SERVLET:    Stapler

标签: jenkinsamazon-ec2

解决方案


我有同样的问题,但我在主节点和节点上使用相同的 ssh 密钥。我的上线了,但构建没有在节点上执行,而是在主节点上执行。

我发现当尝试连接到节点时,它正在连接到本地主机(主)上的 ssh。您的日志中的这一点-

INFO: Connecting to null on port 22, with timeout 10000.
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: No SSH key verification (ssh-ed25519 57:02:49:51:15:8a:41:70:67:ca:7a:e5:48:5f:32:b6) for connections to EC2 (eu-central-1 Windows) - Windows (i-02435726c827f7a6a)
May 07, 2021 6:29:45 PM hudson.plugins.ec2.EC2Cloud
INFO: Connected via SSH.

我更改了节点的 ssh 密钥,然后我开始和你一样,节点一连接就会被杀死。

我解决此问题的方法是将主服务器上的 ssh 端口更改为 22 以外的任何其他端口,以便它无法首先连接到 localhost。

您可以更改主 ssh 端口或节点,但更改主是更简单的选择,而无需为节点创建新的 ami。


推荐阅读