您好,歡迎來到網暖!
?
當前位置:網暖 » 站長資訊 » 建站基礎 » 網絡技術 » 文章詳細 訂閱RssFeed

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

來源:本站原創 瀏覽:1950次 時間:2019-11-10

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

一、Kplcloud是什么?

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

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

一、登陸

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

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

1.1 LDAP登陸

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

[ldap]ldap_host = 127.0.0.1ldap_port = 389ldap_base = DC=yourdomain,DC=corpldap_sseSSL = falseldap_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

授權登陸需要用戶把 https://github.com/settings/profile Public Email 設置上,否則無法授權成功

1.4 授權登陸

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

[server]client_id = balabalabalbabiubiubiuclient_secret = balabalabalbabiubiubiuauth_login = githubdefault_namespace = default-appdefault_role_id = 4C

二、Dashboard2.1 工作臺

工作臺是我們進入之后看到的第一個頁面,主要列出以下一些信息

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

2.2 全局監控

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

2.3 上線統計

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

三、應用管理3.1 創建應用創建一個Java應用

在創建應用之前,首先我們要做的是在你的git項目上將Dockerfile文件提交上去,并且生成一個Tag或releases版本。

Dockerfile 參考

FROM openjdk:latestCOPY xxxx.jar /opt/appWORKDIR /opt/appCMD ["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.3CMD ["/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的方式轉發給 proxyIstioProxy: 模版就是將pods的所有流量代理的yaml

流程

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

DNS 將域名解析到VIPVIP 將80的流量轉發邊緣節點的31380端口(這個是IstioIngressGateway控制器的Service的NodePort)前面我們所說過每個Namespace都會有至少一個對應的Gateway,Gateway的hosts就是xxx.{namespace}.xxx.comVirtualService里的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-datacontainers:- volumeMounts:   - name: "soup-hello-pvc"    mountPath: "/soupzhang"
四、應用審核部署

如果配置了郵箱,用戶提交審核之后會給管理員發送郵件,郵件里帶有審核地址。

或者您也可以在應用列表里找到未審核的應用進入。

4.1 審核應用

提交的基礎信息

生成的kubernetes yaml

代碼庫中的Dockerfile文件

駁回

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

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

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

五、調整容器時間

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

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

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

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

開源地址:Github: https://github.com/kplcloud/kplcloudDocument: https://docs.nsini.comDemo: https://kplcloud.nsini.com

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

來源:宜信技術學院

推薦站點

  • 騰訊騰訊

    騰訊網(www.QQ.com)是中國瀏覽量最大的中文門戶網站,是騰訊公司推出的集新聞信息、互動社區、娛樂產品和基礎服務為一體的大型綜合門戶網站。騰訊網服務于全球華人用戶,致力成為最具傳播力和互動性,權威、主流、時尚的互聯網媒體平臺。通過強大的實時新聞和全面深入的信息資訊服務,為中國數以億計的互聯網用戶提供富有創意的網上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐網是全球最大的中文門戶網站,為用戶提供24小時不間斷的最新資訊,及搜索、郵件等網絡服務。內容包括全球熱點事件、突發新聞、時事評論、熱播影視劇、體育賽事、行業動態、生活服務信息,以及論壇、博客、微博、我的搜狐等互動空間。

    www.sohu.com
  • 網易網易

    網易是中國領先的互聯網技術公司,為用戶提供免費郵箱、游戲、搜索引擎服務,開設新聞、娛樂、體育等30多個內容頻道,及博客、視頻、論壇等互動交流,網聚人的力量。

    www.163.com
  • 新浪新浪

    新浪網為全球用戶24小時提供全面及時的中文資訊,內容覆蓋國內外突發新聞事件、體壇賽事、娛樂時尚、產業資訊、實用信息等,設有新聞、體育、娛樂、財經、科技、房產、汽車等30多個內容頻道,同時開設博客、視頻、論壇等自由互動交流空間。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com
?
快乐甜品彩金 迷你仓出租赚钱吗 北京单场开奖官网 65彩票群 万人炸金花下载 甘肃11选5任三技巧稳赚 五星彩票游戏 网赌飞禽走兽输几十万 百宝彩重庆百变王牌走 澳洲幸运8福彩中心地址 重庆时时最新开奖app 江苏排列三走势图 湖北11选5走势图基本 网吧云计算赚钱 谁知道八戒中特网址 百万脑力时代能赚钱吗 极速十一选五走势图一定