1. 程式人生 > >使用阿裏雲k8s服務部署項目以及pvc持久化思路.

使用阿裏雲k8s服務部署項目以及pvc持久化思路.

阿裏雲使用k8s開發微服務

一如慣例,懶人一枚,

  1. 開啟阿裏雲k8s服務,
  2. 開啟阿裏雲容器鏡像服務
  3. 登錄master主機,創建項目文件夾.
  4. 在項目文件夾創建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 命令只是一次性執行,無法持續執行.
  5. 在任意位置執行
    docker build /root/nginx -t #<你的鏡像服務地址>:版本號
    如果不加版本號默認為lastest, build命令後必須指向你要創建的Dockerfile所在的路徑,絕對路徑或者相對路徑均可.
  6. docker login 到你的阿裏雲容器鏡像服務賬號下,此處應該可以用aliyun的accessID 和accessKey 進行授權訪問,後續慢慢研究
  7. docker push 剛生成的鏡像.
  8. 阿裏雲容器服務中k8s管理臺創建一個服務,填寫相關的標簽(這組服務的名字),鏡像為你創建的鏡像名稱, 對外服務(WAN)或者對內服務(LAN)的端口(比如外部80訪問容器內部80端口)創建服務後會自動創建負載均衡,並收取按需付費的費用.
  9. 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等相關信息, 作者此服務器已關所以這裏反饋連接失敗.
    技術分享圖片
  10. jenkins創建一個nginx項目
  11. 創建完成後執行exec shell命令進行, 去除所有的項目文件夾之前的文件夾結構, 並上傳項目文件夾到k8s master的nginx目錄下.
    技術分享圖片
    技術分享圖片
  12. 使用kubectl 創建rc 並設置副本數量,也可以用web界面創建然後導出下載為yaml.後續只需要進行部分修改. 純手工去寫也可以.
  13. 執行該jenkins任務:
    技術分享圖片
    技術分享圖片
    14.測試訪問.
    技術分享圖片
    順便提一嘴關於PV和PVC:
    1.在阿裏雲創建nas雲盤,
  14. 將nas雲盤設置為pv(持久存儲卷)
  15. 以現有的pv創建pvc(持久存儲卷連接代碼)
  16. 將pvc應用給rc(副本控制器).
  17. jenkins將項目文件發送到master上,master配置node連接pvc並實現外部到內部的持久化存儲.
    思路是這樣的,阿裏雲的k8s最低配置是3臺master群集加3臺node群集, 即便是按需付費一年也要差不多5000多一套, 測試不起了.

使用阿裏雲k8s服務部署項目以及pvc持久化思路.