啓動、配置、擴容、伸縮、存儲,開普勒雲平臺之使用指南

本文從啓動、配置、擴容、伸縮、存儲等方面介紹如何使用開普勒雲平臺。前端

1、Kplcloud是什麼?

kplcloud是一個基於Kubernetes的輕量級PaaS平臺,經過可視化的界面對應用進行管理,下降應用容器化的對度,從而減小應用容器化的時間成本。java

Kplcloud已在宜信服務於宜人財富等多個團隊,穩定運行了近兩年,目前平臺已在生產環境跑着上百個應用,近千個容器。git

1、登錄

登錄能夠分爲三種,分別是LDAP登錄、郵箱密碼登錄、三方受權登錄,我們沒有註冊功能。下面對這三種登錄方式進行講解。github

LDAP與郵箱登錄大同小異,只須要簡單的配置便可。web

1.1 LDAP登錄

在app.cfg文件找到[server]的login_type參數,設置爲 ldap而且找到[ldap]塊docker

[ldap]
ldap_host = 127.0.0.1
ldap_port = 389
ldap_base = DC=yourdomain,DC=corp
ldap_sseSSL = false
ldap_bindDN = 
ldap_bind_password = 
ldap_user_filter = (userPrincipalName=%s)
ldap_group_filter = (&(objectCategory=Group))
ldap_attr = name;mail

[server]
;auth_login 
login_type = ldap

輸入你家LDAP的相關信息便可。後端

不要設置auth_login,應該把它註釋掉。tomcat

1.2 郵箱登錄

在app.cfg文件找到[server]的login_type參數,設置爲 email服務器

[server]
;auth_login 
login_type = ldap

不要設置auth_login,應該把它註釋掉。網絡

1.3 Github受權登錄

經過Github受權登錄須要的app.cfg將[server]下的 auth_login參數設置爲github

Github建立OAuth App

  • 打開github官網,進入https://github.com/settings/developers, 在左側菜單欄找到「OAuth Apps」並點擊進入
  • 若是沒有OAuth App則點擊「New OAuth App」按鈕建立一個新的OAuth App
  • 建立完成以後 找到咱們剛剛建立的OAuth App並進入就能夠看到Client ID和Client Secret了
  • 將它們複製下來他貼到app.cfg的[server]塊下的client_id和client_secret

  • 設置好Homepage URL和Authorization callback URL

1.4 受權登錄

上面設置好以後, 就可使用github受權登錄的方式進入平臺了,默認分配的空間及權限能夠在app.cfg文件下的[server]塊下的default_namespace和default_role_id配置。

[server]
client_id = balabalabalbabiubiubiu
client_secret = balabalabalbabiubiubiu
auth_login = github
default_namespace = default-app
default_role_id = 4C

2、Dashboard

2.1 工做臺

工做臺是咱們進入以後看到的第一個頁面,主要列出如下一些信息

  • 使用文檔
  • 建立應用入口
  • 空間CPU及內存資源使用狀況
  • 你可操做的最新的幾個應用
  • 該空間下最近應用的動態
  • 您可操做的空間列表
  • 您規屬於哪些權限組列表

2.2 全局監控

監控只是簡易的集羣網絡,內存、CPU及語言,詳情的監控能夠從grafana查看。

2.3 上線統計

本模塊主要是對一些應用發佈的狀況進行一些統計,如應用失敗的應用的次數中斷及回滾的次數,點擊應用名稱能夠看應用詳情。

3、應用管理

3.1 建立應用

建立一個Java應用

在建立應用以前,首先咱們要作的是在你的git項目上將Dockerfile文件提交上去,而且生成一個Tag或releases版本。

Dockerfile 參考

FROM openjdk:latest

COPY xxxx.jar /opt/app

WORKDIR /opt/app
CMD ["java", "xxx.jar"]

進入建立應用頁面,填寫基本信息

  • 進入「建立項目」頁面
  • 項目英文名填寫項目的「英文名稱」 名稱的規則: ^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
  • 填寫「項目描述」 可不填
  • 提交信息,進入第二步

填寫詳細信息

  • 選擇項目語言Java
  • 項目地址:輸入項目的址 kplcloud/hello 填寫完後會自動獲取項目的tags列表
  • 選擇版本:選擇獲取回來的tags版本
  • POMFILE: pom.xml文件的路徑
  • 構建路徑:這是Dockerfile放到項目所在的路徑地址
  • 容器數量:啓動的Pods數量
  • 容器規格:該Pods的最大內存上限
  • 啓動方式:jar 啓動或 tomcat 啓動
  • Args: 選擇jar 啓動會自動生成簡單的 啓動命令,若是是tomcat 啓動則是其餘命令 // 考慮去掉這個選項
  • dubbo 服務: 若是是dubbo服務則勾選,會爲其開放20880端口
  • 若是選擇了「增長端口」 會列出端口、協議填寫
  • 端口及協議:若是選擇了則會建立Service進行負載,注意端口名稱的格式,必須是xxx-port,能夠添加多個端口,但建議一個應用只啓動一個端口。

提交成功以後會顯示以下頁面,管理就能夠在審覈頁面進行部署。

(建立Golang/Python/NodeJs/靜態應用的步驟請參看開源文檔。)

3.2 自定義啓動命令

應用服務啓動能夠在多個地方進行調整,如下介紹兩種方案,Dockerfile 和 平臺詳情頁調整

Dockerfile CMD啓動方式

看一下簡單的例子:

FROM hub.kpaas.nsini.com/app/hello:v0.0.3

CMD ["/go/bin/hello"]

啓動命令寫在CMD這個後面,若是後面有多個參數能夠以逗號隔開例如: CMD ["static-web", "-path", "app", "-port", ":8080"]

平臺詳情頁調整

打開應用詳情頁:

在詳情這一選卡上找到「命令,參數」,點右邊的編輯icon,彈出對話框進行填寫:

填定啓動的命令和參數,參數用逗號隔開。點提交服務會自動重啓動。

注意:在平臺詳情頁修改的命令會覆蓋掉Dockerfile 下的CMD命令。

3.3 日誌採集

日誌採集配置

在應用詳情頁中間有一個叫做「日誌採集」的模塊

點擊右邊的「添加」按鈕,在彈出的對話框中選擇日誌的路徑及正則規則

  • 文件路徑:你日誌文件的位置
  • 日誌規則:若是沒有特殊需求的話默認就好

提交後服務會自動重啓動。

日誌採集

若是配置了上面採集器,那麼它會向服務所在的Pod注入一個Filebeat採集器對應用服務的業務日誌進行採集。把採集到的日誌入到kafka集羣,而後logstash進行消息處理及格式化。

處理完後入到ES集羣,最終咱們就能夠經過kibana查詢到咱們的業務日誌了。

固然kafka、logstash、es得您本身去搭建。

若您可把這幾個服務跑在Kubernetes能夠參考我給您生成的yaml 直接apply 進去就能跑。

模版配置

生成filebeat會用到兩個模版,一個是容器的模版FilebeatContainer,另外一個是ConfigMap的模版FilebeatConfigMap,您可根據本身的需求調整相應的模版文件。

3.4 查詢構建應用日誌

構建應用的流程是經過建立應用提交一些信息進行處理

  • 從git 倉庫獲取tags列表
  • 調用jenkins API 將應用的相關參數及版本信息傳給它並進行構建
  • Jenkins Job執行Shell命令 執行docker build並上傳致Docker 倉庫
  • 平臺監聽到job已經執行完成併成功了,調用kubernetes API更新應用的Image地址
  • 監聽升級狀況
  • 發送通知

以上是構建應用的後端流程,而前端就變得比較簡單了。只須要在應用詳情頁點擊"Build"按鈕,在彈出的對話框中選擇相應用的tags版本並提交就好了,以下圖:

查詢構建日誌

點擊詳情頁的build日誌選項卡,會顯示最近的構建記錄,點擊左側相應的版本能夠查看該版本的構建狀況,也能夠對正在鬆建的應用進行中斷,以下圖:

3.5 切換服務模式

服務模式切換比較麻煩,須要您的Kubernetes支持,目前咱們使用的是istio的方案,也就是說您須要在你的kubernetes上安裝istio的相關服務,而且在咱們的模版管理將istio所須要的幾個模版配置上。才能開啓此功能。

若是您沒有安裝Istio,可跳過此章。

依賴

在"模版管理"菜單找到Gateway、VritualService、InitContainer、IstioProxy這幾個模版,根據本身環境的狀況進行調整。

  • Gateway: 本平臺設計的模式是一個Namespace所對應一個Gateway,多個Namespace空間就會有多個Gateway,VirtualService選擇的是本Namespace下的Gateway。
  • VirtualService: 在生成應用的對外訪問入口時與Ingress一塊兒生成。

使用過Istio的同窗應該都知道,要實現Istio所提供的相關功能須要在Pods裏注入兩個容器,一個是proxy_init,另外一個是proxyv2

  • InitContainer: 模版是是初始化設置的yaml,好比將流量經過 iptables的方式轉發給 proxy
  • IstioProxy: 模版就是將pods的全部流量代理的yaml

流程

下圖是咱們架構流量進入到咱們容器所圖:

  • DNS 將域名解析到VIP
  • VIP 將80的流量轉發邊緣節點的31380端口(這個是IstioIngressGateway控制器的Service的NodePort)
  • 前面咱們所說過每一個Namespace都會有至少一個對應的Gateway,Gateway的hosts就是xxx.{namespace}.xxx.com
  • VirtualService裏的destination.host 就是Service的名稱。 以上是kplcloud平臺的流程,若是您有須要調整的,只須要修改模版就好,不須要調整代碼。

一鍵切換

以下圖,在應用詳情頁面選擇「模式」按鈕,在彈出的對話框中選擇"Service Mesh"選項目,後點擊提交後Pods會自動重起。

你須要在app.cfg文件開起ServiceMesh功能

[server]
service_mesh = true

3.6 擴容

擴容是對Pods的使用資源進行擴容,例如最大使用的CPU及內存資源。

在應用的詳情頁面,在右上角找到「擴容」按鈕,並點開。

在彈出的對話框中拖動CPU和內存,可對其設置一個基礎值及一個最大值,以下圖:

選擇好相應的值後點擊「保存」按鈕後,會重起該應用的全部POD。重啓後的POD可以使用的最大CPU及內存資源就是您剛剛設置的值。

所對應用以deployment的yaml參數:

requests:
    limits:
        cpu: 1
        memory: 128Mi
    requests:
        cpu: 500m
        memory: 64Mi

3.7 伸縮

伸縮是對該應用所啓動的pods數量進行一個控制。

一樣進入應用的詳情頁頁,在右上角找到「伸縮」按鈕並點開。

在彈出來的對話框中選擇啓動的POD數量,以下圖:

提交以後若數量大於以前的數量,則會啓動缺乏的POD數量,若小於以前的值,將會逐步減小應用的POD。

目前給的最大值是8個pod,資源可以使用的內存是16G,若您的應用超過咱們所設定的最大值。想辦法優化吧,64核128G內存都不夠用,這種級別的應用不適合用Docker。

這種級別的應用最好是拆了吧。

3.8 掛載持久化存儲卷

本平臺是經過storageclass來動態建立PV。也就是說我們依賴於storageclass,若是您的Kubernetes不支持相應的存儲試,將沒法很是方便的進行掛載。

目前暫不支持掛載多個PVC,或許之後會更新吧。

這裏演示的是用的NFS進行演示,實際使用時可根據本身的需求配置相應的provisioner,其餘配置是同樣的不須要調整,只須要在「模版管理」 調整StorageClass和PersistentVolumeClaim模版。

建立持久化存儲卷聲明

在菜單找到「配置與存儲」->"持久化存儲卷聲明"。

選擇應用的空間,並點擊「建立」按鈕

在彈出的對話框中會有幾個選項目:

  • 名稱:存儲卷的名稱(規則: ^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
  • 容量:可使用的存儲區大小,最小單位Mi,最大Ti
  • 訪問模式:
    • ReadWriteOnce——該卷能夠被單個節點以讀/寫模式掛載
    • ReadOnlyMany——該卷能夠被多個節點以只讀模式掛載
    • ReadWriteMany——該卷能夠被多個節點以讀/寫模式掛載
  • 存儲類:若是沒有存儲類請查看建立存儲類

掛載到應用目錄

當存儲卷建立好以後就能夠在應用進行掛載了。

一樣的進入應用詳情頁面,找到「持久化存儲」選項卡,如圖:

點擊「添加」按鈕,在彈出來的對話框加輸入相關信息:

  • 持久化存儲路徑:該路徑爲容器裏的掛載路徑
  • 持久化存儲卷聲明:這裏會列出您可使用的存儲卷

填寫好路徑及選擇好存儲卷後點擊提交,改應用的全部POD的逐步重啓動。

掛載完成以後能夠看到所掛載的相關信息:

最終生成的yaml結果:

volumes:
- name: soup-hello-pvc
  persistentVolumeClaim:
    claimName: test-data
containers:
- volumeMounts: 
  - name: "soup-hello-pvc"
    mountPath: "/soupzhang"

4、應用審覈部署

若是配置了郵箱,用戶提交審覈以後會給管理員發送郵件,郵件裏帶有審覈地址。

或者您也能夠在應用列表裏找到未審覈的應用進入。

4.1 審覈應用

提交的基礎信息

生成的kubernetes yaml

代碼庫中的Dockerfile文件

駁回

若是管理員以爲提交的有問題,能夠進行駁回,駁回填定理由會發送至提交者的郵箱。

若沒有啥問題,能夠點擊「開始部署」按鈕。

開始部署以後應用會自動在jenkins上建立一個job,並自動進行build。

5、調整容器時間

在咱們項目維護過程當中,可能會遇到須要修改服務器時間,平臺的工具集功能就能夠知足您的需求了~

在這須要注意,此功能依賴faketime,請在宿主機編譯faketime擴展。路徑在 /usr/local/lib/libfaketime.so.1

調整服務時間(菜單欄:工具集->調整時間)

在項目列表中篩選您要修改的項目,點擊 修改時間,確認以後會重啓服務生效。

開源地址:

做者:宜人金科-財富技術部-創新團隊

來源:宜信技術學院

相關文章
相關標籤/搜索