在容器服務(wù)K8s集群中使用JAR包或WAR包部署應(yīng)用
EDAS在云原生K8s之上,全面集成了容器服務(wù)Kubernetes版(Alibaba Cloud Container Service for Kubernetes,簡(jiǎn)稱容器服務(wù)ACK),支持K8s容器化應(yīng)用的全生命周期管理。容器服務(wù)K8s集群集成了阿里云虛擬機(jī)、存儲(chǔ)、網(wǎng)絡(luò)和安全等能力,擁有云端極佳的K8s容器化應(yīng)用運(yùn)行環(huán)境。本教程介紹如何在容器服務(wù)K8s集群中使用官方demo的JAR包或WAR包來(lái)部署應(yīng)用。
背景信息
在容器服務(wù)K8s集群中部署應(yīng)用,您需在容器服務(wù)Kubernetes版控制臺(tái)中創(chuàng)建容器服務(wù)Kubernetes版集群,并將該集群導(dǎo)入到EDAS控制臺(tái),然后在導(dǎo)入的容器服務(wù)K8s集群中使用部署包或鏡像來(lái)部署應(yīng)用。
前提條件
您的阿里云賬號(hào)已同時(shí)開通EDAS和容器服務(wù)Kubernetes版。具體操作,請(qǐng)參見開通EDAS和首次使用容器服務(wù)Kubernetes版。
已創(chuàng)建微服務(wù)空間。具體操作,請(qǐng)參見創(chuàng)建微服務(wù)空間。
已在容器服務(wù)Kubernetes版完成角色授權(quán)。具體操作,請(qǐng)參見容器服務(wù)ACK服務(wù)角色。
步驟一:創(chuàng)建容器服務(wù)Kubernetes集群
登錄容器服務(wù)Kubernetes版控制臺(tái),創(chuàng)建容器服務(wù)Kubernetes集群。具體操作,請(qǐng)參見快速創(chuàng)建Kubernetes托管版集群。
如果創(chuàng)建Serverless Kubernetes集群,專有網(wǎng)絡(luò)請(qǐng)選擇自動(dòng)創(chuàng)建(選擇已有網(wǎng)絡(luò),創(chuàng)建完畢后請(qǐng)查看集群資源是否包含VPC和交換機(jī)資源),服務(wù)發(fā)現(xiàn)請(qǐng)選擇PrivateZone,以便Serverless Kubernetes集群在導(dǎo)入EDAS后可以使用服務(wù)網(wǎng)格。具體操作,請(qǐng)參見創(chuàng)建ASK集群。
步驟二:在EDAS控制臺(tái)中導(dǎo)入容器服務(wù)K8s集群
在EDAS控制臺(tái)導(dǎo)入容器服務(wù)K8s集群時(shí),會(huì)默認(rèn)安裝應(yīng)用防護(hù)(限流降級(jí))組件(ack-ahas-sentinel-pilot)、ARMS監(jiān)控組件(ack-arms-pilot)以及Prometheus監(jiān)控組件(ack-arms-prometheus)。
登錄EDAS控制臺(tái),在左側(cè)導(dǎo)航欄,選擇 。
在頂部菜單欄選擇地域,然后單擊同步容器服務(wù)Kubernetes集群。
在導(dǎo)入的容器服務(wù)K8s集群的操作列,單擊導(dǎo)入。
在導(dǎo)入預(yù)檢對(duì)話框,單擊繼續(xù)導(dǎo)入。
在導(dǎo)入Kubernetes集群對(duì)話框,從下拉列表中選擇目標(biāo)微服務(wù)空間,根據(jù)需要選擇是否開啟服務(wù)網(wǎng)格,然后單擊導(dǎo)入。
當(dāng)容器服務(wù)K8s集群狀態(tài)顯示為運(yùn)行中,并且導(dǎo)入狀態(tài)顯示為導(dǎo)入成功時(shí),表示容器服務(wù)K8s集群已成功導(dǎo)入到EDAS。
步驟三:在容器服務(wù)K8s集群中部署應(yīng)用
WAR和JAR的部署步驟一致,本文以通過(guò)JAR為例介紹如何部署應(yīng)用。
登錄EDAS控制臺(tái),在左側(cè)導(dǎo)航欄單擊 ,在頂部菜單欄選擇地域并在頁(yè)面上方選擇微服務(wù)空間,然后在應(yīng)用列表頁(yè)面左上角單擊創(chuàng)建應(yīng)用。
在應(yīng)用基本信息頁(yè)面中設(shè)置應(yīng)用的集群類型和應(yīng)用運(yùn)行環(huán)境,然后單擊下一步。
配置項(xiàng)
描述
集群類型
選擇Kubernetes集群。
應(yīng)用來(lái)源類型
選擇默認(rèn)。
應(yīng)用運(yùn)行環(huán)境
托管應(yīng)用類型
本文介紹如何部署Java應(yīng)用,所以選擇Java。如果需要部署PHP或多語(yǔ)言應(yīng)用,請(qǐng)參見從源碼構(gòu)建PHP應(yīng)用并部署至容器服務(wù)K8s集群。
選擇應(yīng)用
本文介紹如何通過(guò)JAR包或WAR包部署Java應(yīng)用,所以請(qǐng)根據(jù)應(yīng)用類型和部署包選擇Java、Tomcat或EDAS-Container(HSF)。如果需要通過(guò)鏡像部署應(yīng)用,請(qǐng)參見在K8s集群中使用鏡像部署Java微服務(wù)應(yīng)用。
Java:支持通用的JAR包部署,適用于Dubbo和Spring Boot應(yīng)用。選擇后,可設(shè)置Java環(huán)境。
Tomcat:支持通用的WAR包部署,適用于Dubbo和Spring應(yīng)用。選擇后,可設(shè)置Java環(huán)境和容器版本。
EDAS-Container(HSF):適用于使用WAR或者FatJar部署HSF應(yīng)用。選擇后,可設(shè)置Java環(huán)境、Pandora版本和Ali-Tomcat版本。
說(shuō)明OpenJDK 17支持2.7.14和3.0.6及以上版本的Dubbo。兼容性測(cè)試結(jié)果,請(qǐng)參見OpenJDK 17兼容測(cè)試數(shù)據(jù)。
表 1. OpenJDK 17兼容測(cè)試數(shù)據(jù) Dubbo版本
Spring Boot版本
Nacos-Client版本
接口調(diào)用
ARMS監(jiān)控
服務(wù)列表
2.7.14
2.7.9
1.4.4
OK
OK
OK
2.7.14
2.7.9
2.1.2
OK
OK
OK
2.7.14
2.7.9
2.2.0
OK
OK
OK
2.7.22
2.7.9
1.4.4
OK
OK
OK
2.7.22
2.7.9
2.1.2
OK
OK
OK
2.7.22
2.7.9
2.2.0
OK
OK
OK
3.0.6
2.7.9
1.4.4
OK
OK
OK
3.0.6
2.7.9
2.1.2
OK
OK
OK
3.0.6
2.7.9
2.2.0
OK
OK
OK
3.1.7
2.7.9
1.4.4
OK
OK
OK
3.1.7
2.7.9
2.1.2
OK
OK
OK
3.1.7
2.7.9
2.2.0
OK
OK
OK
在應(yīng)用配置頁(yè)簽中設(shè)置應(yīng)用的環(huán)境信息、基本信息、部署方式和資源參數(shù),設(shè)置完成后單擊下一步。
配置項(xiàng)
描述
微服務(wù)空間
應(yīng)用所屬空間。選擇您創(chuàng)建的微服務(wù)空間,如果您未創(chuàng)建微服務(wù)空間或不做選擇,微服務(wù)空間則設(shè)置為默認(rèn)。
如果您沒(méi)有創(chuàng)建微服務(wù)空間,或者需要?jiǎng)?chuàng)建新的微服務(wù)空間,您可以直接單擊創(chuàng)建微服務(wù)空間,創(chuàng)建一個(gè)全新的微服務(wù)空間。具體操作,請(qǐng)參見使用控制臺(tái)管理微服務(wù)空間。
集群
在右側(cè)下拉列表內(nèi)選擇已導(dǎo)入的容器服務(wù)K8s集群。
如果您選擇的K8s集群未導(dǎo)入到EDAS,請(qǐng)選中該集群在EDAS初次使用,勾選后,將會(huì)在應(yīng)用創(chuàng)建時(shí)將該集群導(dǎo)入EDAS,因此會(huì)產(chǎn)生一定耗時(shí)。并確認(rèn)是否開啟服務(wù)網(wǎng)格。
說(shuō)明集群導(dǎo)入的微服務(wù)空間可以不是應(yīng)用所屬微服務(wù)空間。
K8s Namespace
K8s Namespace通過(guò)將系統(tǒng)內(nèi)部的對(duì)象分配到不同的Namespace中,形成邏輯上分組的不同項(xiàng)目、小組或用戶組,便于不同的分組在共享使用整個(gè)集群的資源的同時(shí)還能被分別管理。
default:沒(méi)有其他命名空間的對(duì)象的默認(rèn)命名空間。
kube-system:系統(tǒng)創(chuàng)建的對(duì)象的命名空間。
kube-public:此命名空間是自動(dòng)創(chuàng)建的,并且可供所有用戶(包括未經(jīng)過(guò)身份驗(yàn)證的用戶)讀取。
此處以選擇default為例。
如果您需要自定義創(chuàng)建K8s Namespace,請(qǐng)單擊創(chuàng)建K8s Namespace并設(shè)置K8s Namespace名稱。名稱設(shè)置要求只能包含數(shù)字、小寫字母和短劃線(-),且首尾只能是字母或數(shù)字,長(zhǎng)度為1~63個(gè)字符。
應(yīng)用名稱
輸入應(yīng)用名稱,必須以字母開頭,允許數(shù)字、字母、短劃線(-)組合。最多可輸入36個(gè)字符。
應(yīng)用描述
輸入應(yīng)用描述 ,最大長(zhǎng)度為128個(gè)字符。
部署包來(lái)源
自定義程序
需選擇文件上傳方式:
上傳JAR包:選擇下載好的JAR包并上傳。
JAR包地址:輸入Demo包地址。
官方Demo
EDAS提供的Demo類型有Spring Cloud服務(wù)端應(yīng)用、Spring Cloud客戶端應(yīng)用、Dubbo服務(wù)端應(yīng)用和Dubbo客戶端應(yīng)用,請(qǐng)依據(jù)實(shí)際需求選擇。
構(gòu)建倉(cāng)庫(kù)類型
說(shuō)明構(gòu)建倉(cāng)庫(kù)類型功能僅支持容器服務(wù)K8s集群下的Java、 Tomcat、EDAS-container(HSF)三種應(yīng)用類型。暫不支持ASK集群。
需要安裝鏡像免密拉取組件,具體操作,請(qǐng)參見使用免密組件拉取容器鏡像。
使用您自己的阿里云鏡像倉(cāng)庫(kù)企業(yè)版時(shí),需要自行配置專有網(wǎng)絡(luò)訪問(wèn)控制。具體操作,請(qǐng)參見配置專有網(wǎng)絡(luò)的訪問(wèn)控制。
應(yīng)用鏡像構(gòu)建過(guò)程是在您的集群內(nèi)進(jìn)行,并且會(huì)使用您的資源進(jìn)行構(gòu)建過(guò)程。單個(gè)構(gòu)建任務(wù)的默認(rèn)資源限制是1核1 GB。如何調(diào)整鏡像構(gòu)建資源限制,具體操作,請(qǐng)參見如何調(diào)整鏡像構(gòu)建資源限制?
使用ACR個(gè)人版或ACR企業(yè)版儲(chǔ)存構(gòu)建后的鏡像時(shí),構(gòu)建任務(wù)會(huì)運(yùn)行在集群中。構(gòu)建任務(wù)擁有以下調(diào)度親和性以及調(diào)度容忍策略。
拒絕調(diào)度到有
edas.image.build=disable
標(biāo)簽的節(jié)點(diǎn)。偏向調(diào)度到有
edas.image.build=enable
標(biāo)簽的節(jié)點(diǎn),但如果節(jié)點(diǎn)沒(méi)有edas.image.build
標(biāo)簽,構(gòu)建任務(wù)也可能被調(diào)度到。容忍污點(diǎn):
key=edas.image.build, effect=NoSchedule
。
說(shuō)明對(duì)于不想要被構(gòu)建任務(wù)調(diào)度到的節(jié)點(diǎn),可以添加
edas.image.build=disable
標(biāo)簽。對(duì)于構(gòu)建任務(wù)專用節(jié)點(diǎn),可以添加
edas.image.build=enable
,以及污點(diǎn)key=edas.image.build, effect=NoSchedule
標(biāo)簽,防止其他Pod被調(diào)度到該節(jié)點(diǎn)。
ACR所屬地域
選擇您的容器鏡像所在的地域。該參數(shù)僅在構(gòu)建倉(cāng)庫(kù)類型選擇ACR企業(yè)版時(shí)需要配置。
容器鏡像服務(wù)
選擇您的容器鏡像服務(wù)。該參數(shù)僅在構(gòu)建倉(cāng)庫(kù)類型選擇ACR企業(yè)版時(shí)需要配置。
鏡像倉(cāng)庫(kù)命名空間
在下拉列表中選擇您的鏡像倉(cāng)庫(kù)所在的微服務(wù)空間,也可以單擊單側(cè)的+創(chuàng)建命名空間創(chuàng)建新的微服務(wù)空間。
版本
請(qǐng)輸入版本,您可以自定義版本號(hào),也可以單擊右側(cè)的用時(shí)間戳作為版本號(hào)自動(dòng)生成版本號(hào)。
時(shí)區(qū)
設(shè)置應(yīng)用的時(shí)區(qū)信息。
OpenJDK基礎(chǔ)鏡像
說(shuō)明在應(yīng)用基本信息頁(yè)面Java環(huán)境處,選擇自定義OpenJDK時(shí),參數(shù)OpenJDK基礎(chǔ)鏡像才會(huì)出現(xiàn)。
配置鏡像
阿里云鏡像服務(wù)選擇當(dāng)前賬號(hào)。
選擇鏡像所屬地域、容器鏡像服務(wù)、鏡像倉(cāng)庫(kù)命名空間、鏡像倉(cāng)庫(kù)名和鏡像版本。
阿里云鏡像服務(wù)選擇為其他阿里云賬號(hào)。 如您的鏡像存放在公開倉(cāng)庫(kù)中,那么您配置完整鏡像地址即可。
重要當(dāng)前僅支持JDK7和JDK8,使用其他版本的JDK可能導(dǎo)致應(yīng)用監(jiān)控功能使用異常。EDAS服務(wù)端會(huì)拉取該鏡像構(gòu)建應(yīng)用鏡像,您需確保該鏡像的拉取權(quán)限為公開。
Pod總數(shù)
設(shè)置該應(yīng)用要部署的Pod個(gè)數(shù)。沒(méi)有數(shù)量限制,上限取決于集群性能。
單Pod資源配額
設(shè)置單個(gè)Pod的CPU、內(nèi)存和臨時(shí)存儲(chǔ),如果您需要限額,請(qǐng)?zhí)顚懢唧w的數(shù)字,使用默認(rèn)值0則代表不限額。沒(méi)有配額限制,上限取決于集群性能。
(可選)配置應(yīng)用高級(jí)設(shè)置。
完成設(shè)置后單擊創(chuàng)建應(yīng)用,然后在應(yīng)用創(chuàng)建完成頁(yè)簽,單擊確定創(chuàng)建應(yīng)用。
在應(yīng)用變更預(yù)檢確認(rèn)對(duì)話框,單擊開始預(yù)檢。
在應(yīng)用變更預(yù)檢確認(rèn)的下一頁(yè),確認(rèn)預(yù)檢項(xiàng)和預(yù)檢結(jié)果,單擊繼續(xù)。
可選:如您有更改以上預(yù)檢項(xiàng),請(qǐng)單擊重新檢測(cè)。
應(yīng)用創(chuàng)建可能需要幾分鐘,創(chuàng)建過(guò)程中,可以通過(guò)查看變更記錄跟蹤應(yīng)用的創(chuàng)建流程。創(chuàng)建完成后,返回應(yīng)用總覽頁(yè)面,查看實(shí)例Pod的運(yùn)行狀態(tài)。若運(yùn)行狀態(tài)為運(yùn)行中,說(shuō)明應(yīng)用發(fā)布成功。單擊Pod的運(yùn)行狀態(tài)可以查看應(yīng)用實(shí)例的工作負(fù)載(Deployment)、容器組(Pod)和高級(jí)配置信息。
后續(xù)步驟
應(yīng)用創(chuàng)建完畢后,可以通過(guò)添加公網(wǎng)SLB實(shí)現(xiàn)公網(wǎng)訪問(wèn),添加私網(wǎng)SLB實(shí)現(xiàn)同VPC內(nèi)所有節(jié)點(diǎn)能夠通過(guò)私網(wǎng)負(fù)載均衡訪問(wèn)您的應(yīng)用。相關(guān)操作,請(qǐng)參見添加負(fù)載均衡CLB或復(fù)用負(fù)載均衡CLB。
聯(lián)系我們
如果您在EDAS中使用容器服務(wù)K8s集群和Serverless K8s集群過(guò)程中有任何疑問(wèn)或建議,請(qǐng)使用釘釘搜索釘釘群號(hào)23197114加入釘釘群進(jìn)行反饋。