jenkins 配置 agent

jenkins anget 配置

Master-Slaves(agent)模式

多个任务都在master节点执行,对master节点的性能会造成一定影响,如何将任务分散到不同的节点,做成多slave的方式?

1. 添加slave节点

  • 系统管理 -> 节点管理 -> 新建节点

    image-20220726090053547
  • 比如添加172.21.32.5,选择固定节点,保存

    image-20220726090128282
  • 远程工作目录 /opt/jenkins_jobs

  • 标签为任务选择节点的依据,如172.21.32.5;进行任务分配时的一个依据

  • 启动方式选择通过java web启动代理,代理是运行jar包,通过JNLP(是一种允许客户端启动 托管在远程Web服务器上的应用程序的协议 )启动连接到master节点服务中image-20220724220331342

![image-20220726091035097](/Users/liulei/Library/Application Support/typora-user-images/image-20220726091035097.png)

注意:这里 Use WebSocket 一定要点上;

  1. 执行java命令启动agent服务

    image-20220724221021986
    ## 登录172.21.32.5,下载agent.jar
    # 下载命令在 agnet 节点配置页面可以找到
    $ wget http://jenkins.qq.com/jnlpJars/agent.jar
    ## 会提示找不到agent错误,因为没有配置地址解析,由于连接jenkins master会通过50000端 口,直接使用cluster-ip
    $ kubectl -n jenkins get svc #在master节点执行查询cluster-ip地址
    NAME      TYPE        CLUSTER-IP      EXTERNAL-IP
    jenkins   ClusterIP   10.99.204.208   <none>
    4h8m
    PORT(S)              AGE
    8080/TCP,50000/TCP
    ## 再次回到131节点
    $ wget 10.99.204.208:8080/jnlpJars/agent.jar
    $ java -jar agent.jar -jnlpUrl http://10.99.204.208:8080/computer/172.21.32.5/slave-agent.jnlp -secret 4be4d164f861d2830835653567867a1e695b30c320d35eca2be9f5624f8712c8 -workDir "/opt/jenkins_jobs"
    ...
    INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping] Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Agent discovery successful
      Agent address: 10.99.204.208
      Agent port:    50000
      Identity:      e4:46:3a:de:86:24:8e:15:09:13:3d:a7:4e:07:04:37
    Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Handshaking
    Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Connecting to 10.99.204.208:50000
    Apr 01, 2020 7:03:51 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Trying protocol: JNLP4-connect
    Apr 01, 2020 7:04:02 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Remote identity confirmed:
    e4:46:3a:de:86:24:8e:15:09:13:3d:a7:4e:07:04:37
    Apr 01, 2020 7:04:03 PM hudson.remoting.jnlp.Main$CuiListener status
    INFO: Connected
    
  2. 查看Jenkins节点列表,新节点已经处于可用状态

    image-20220724220422776

  3. 测试使用新节点执行任务

    • 配置free项目

    • 限制项目的运行节点 ,标签表达式选择 172.21.32.5

    • 立即构建

    • 查看构建日志

    Started by user admin
    Running as SYSTEM
    Building remotely on 172.21.32.5 in workspace
    /opt/jenkins_jobs/workspace/free-demo
    using credential gitlab-user
    Cloning the remote Git repository
    Cloning repository http://152.136.62.143/root/myblog.git
     > git init /opt/jenkins_jobs/workspace/free-demo # timeout=10
     ...
    

方式二(使用ssh方式添加 salve 节点)

有时候使用 上边方式 配置agent 不好使。可以使用 ssh 方式配置 agent

  1. 生成凭据

    ssh-keygen -f ~/.ssh/id_rsa -P '' -q 
    
    # 将密钥分发到 agent
    ssh-copy-id ec2-user@10.23.1.33
    或者登录 agnet 手动导入公钥,公钥存放位置
    cat /home/ec2-user/.ssh/authorized_keys
    直接将 master 上的公钥导入其中,master 公钥存放位置
    cat ~/.ssh/id_rsa.pub
    将 master 上的公钥,复制;粘贴到 slave 上就可以;
    
    # 测试 master 节点 登录 agent 节点
    ssh ec2-user@10.23.1.33
    
  2. 在jenkins 中配置凭据

    Jenkins选择:系统管理→manage credentials

    image-20220726103446440

    image-20220726103606918

    然后填入 私钥

    username:填写要连接的 agent 服务器的ssh用户

  3. 在Jenkins中新建一个节点

    image-20220726103806914

    启动方式选择 ssh 方式,主机填写 agnet IP地址

    image-20220726103855330

    密钥这里选择 上边我们创建的密钥;,Host Key Verification Strategy 选择合适的选项;

    保存,接下来点击该节点。

  4. /opt/jenkins_jobs/ 目录准备

    在agent 上要准备该目录,然后将该目录 授予 jenkins master 远程用户的 权限

    chown ec2-user.ec2-user /opt/jenkins_jobs -R
    
  5. jenkins 页面启用该节点

    image-20220726104144070

jenkins agent 到这里就配置完毕;

总结

两种方式,用那种都可以;本人选择第二种;

posted @ 2022-07-26 10:43  Star-Hitian  阅读(4557)  评论(0编辑  收藏  举报