天天看點

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

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

一、Kplcloud是什麼?

kplcloud是一個基于Kubernetes的輕量級PaaS平台,通過可視化的界面對應用進行管理,降低應用容器化的對度,進而減少應用容器化的時間成本。

Kplcloud已在宜信服務于宜人财富等多個團隊,穩定運作了近兩年,目前平台已在生産環境跑着上百個應用,近千個容器。

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

一、登陸

登陸可以分為三種,分别是LDAP登陸、郵箱密碼登陸、三方授權登陸,咱們沒有注冊功能。下面對這三種登陸方式進行講解。

LDAP與郵箱登陸大同小異,隻需要簡單的配置即可。

1.1 LDAP登陸

在app.cfg檔案找到[server]的login_type參數,設定為 ldap并且找到[ldap]塊

[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

,應該把它注釋掉。

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           
啟動、配置、擴容、伸縮、存儲,開普勒雲平台之使用指南
啟動、配置、擴容、伸縮、存儲,開普勒雲平台之使用指南

二、Dashboard

2.1 工作台

工作台是我們進入之後看到的第一個頁面,主要列出以下一些資訊

  • 使用文檔
  • 建立應用入口
  • 空間CPU及記憶體資源使用情況
  • 你可操作的最新的幾個應用
  • 該空間下最近應用的動态
  • 您可操作的空間清單
  • 您規屬于哪些權限組清單
啟動、配置、擴容、伸縮、存儲,開普勒雲平台之使用指南

2.2 全局監控

監控隻是簡易的叢集網絡,記憶體、CPU及語言,詳情的監控可以從grafana檢視。

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

2.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.1 稽核應用

送出的基礎資訊

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

生成的kubernetes yaml

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

代碼庫中的Dockerfile檔案

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

駁回

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

如果管理者覺得送出的有問題,可以進行駁回,駁回填定理由會發送至送出者的郵箱。

若沒有啥問題,可以點選“開始部署”按鈕。

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

五、調整容器時間

在我們項目維護過程中,可能會遇到需要修改伺服器時間,平台的工具集功能就可以滿足您的需求了~

在這需要注意,此功能依賴faketime,請在主控端編譯faketime擴充。路徑在

/usr/local/lib/libfaketime.so.1

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

在項目清單中篩選您要修改的項目,點選 修改時間,确認之後會重新開機服務生效。

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

開源位址:

作者:宜人金科-财富技術部-創新團隊

來源:宜信技術學院