想在公司的新項目上使用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/
從上述我遇到的問題來幾乎在做持續集成的時候我一步都走得坎坷,所以如果您遇到了其它的問題請不要氣餒,只要您認定了就請堅持下去,更希望您能無私的分享
