zoukankan      html  css  js  c++  java
  • 交付jenkins到k8s的问题记录

    交付jenkins到k8s的问题记录

    一、前言

      k8s部署jenkins的文章,我主要是参考这个网址:https://www.yuque.com/duduniao/k8s/gp8n04。坑嘛,算是什么都遇到了,各种各样,千奇八怪 【~~>_<~~~】

            没有完全照抄,因为公司没用ZK集群,也没用Dubbo微服务框架(用nacos倒是愿意完完整整搞下来),不折腾自己呗,哈哈哈哈哈~~~ 所以是从第3大点交付Jenkins到K8S开始部署的,直到3.7. 安装Maven到Jenkins的 3.7.1. 场景一。当然例子自己找了gitlab的测试项目,后续博客我再补充吧。

         

    二、问题记录及解决

    问题1:jenkins插件装不了导致不得不换版本

    问题描述:文中的jenkins版本是2.190.3,有时候重新装的时候会遇到选择推荐插件安装或者自定义插件安装都不行的,只能跳过。跳过就为后面埋了不少地雷了。例如:

     

    任凭你三头六臂,pipeline就装不了咯,不是说jenkins版本不够,就是pipeline的依赖包装不了,反正我觉得文中那jenkins版本有问题,建议大家换掉

    问题解决:用这个镜像:jenkinsci/blueocean,亲测非常好,官方长期维护,靠谱!

    问题2:安装Jenkins离线或者是登录后白屏或者重启不了

    问题描述:当你兴高采烈设置完账号密码之后,重新登录jenkins,你就发现是个白屏。小俊子说是因为访问国外的地址 但你没法访问导致这样的。还真的发现好几个配置文件有个google的地址的。

    问题解决:参考 https://blog.csdn.net/weixin_42916710/article/details/99890683

    因为我前面做了jenkins的nfs持久化目录保存,所以jenkins目录地址在这里 /data/nfs-volume/jenkins_home/。修改这个文件: hudson.model.UpdateCenter.xml ,url 改成清华的。

     改完地址记得删除jenkins的pod,重新生效。当然也可以重启jenkins( jenkins访问地址/restart  )

    问题3:拉取不了项目代码

    问题描述:在3.1. 制作Jenkins镜像的时候,我们用ssh-keygen生成了密钥文件,然后Dockerfile有个步骤是将私钥添加到jenkins镜像中。我们如果要拉取gitlab上的代码还需要把公钥放到gitlab上,才算是配置好。然后问题来了,进入jenkins的pod容器里,尝试拉代码的时候,报错如下

     第一句“/root/.ssh/id_rsa:invalid format” 可以不管,不影响拉代码的。如果要解决,需要重新生成密钥,用这种密钥格式即可(-m指定PEM格式,是rsa之前的格式):ssh-keygen -m PEM -t rsa -b 4096(文中这个就不要用了,ssh-keygen -t rsa -b 2048 -C "1659775014@qq.com" -N "" -f id_rsa,单单敲ssh-keygen也是文中的格式的。)

    第二句报了个“Broken pipe”的错误,这个才是致命的!!!

    问题解决:参考 https://blog.csdn.net/qq_36490086/article/details/90339345

    要在jenkins的pod里面加多个文件: /root/.ssh/config
    ——》填进去
    Host *
    IPQoS lowdelay throughput
    查了下有说是,VMware NAT 网络模式 的锅,原理没搞清楚,先记住好了  >_<||| 
    (注意:因为怕销毁这个文件又要手动添加,所以我在jenkins的镜像制作Dockerfile中ADD进去镜像了)
     
     
    问题4:maven持久化
    问题描述:k8s+jenkins中直接使用官方maven镜像虽然也可以打包,但是打包过程中下载存储在repository中依赖会随着容器的销毁而丢失,这样在下次打包时需要重新下载,严重影响CI/CD的效率,下载完的依赖放在pod容器内的这个目录:/root/.m2/repository/
     

    整整拉了13分钟,正常人都受不了呢 =  =

    问题解决:做maven repository的本地持久化存储!怎么做?跟jenkins的持久化存储一样的方法用nfs做。
    需要改下jenkins的资源配置文件:deployment.yaml
     

     

     

  • 相关阅读:
    2015-10-09 Fri 晴 加快进度看书
    lseek()函数
    pipe()管道最基本的IPC机制
    linux VFS 内核数据结构
    tcp协议中mss的理解
    tcp的精髓:滑动窗口
    2015-10-11 Sunday 晴 ARM学习
    2015-10-12 晴 审面包车
    2015-10-14 晴 tcp/ip
    pyfits过滤数据更新文件。
  • 原文地址:https://www.cnblogs.com/windysai/p/14161282.html
Copyright © 2011-2022 走看看