docker+k8s+springcloud微服務(wù)集群部署實(shí)例

本文是在CentOS7環(huán)境上焊唬,搭建微服務(wù)集群系統(tǒng)簡(jiǎn)單樣例豫缨。

架構(gòu)描述:

k8s集群:1臺(tái)master node,2臺(tái)slave node摔桦,均安裝maven炮车、docker、k8s環(huán)境酣溃;k8s集群系統(tǒng)用來(lái)保證單個(gè)服務(wù)指定數(shù)量的微服務(wù)實(shí)例副本Pod瘦穆。

微服務(wù)系統(tǒng):微服務(wù)注冊(cè)中心fudan-eureka部署1個(gè)副本Pod、微服務(wù)fudan-service部署2個(gè)副本Pod赊豌、微服務(wù)fudan-consumer1部署3個(gè)副本Pod扛或。其中微服務(wù)fudan-consumer1中的getUser接口方法會(huì)調(diào)用微服務(wù)fudan-service1中的sayHello接口方法。

系統(tǒng)架構(gòu)


1碘饼、編寫微服務(wù)注冊(cè)中心fudan-eureka并部署到K8S

1.1 創(chuàng)建微服務(wù)注冊(cè)中心工程

使用Eclipse+Maven+Springboot編寫注冊(cè)中心工程實(shí)現(xiàn):

使用Eclipse+Maven+Springboot編寫微服務(wù)fudan-service1工程實(shí)現(xiàn):main方法類上增加EnableEurekaServer注解熙兔,標(biāo)注加載微服務(wù)注冊(cè)中心。

工程截圖如下所示:

微服務(wù)注冊(cè)中心項(xiàng)目工程

注冊(cè)中心無(wú)業(yè)務(wù)代碼艾恼,僅有啟動(dòng)類App.java

注意:在啟動(dòng)類上加入注解@EnableEurekaServer住涉,標(biāo)注加載微服務(wù)注冊(cè)中心。

注冊(cè)中心

配置文件application.properties:

項(xiàng)目配置文件application.propeties

Dockerfile文件钠绍,用于mvn docker打包鏡像:

腳本Dockerfile

Maven pom.xml文件:

1.2 部署微服務(wù)注冊(cè)中心eureka到K8S集群

1. 將fudan-eureka項(xiàng)目完整上傳到CentOS機(jī)器上

2. 編譯打包鏡像舆声;

首先到fudan-eureka項(xiàng)目文件夾下,依次執(zhí)行命令:

命令:mvn package docker:build


編譯打包鏡像成功:

編譯打包鏡像成功

查看images鏡像:

3. 鏡像上傳到Docker Hub(或阿里云Hub)

命令:

docker push zhang0908/fudan-eureka:V1

備注:docker需要先登錄:docker login

docker hub上查看上傳的fudan-eureka鏡像:

4. K8S集群?jiǎn)?dòng)注冊(cè)中心

創(chuàng)建集群部署文件vi fudan-eureka.yaml

備注:此處此處為簡(jiǎn)單起見(jiàn)柳爽,pod副本數(shù)量設(shè)為1媳握。但在商用中,為保證注冊(cè)中心的高可靠性磷脯,一般部署多個(gè)eureka注冊(cè)中心蛾找,并相互注冊(cè)。

對(duì)外訪問(wèn)類型為NodePort赵誓,端口為31071.

集群端口為9999

fudan-eureka.yaml

啟動(dòng)注冊(cè)中心:

命令:kubectl apply -f fudan-eureka.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

注意:K8S集群內(nèi)部是使用clusterIp+port進(jìn)行通訊打毛,如上圖所示柿赊,使用kubectl get svc命令查詢到fudan-eureka-service服務(wù)的cluster-ip:10.96.99.188,端口port:9999幻枉,在微服務(wù)fudan-service1和fudan-consumer1工程的application.properties需要配置此IP和Port闹瞧,用于微服務(wù)向注冊(cè)中心注冊(cè)通訊。

5. 測(cè)試和驗(yàn)證

如fudan-eureka.yaml部署文件所示展辞,該服務(wù)注冊(cè)中心對(duì)外訪問(wèn)方式為NortPort,端口為31071万牺。

此處可以使用nginx ingress多反向代理罗珍,通過(guò)域名訪問(wèn)注冊(cè)中心,此處不做詳述脚粟。

服務(wù)注冊(cè)中心

No instances覆旱,暫無(wú)微服務(wù)注冊(cè)實(shí)例。

2核无、編寫微服務(wù)fudan-service1并部署到K8S

2.1 創(chuàng)建微服務(wù)fudan-service1工程

使用Eclipse+Maven+Springboot編寫微服務(wù)fudan-service1工程實(shí)現(xiàn):main方法類上增加EnableDiscoveryClient注解扣唱,啟動(dòng)后根據(jù)application.properties中配置的eureka注冊(cè)中心地址進(jìn)行服務(wù)注冊(cè)。

在Configuration中創(chuàng)建RestTemplate的Bean团南,并增加@LoadBalanced注解噪沙,標(biāo)注啟用Ribbon負(fù)載均衡。

增加sayHello接口方法:

配置文件application.properties:

Dockerfile文件:


pom.xml文件:


2.2 部署微服務(wù)fudan-service1到K8S集群


1. 將fudan-service1項(xiàng)目完整上傳到CentOS機(jī)器上

2. 編譯打包鏡像吐根;

首先到fudan-service1項(xiàng)目文件夾下正歼,依次執(zhí)行命令:

mvn package docker:build

查看images鏡像:

3. 鏡像上傳到Docker Hub(或阿里云Hub)

命令:docker push zhang0908/fudan-service1:V1

備注:docker需要先登錄:docker login

docker hub中查看上傳的fudan-service1鏡像:

4. K8S集群?jiǎn)?dòng)微服務(wù)fudan-service1

創(chuàng)建集群部署文件,命令:

vi fudan-service.yaml

pod副本數(shù)量為2(K8S集群會(huì)實(shí)時(shí)監(jiān)控并確保有2個(gè)實(shí)例副本可用)拷橘,NodePort端口為31072局义,若該端口不指定,k8s會(huì)自動(dòng)分配冗疮。

啟動(dòng)注微服務(wù)fudan-service1:

命令:kubectl apply -f fudan-service1.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

5. 測(cè)試和驗(yàn)證

查看eureka微服務(wù)注冊(cè)中心萄唇,確認(rèn)2個(gè)fudan-service微服務(wù)實(shí)例已注冊(cè)到eureka中:

如fudan-service1.yaml部署文件所示,該微服務(wù)對(duì)外訪問(wèn)方式為NodePort术幔,端口為31072另萤,測(cè)試驗(yàn)證sayHello接口方法:

3、編寫微服務(wù)fudan-consumer1并部署到K8S

3.1 創(chuàng)建微服務(wù)fudan-consumer1工程

使用Eclipse+Maven+Springboot編寫微服務(wù)fudan-consumer1工程實(shí)現(xiàn):

main方法類上增加EnableDiscoveryClient注解诅挑,啟動(dòng)后根據(jù)application.properties中配置的eureka注冊(cè)中心地址進(jìn)行服務(wù)注冊(cè)仲墨。

在Configuration中創(chuàng)建RestTemplate的Bean,并增加@LoadBalanced注解揍障,標(biāo)注啟用Ribbon負(fù)載均衡器目养。

增加getUser和test接口方法:

配置文件application.properties:

配置文件Dockerfile:

pom.xml文件:

3.2 部署微服務(wù)fudan-consumer1到K8S集群

1. 將fudan-consumer1項(xiàng)目完整上傳到CentOS機(jī)器上

2. 編譯打包鏡像;

首先到fudan-consumer1項(xiàng)目文件夾下毒嫡,執(zhí)行命令:

命令:

mvn package docker:build

查看images鏡像:

docker images

3. 鏡像上傳到Docker Hub(或阿里云Hub)

命令:docker push zhang0908/fudan-consumer1:v1

備注:docker需要先登錄:docker login


4. K8S集群?jiǎn)?dòng)注冊(cè)中心

創(chuàng)建集群部署文件

命令:vi fudan-consumer1.yaml

pod副本數(shù)量為3(K8S集群會(huì)實(shí)時(shí)監(jiān)控并確保有3個(gè)實(shí)例副本可用)癌蚁,NodePort端口為31073幻梯,若該端口不指定,k8s會(huì)自動(dòng)分配努释。

啟動(dòng)微服務(wù)fudan-consumer1:

命令:kubectl apply -f fudan-consumer1.yaml

查看pod副本和service

命令:

kubectl get pods -o wide

kubectl get svc -o wide

5. 測(cè)試和驗(yàn)證

查看eureka微服務(wù)注冊(cè)中心碘梢,確認(rèn)3個(gè)fudan-consumer1微服務(wù)實(shí)例已注冊(cè)到eureka中:

如fudan-consumer1.yaml部署文件所示,該微服務(wù)對(duì)外訪問(wèn)方式為NodePort伐蒂,端口為31073煞躬,測(cè)試驗(yàn)證getUser接口方法:

getUser接口方法會(huì)調(diào)用微服務(wù)fudan-service1中的sayHello方法。


至此逸邦,在k8s集群中部署微服務(wù)系統(tǒng)樣例完畢恩沛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缕减,隨后出現(xiàn)的幾起案子雷客,更是在濱河造成了極大的恐慌,老刑警劉巖桥狡,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搅裙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裹芝,警方通過(guò)查閱死者的電腦和手機(jī)部逮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嫂易,“玉大人甥啄,你說(shuō)我怎么就攤上這事【娲睿” “怎么了蜈漓?”我有些...
    開(kāi)封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宫盔。 經(jīng)常有香客問(wèn)我融虽,道長(zhǎng),這世上最難降的妖魔是什么灼芭? 我笑而不...
    開(kāi)封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任有额,我火速辦了婚禮,結(jié)果婚禮上彼绷,老公的妹妹穿的比我還像新娘巍佑。我一直安慰自己,他們只是感情好寄悯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布萤衰。 她就那樣靜靜地躺著,像睡著了一般猜旬。 火紅的嫁衣襯著肌膚如雪脆栋。 梳的紋絲不亂的頭發(fā)上倦卖,一...
    開(kāi)封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音椿争,去河邊找鬼怕膛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秦踪,可吹牛的內(nèi)容都是我干的褐捻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼椅邓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柠逞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起希坚,我...
    開(kāi)封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陵且,沒(méi)想到半個(gè)月后裁僧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慕购,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年聊疲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沪悲。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡获洲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殿如,到底是詐尸還是另有隱情贡珊,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布涉馁,位于F島的核電站门岔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏烤送。R本人自食惡果不足惜寒随,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帮坚。 院中可真熱鬧妻往,春花似錦、人聲如沸试和。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阅悍。三九已至判帮,卻和暖如春局嘁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晦墙。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工悦昵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晌畅。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓但指,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抗楔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棋凳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容