rancher中快速部署應用


通過UI 部署應用

rancher在命名空間又抽象出一層,項目的概念(這個只是便於管理rancher抽象出來的,kubernetes中並沒有這層);我們可以先創建一個項目,然后在里面創建命名空間;這里為方便演示直接使用默認default的項目和default命名空間。

工作負載(deployment daemonset statefulset job等)部署

工作負載主要有deployment、statefulset、daemonset、job等類型,其實它們就是pod控制器,直接部署pod,很不容易控制;用不同類型控制器來生成和控制pod,就來的很方便了。如deployment是無狀態的pod控制器,statefulset是有狀態的控制器,一般用來部署數據庫;daemonset是每個worker節點上都部署一個,一般用來采集worker節點的數據; job一次性的,完成后狀態是completed,不再工作。這些控制器都有縮寫的別名,具體可以參考博主的kubectl 常見命令使用

1,在workloads tab中點擊deploy

1562658088891

2,填寫配置信息

填寫鏡像名稱,副本數量、選擇負載類型等關鍵信息

1562658582885

只有deployment和statefulset可以設置多個副本集;

3,端口映射

1562658676239

如圖除"Layer-4 Load Balancer"外,還有三種選項;nodeport相當於四層負載一樣,選擇此選項后,在服務發現中會生成一個deployment同名-nodeport,這種格式的service;這個比較方便;訪問集群任意節點ip+此nodeport端口 都能調度此deployment控制的pod上。hostport稍顯雞肋,pod調度到那個節點上,就可以通過節點ip+端口進行訪問,如果沒有調度的節點ip+端口是訪問不了的。Cluster IP最好理解,就是基於它所在namespace組成的局域網,其他namespace或者外部是無法訪問的;同一個namespace是可以直接訪問的。

4,環境變量

1562658705000

除了可以使用自定義環境變量外,還可以使用內部的資源環境變量,如resource和field

5,調度規則

可以指定調度到(或不到)某個節點

1562658887859

也可以自定義匹配規則

1562659061684

如圖中設置 調度只匹配amd64位的節點

在節點調度模塊點擊show advanced options后,還可以設置容忍度、親和度匹配規則

1562659137252

6,健康檢查

1562659287048

  • 可以設置存活和就緒檢查,默認是readliness 檢查,設置完成后 存活檢查也使用此規則;也可以點擊右側Define a separate liveness check增加一個存活檢查。設置http和htpps方式檢查 相對友好一下;tcp方式呢,可能應用占有端口還在,但已經不工作了;命令退出狀態檢查:需要提前把腳本放到鏡像或掛載到容器中,執行此腳本后,返回碼是否為0 作為判斷的依據。

7,卷

1562659575944

這個不做特殊說明了,基本都是docker的知識;這是強調一下,可以把證書、configmap、證書掛載到容器中;如果選擇掛載新的持久卷,會讓創建一個持久卷;如果掛載一個已存在的持久卷,需要先創建一個持久卷。掛載空數據卷(ephemeral volume)這個比較簡單。

8,更新策略

1562659896651

這個選擇合適自己就行,如果這三種策略滿足不了自己日常使用,可以自定義策略;默認選擇" Rolling: start new pods, then stop old" 這個一般就能保證應用平滑更新;而且rancher UI上還支持回滾操作,很好保證了,升級錯誤能快速退回。

點擊底部show advanced options后 ,能顯示出剩下 使用頻率相對較低配置項

9,command

1562660181310

關於entrypoint和command用法 有單獨一章博客講解docker run image -args對應yaml語法/rancher UI操作方式,這里不再贅述。

10,網絡(networking)

1562660287112

網絡這塊,可以修改使用主機網絡空間,一些host別名,以及一些DNS解析等配置;

11,標簽和注解

1562660388254

主要是給此deploy下的pod打標簽和注解的

12,安全

這一塊配置也很重要,由於容器為了安全,是和外部環境是隔離的,想使用某些資源,就需要關閉或開啟一些安全策略;

1562660462982

1562660475811

此模塊還集成了資源限制和提權(最后的雙側復選框);如果pod采用了HPA(水平擴展),一定要做好存活和資源限制配置。這樣一旦觸發了資源配置上線,就會自動擴展。

13,菜單功能

1562673526733

右上角菜單,也有很多功能;主要是編輯:修改deploy用的;clone:可以復制此deploy,然后做修改,保存。redeploy:重新部署,這個一般在configmap等更新后,可以重新部署一下。增加邊車:可以增加一個輔助容器或者init容器;剩下的根據字面意思 就能知道它作用。最重要的是自己動手操作一遍,加上有一定k8s基礎,很容易就找到對應關系並掌握UI上操作的方法。

負載均衡配置(ingress)

1562661289540

1562661329299

ingress其實也是一種service,相當於增加一個支持7層負載的nginx,並帶有域名;nginx(也可以是其他代理軟件甚至是硬件)把接收到請求反向代理到匹配的pod上。新增ingress時,可以選自定義生成的域名,也可以使用自己購買的域名; 選擇目標,可以是service或者工作負載(workload);證書、標簽注解都能在此UI配置。

服務發現配置

service可以這么理解:通過標簽的鍵值對,選擇匹配的pod,然后用戶或其他應用訪問入口是service,service調度滿足匹配條件的pod上。

1562661416206

1562661506086

1562661517521

1562661575199

1562661606427

1562661669382

  • "One or more external IP addresses"和"An external hostname" 類似,把外部ip或者域名定義為內部dns,前者可以一次性定義多個ip,后者只能定義一個。如選擇"One or more external IP addresses"類型,名稱填寫my-data;Target IP Addresses填寫 172.17.1.4 ;此集群內部pod可以直接訪問my-data,dns自動解析到172.17.1.4

  • "One or more workloads"和"The set of pods which match a selector"類似,前者相當於工作負載選擇器,后者相當於標簽選擇器;前者通過標簽選擇工作負載(deployment、daemon-set、statefulset),后者通過標簽選擇pod。

    在rancherUI部署應用如果采用nodeport,會自動產生兩個service,一同名service,一個是加上“-nodeport”的service;如果不想使用rancherUI自動生成的service,可以自己定義一個“The set of pods which match a selector” 標簽選擇器,這里面再來定義cluster_ip 或nodeport;

  • "Alias of another DNS record's value" 這個暫時沒未深入研究。

數據卷

數據卷就是持久化存儲的

1562661702487

添加數據卷,填寫名稱,選擇提前定義好持久卷,就可以使用了。

定義持久卷可以在storage中定義,有持久卷和存儲類兩種類型

1562671545154

存儲類是可以動態擴展的;持久卷一般定義多少,最大就能使用這么多。存儲技術現在很多樣,kubernetes(rancher)支持 這么多,可以提前搭建好后,直接使用(如何搭建不同存儲平台,這里不做描述)。

1562671828707

其他配置

資源

證書

1562661849279

這個一般是存放CA或其他機構頒發證書、甚至是自定義的證書文件,如tls.key tls.pem這類文件的;最后可以通過volume的形式掛載到容器

configmap

1562661919146

  • 這個configmap 最常用的作用有兩個,一個是編寫環境變量,然后在工作負載部署時,環境變量可以直接引用此configmap,另一個就是存儲應用配置文件,如上圖;key就是配置文件名稱,value就是配置文件內容;然后通過volume掛載到容器程序存放配置文件的地方。

1562672543191

  • 如部署nginx時有三個配置文件,都寫到configmap后,再把三個配置文件(鍵值對) 都掛載容器同一個目錄,並且覆蓋掉容器里面配置文件,可以在Mount Point中直接填寫路徑(只保留配置文件路徑,不接配置文件名),Sub Path in Volume中不填寫任何內容;如果想把configmap的文件掛載到容器,同時容器中默認的文件不被刪除(有同名文件除外),Sub Path in Volume 填寫掛載到容器中文件要顯示的名稱即可; Optional和items是匹配的,Optional為true,items 才可以設置,這個一般是用來只把configmap中 部分文件掛載到容器中使用的;
密文
  • 這個一般用來存儲敏感信息,比如密碼;然后和configmap一樣,可以通過環境變量引用,也可以通過volume掛載也可以;相對簡單,操作一兩遍 即可掌握。

命名空間和工具成員比較簡單,略過

  • rancherUI 能配置的就這么多,配置不了,可以通過編輯yaml,來手動填寫

通過導入yaml部署應用

1562658088891

1562657976292

這個是最簡單的,把寫好的yaml文件,導入進來就可以了;導入后,如果有問題,根據日志或者event提示,修改調整一下即可。需要說明的時,如果導入時,沒有配置文件里面命名空間,需要提前創建命名空間。如果導入yaml文件,有創建命名空間操作,不能和已有命名空間重名;並且導入后,需要給移動到某個項目中。

如何驗證部署應用是否運行正常

驗證方法有很多,能達到目的就行。一定要靈活,不能把自己限定死。

  • 除了常規的查看日志,通過瀏覽器直接訪問,或進入shell ,進行驗證外;我這里重點講的是借助其他容器進行驗證。

    推薦如下兩款鏡像

hwchiu/netutils  busybox

在待驗證的應用同一個命名空間中,直接rancherUI中直接部署其中一款鏡像,無需暴露端口;只需要在部署成功后,進入shell界面;busybox一般支持 nslookup 、telnet等命名,可以直接nslookup service-name/telnet service:ip 而netutils鏡像集成工具相對更豐富一些,比如mongo-client redis-client有了這些數據庫的客戶端,就可以用它連接數據庫,測試數據庫是否能正常連接,加密是否生效;如redis-cli -h service_name 看看能連接部署redis,連接成功后可以再執行一些命令,如ping ,看看能不能執行成功;如果redis加密了,輸入密碼后再次執行ping,是否能成功等。

以上就是提供驗證的思路,具體操作,需要自己根據情況來實踐。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM