使用阿裏雲k8s服務部署項目以及pvc持久化思路.
阿新 • • 發佈:2018-06-11
阿裏雲使用k8s開發微服務一如慣例,懶人一枚,
- 開啟阿裏雲k8s服務,
- 開啟阿裏雲容器鏡像服務
- 登錄master主機,創建項目文件夾.
- 在項目文件夾創建Dockerfile
vi /root/nginx/Dockerfile
From nginx
ADD nginx.conf /etc/nginx/nginx.conf
ADD saasfrontal.conf /etc/nginx/conf.d/saasfrontal.conf
VOLUME /root/nginx/frontal /usr/share/nginx/frontal #將開發打包出來的頁面文件夾映射到容器內部,即可實現從外部更改即可,不用每次把文件拷貝到容器內,占用更多的時間和io.
CMD nginx -g daemon off #必須以此命令啟動nginx進程,否則容器會不斷loopcrash,原因在於其他如nginx -f 命令只是一次性執行,無法持續執行. - 在任意位置執行
docker build /root/nginx -t #<你的鏡像服務地址>:版本號
如果不加版本號默認為lastest, build命令後必須指向你要創建的Dockerfile所在的路徑,絕對路徑或者相對路徑均可. - docker login 到你的阿裏雲容器鏡像服務賬號下,此處應該可以用aliyun的accessID 和accessKey 進行授權訪問,後續慢慢研究
- docker push 剛生成的鏡像.
- 阿裏雲容器服務中k8s管理臺創建一個服務,填寫相關的標簽(這組服務的名字),鏡像為你創建的鏡像名稱, 對外服務(WAN)或者對內服務(LAN)的端口(比如外部80訪問容器內部80端口)創建服務後會自動創建負載均衡,並收取按需付費的費用.
- jenkins配置ssh登錄:
這裏需要說明一下,
切換到jenkins用戶, 以ssh-keygen -t rsa 一路默認生成公鑰和私鑰,將jenkins的公鑰導入到本服務器的/root/.ssh/authorized_keys文件夾中,
cat /var/lib/jenkins/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
執行一次訪問
ssh root@<局域網ip>
提示rsa證書之類的布拉布拉布拉~,輸入yes
然後在root的ssh文件夾下可以看到一個known_hosts
known_hosts
cat known_hosts通過scp拷貝到master服務器上,
[172.19.137.244]:10201 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOk68ZPOlrc7Yj5/qhUwVoKgTsz8+9PJkBKWxDXy3WGEDCMDtrNcBPOIVl03NoyitMB6psOYHIXwbNHoxC3Vzl0=
簡單說來root的ssh目錄下有這個文件就不需要你再去jenkins逐個登錄到某服務器上去確認rsa證書輸入那個yes了.
將authorized_keys文件和known_hosts通過scp拷貝到master服務器上,就不需要再手工以jenkins用戶登錄到master服務器完成一個初始化.
scp /root/.ssh/authorized_keys裏,否則可能會造成服務器無法登錄的問題. root@<master IP>:/root/.ssh/
scp /root/.ssh/known_hosts root@<master IP>:/root/.ssh/
這裏註意不要偷懶復制整個文件夾, 可能會造成無法登錄的問題, 對於已經使用了密鑰登錄的ecs服務器,還是手工cat的方式附加到root的authorized_keys裏,否則可能會造成服務器無法登錄的問題.
ssh-keygen -t rsa 時默認Passphrase為空, 所以這裏留空即可.
Path to key 這裏是要提交的是jenkins的私鑰, jenkins的默認home文件夾是/var/lib/jenkins,所以私鑰默認位置是/var/lib/jenkins/.ssh/id_rsa
貼入私鑰的所有內容
然後在下面輸入docker的ip等相關信息, 作者此服務器已關所以這裏反饋連接失敗. - jenkins創建一個nginx項目
- 創建完成後執行exec shell命令進行, 去除所有的項目文件夾之前的文件夾結構, 並上傳項目文件夾到k8s master的nginx目錄下.
- 使用kubectl 創建rc 並設置副本數量,也可以用web界面創建然後導出下載為yaml.後續只需要進行部分修改. 純手工去寫也可以.
- 執行該jenkins任務:
14.測試訪問.
順便提一嘴關於PV和PVC:
1.在阿裏雲創建nas雲盤, - 將nas雲盤設置為pv(持久存儲卷)
- 以現有的pv創建pvc(持久存儲卷連接代碼)
- 將pvc應用給rc(副本控制器).
- jenkins將項目文件發送到master上,master配置node連接pvc並實現外部到內部的持久化存儲.
思路是這樣的,阿裏雲的k8s最低配置是3臺master群集加3臺node群集, 即便是按需付費一年也要差不多5000多一套, 測試不起了.
使用阿裏雲k8s服務部署項目以及pvc持久化思路.