想在公司的新项目上使用k8s,那么持续集成和发布就是必须的了,这里写一下之前在部署的时候遇到的问题,分享一个阿里云特别有帮助的文档
https://help.aliyun.com/document_detail/106712.html?spm=a2c4g.11186623.6.813.626e4330lQtSFi
1、使用jnlp-slave镜像进行与jenkins-master的连接,但是jenkins一直卡在“doesn't have label”的提示上
这个问题在网上也有很多的说法,我当时试的时候就是太过于关注网上的说法而忽略了自己的环境,解决这个问题很简单,jnlp-slave镜像在启动的时候会自动启用命令jenkins-slave,所以在设置jnlp的时候,命令那里一定要留空,否则就会覆盖镜像的ENTRYPOINT
2、使用SSH进行git clone失败
之前同事们一直使用的SSH进行git clone的操作,但是我这次的操作即使是拷贝了公钥也没有用,最后使用http的方式进行的
3、使用kaniko进行镜像上传失败
首先,/root/.docker/config.json如果没有则需要先登录,打开config.json就会看到用用户具有哪些docker库的权限,然后再使用这个配置文件生成一个secret给kaniko的容器挂载
4、在使用kubectl镜像进行部署的时候报no funcion kubernetesdeploy,而且装了kubernetes continous deploy也没有用
我遇到这个问题的时候使用的是jenkins官方的镜像,然后手动安装的kubernetes continous deploy,但是我使用了阿里云文档里的jenkins镜像后,也没有手动安装kubernetes continous deploy就解决了,这个镜像里会有一个kubernetes-deploy plugin的插件,不知道跟这个有没有关系
5、构建了以后说找不到codepipeline
引起这个问题的原因是因为构建时使用了阿里云的测试源码却没有使用阿里云的k8s服务
6、构建了以后说.kube.conf permission denied
我遇到这个问题的时候是因为我使用其它的jenkins-slave-kubectl的镜像,使用阿里云里指定的kubectl容器即可
7、kubectl镜像抓取镜像失败,但是在相应的主机上使用docker pull时却是可以的
这是因为kubectl在拉取镜像时根本就不会使用docker的config.json,解决的办法是使用k8s的imagepullsecret,这里有篇文章介绍得很精干 https://note.qidong.name/2019/01/pull-private-images-in-k8s/
从上述我遇到的问题来几乎在做持续集成的时候我一步都走得坎坷,所以如果您遇到了其它的问题请不要气馁,只要您认定了就请坚持下去,更希望您能无私的分享