k8s服務(wù)案例開發(fā)(sprintboot)

國際慣例炕檩,以helloworld工程為例斗蒋,從restful工程開發(fā),打包笛质,docker鏡像制作泉沾。Ingress+service+pod的方式發(fā)布服務(wù)的例子。

由于沒有遠(yuǎn)程鏡像服務(wù)器妇押,采用本地鏡像的方式加載服務(wù)跷究。

鏡像設(shè)置成本地策略:

? spec:

? ? ? containers:

? ? ? ? - name: **********

? ? ? ? ? image: **********

? ? ? ? ? imagePullPolicy: IfNotPresent

1.生成命名空間

在開發(fā)之前,我們先了解一下k8s的命名空間敲霍,命名空間可以幫助我們管理和隔離pod等組件俊马,增加權(quán)限租戶管理等操作。

以本文為例肩杈,創(chuàng)建一個(gè)名為dwayne的命名空間柴我,新建一個(gè)create-namespace.yaml文件,內(nèi)容如下

apiVersion: v1

kind: Namespace

metadata:

? name: dwayne

? labels:

? ? name: dwayne

執(zhí)行kubectl apply -f create-namespace.yaml

設(shè)置成默認(rèn)命名空間

kubectl config set-context $(kubectl config current-context) --namespace=dwayne

2.helloworld工程

工程很簡單锋恬,一個(gè)get接口/helloworld屯换,返回json


package com.example.demo;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class AController {

????@RequestMapping(value = "helloworld", method = RequestMethod.GET)

????public Response hello() {

????????Response res = new Response();

????????res.setMsg("helloworld");

????????return res;

????}

}


打包成jar包,demo-0.0.1-SNAPSHOT.jar

3.生成docker鏡像

在節(jié)點(diǎn)服務(wù)器(所有節(jié)點(diǎn))上新建目錄作為工作目錄与学,將jar包上傳到節(jié)點(diǎn)服務(wù)器嘉抓,并在同一目錄下編輯Dockerfile:

FROM java:8

VOLUME /tmp

ADD demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo-0.0.1-SNAPSHOT.jar"]


保存Dockerfile索守,退出,執(zhí)行docker build命令

docker build -t demo-hello-world-master .?

生成demo-hello-world-master抑片,先打個(gè)tag截汪,方便后續(xù)使用:

docker tag demo-hello-world-master dw/demo-hello-world-master


tag

4.部署service

這里部署兩個(gè)helloworld服務(wù)實(shí)例(replicas: 2)蚓峦。部署在dwayne命名空間,yaml文件內(nèi)容如下:

apiVersion: v1

kind: Service

metadata:

? name: helloworld-master

? namespace: dwayne

spec:

? type: NodePort

? selector:

? ? app: helloworld

? ? release: master

? ports:

? ? ? - port: 7071

? ? ? ? targetPort: 17001

? ? ? ? nodePort: 30002

---

apiVersion: apps/v1

kind: Deployment

metadata:

? name: helloworld-master

? namespace: dwayne

spec:

? replicas: 2

? selector:

? ? matchLabels:

? ? ? app: helloworld

? ? ? release: master

? template:

? ? metadata:

? ? ? labels:

? ? ? ? app: helloworld

? ? ? ? release: master

? ? spec:

? ? ? containers:

? ? ? ? - name: demo-hello-world-master

? ? ? ? ? image: dw/demo-hello-world-master

? ? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? ? ports:

? ? ? ? ? ? - name: http

? ? ? ? ? ? ? containerPort: 17001

應(yīng)用之后霍转,查看pod,有兩個(gè)實(shí)例:


pod狀態(tài)

5.Ingress部署

service只設(shè)置了containerPort,沒有暴露外網(wǎng)接口均驶,本文使用ingress進(jìn)行服務(wù)端口暴露和服務(wù)負(fù)載

5.1Ingress基礎(chǔ)組件安裝

Ingress有多種實(shí)現(xiàn)枫虏,本文采用ingress-nginx實(shí)現(xiàn),執(zhí)行deploy.yaml

deploy.yaml

鏈接: https://caiyun.139.com/m/i?105CpmCT95tE3

提取碼:Ja0K

ingress-nginx部署情況

5.2設(shè)置服務(wù)負(fù)載

ingress.yaml

鏈接: https://caiyun.139.com/m/i?105CqQ7HZpuvc 提取碼:nG9h


文件中,指定了服務(wù)的hostname赞警,host: www.helloworld.com愧旦,訪問時(shí)需要綁定ip使用hostname訪問旁瘫,默認(rèn)是80端口:


瀏覽器模擬GET請(qǐng)求
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市完箩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谤辜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡渔彰,警方通過查閱死者的電腦和手機(jī)恍涂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門汞斧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竞端,“玉大人事富,你說我怎么就攤上這事。” “怎么了仇穗?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵耘子,是天一觀的道長欧聘。 經(jīng)常有香客問我怀骤,道長弓摘,這世上最難降的妖魔是什么锤窑? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上车酣,老公的妹妹穿的比我還像新娘曲稼。我一直安慰自己,他們只是感情好湖员,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般晒奕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上也物,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音浙踢,去河邊找鬼棘幸。 笑死躏仇,一個(gè)胖子當(dāng)著我的面吹牛驻子,可吹牛的內(nèi)容都是我干的崇呵。 我是一名探鬼主播李皇,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恤左,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤巧鸭,失蹤者是張志新(化名)和其女友劉穎瓶您,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纲仍,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呀袱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了郑叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夜赵。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乡革,靈堂內(nèi)的尸體忽然破棺而出寇僧,到底是詐尸還是另有隱情摊腋,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布婉宰,位于F島的核電站歌豺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏心包。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一馒铃、第九天 我趴在偏房一處隱蔽的房頂上張望蟹腾。 院中可真熱鬧,春花似錦区宇、人聲如沸娃殖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炉爆。三九已至,卻和暖如春卧晓,著一層夾襖步出監(jiān)牢的瞬間芬首,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工逼裆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郁稍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓胜宇,卻偏偏與公主長得像耀怜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桐愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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