Kubernetes windows開(kāi)發(fā)環(huán)境發(fā)布應(yīng)用程序研究

為了方便闯狱,在開(kāi)發(fā)環(huán)境windows使用minikube來(lái)掌握Kubernetes的使用几缭。

本文講述內(nèi)容涉及:

需要工具

Docker(本文使用DockerToolbox-18.09.3)

VirtualBox

kubectl.exe

minikube-windows

(1)Minikube的安裝

(2)把SpringBoot應(yīng)用程序打包Docker鏡像

(3)在K8s中使用打包后的鏡像運(yùn)行container,發(fā)布service和pod

(4)在一個(gè)K8s的Node運(yùn)行多個(gè)pod形成LoadBalance集群

如果參照此文來(lái)嘗試和研究蝶溶,請(qǐng)看完全文再動(dòng)手。


1.安裝Minikube,Install Minikube

查看systeminfo

開(kāi)啟虛擬機(jī)

Hyper-V?(windows自帶,啟用后重啟系統(tǒng))

VirtualBox

下載kubectl.exe,并設(shè)置PATH惧眠,如C:\k8s

下載minikube-windows,修改名稱為minikube.exe于个,設(shè)置PATH氛魁,如C:\k8s

注意:實(shí)際情況,禁用Hyper-V厅篓,安裝VirtualBox使用秀存。

2. 啟動(dòng) minikube start

使用minikube status命令查看到如下信息,說(shuō)明正常羽氮。

c:\workspaces\appdemo>minikube status

host: Running

kubelet: Running

apiserver: Running

kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100


3. 注意:使用minikube自帶的Docker Host或链,安裝Docker的時(shí)候就不用安裝再次安裝虛擬機(jī)和VM了。

C:\Users\yangliu>minikube docker-env

SET DOCKER_TLS_VERIFY=1

SET DOCKER_HOST=tcp://192.168.99.100:2376

SET DOCKER_CERT_PATH=C:\Users\yangliu\.minikube\certs

REM Run this command to configure your shell:

REM @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i

在windows命令行直接執(zhí)行@FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i档押,使得在當(dāng)前的cmd命令行操作環(huán)境具備前面三個(gè)docker的變量值澳盐。接下來(lái)使用docker命令就直接連接minkube里面的Docker Host。

執(zhí)行命令查看環(huán)境變量是否生效

c:\workspaces\appdemo>echo %DOCKER_CERT_PATH%

C:\Users\yangliu\.minikube\certs

使用kubectl查看Node令宿,Pod的情況叼耙。

C:\Users\yangliu>kubectl get nodes

NAME???????STATUS???ROLES????AGE???VERSION

minikube???Ready????master???62m???v1.15.2

C:\Users\yangliu>kubectl get pods

No resources found.

4.進(jìn)入minikube內(nèi)嵌的docker命令行模式(可忽略)

寫(xiě)在這里是對(duì)比內(nèi)外部docker命令。

minikube ssh or?

>minikube ssh

$docker ps

$docker image ls

5.單獨(dú)安裝docker后打包image

前面外部Docker已經(jīng)設(shè)置好變量了粒没。

在基于SpringCloud或者SpringBoot里面寫(xiě)一個(gè)簡(jiǎn)單的Dockfile筛婉,內(nèi)容大致如下:

FROM openjdk:8

VOLUME /tmp

COPY build/libs/*.jar app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

執(zhí)行命令打包鏡像: docker build -t sayhello:v1.0 .

成功后,通過(guò)docker images查看:

c:\workspaces\appdemo>docker images

REPOSITORY? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? SIZE

appdemo? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v1.0? ? ? ? ? ? ? ? e599764f88b1? ? ? ? 2 hours ago? ? ? ? 504MB

sayhello? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v1.0? ? ? ? ? ? ? ? 575780b2efc8? ? ? ? 7 hours ago? ? ? ? 520MB

openjdk? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8? ? ? ? ? ? ? ? ? 08ded5f856cc? ? ? ? 7 days ago? ? ? ? ? 488MB

k8s.gcr.io/kube-controller-manager? ? ? ? v1.15.2? ? ? ? ? ? 9f5df470155d? ? ? ? 2 weeks ago? ? ? ? 159MB

k8s.gcr.io/kube-scheduler? ? ? ? ? ? ? ? v1.15.2? ? ? ? ? ? 88fa9cb27bd2? ? ? ? 2 weeks ago? ? ? ? 81.1MB

k8s.gcr.io/kube-apiserver? ? ? ? ? ? ? ? v1.15.2? ? ? ? ? ? 34a53be6c9a7? ? ? ? 2 weeks ago? ? ? ? 207MB

k8s.gcr.io/kube-proxy? ? ? ? ? ? ? ? ? ? v1.15.2? ? ? ? ? ? 167bbf6c9338? ? ? ? 2 weeks ago? ? ? ? 82.4MB

k8s.gcr.io/kube-addon-manager? ? ? ? ? ? v9.0? ? ? ? ? ? ? ? 119701e77cbc? ? ? ? 7 months ago? ? ? ? 83.1MB

k8s.gcr.io/coredns? ? ? ? ? ? ? ? ? ? ? ? 1.3.1? ? ? ? ? ? ? eb516548c180? ? ? ? 7 months ago? ? ? ? 40.3MB

k8s.gcr.io/kubernetes-dashboard-amd64? ? v1.10.1? ? ? ? ? ? f9aed6605b81? ? ? ? 8 months ago? ? ? ? 122MB

k8s.gcr.io/etcd? ? ? ? ? ? ? ? ? ? ? ? ? 3.3.10? ? ? ? ? ? ? 2c4adeb21b4f? ? ? ? 8 months ago? ? ? ? 258MB

k8s.gcr.io/k8s-dns-sidecar-amd64? ? ? ? ? 1.14.13? ? ? ? ? ? 4b2e93f0133d? ? ? ? 11 months ago? ? ? 42.9MB

以上信息說(shuō)明打包并發(fā)布到本地Minikube里面的Docker Host成功革娄。

6.使用前面創(chuàng)建的鏡像倾贰,創(chuàng)建和運(yùn)行Container;并創(chuàng)建Deployment部署來(lái)管理這個(gè)Container

c:\workspaces\spring-cloud-demo\say-hello>kubectl run sayhelloapp --image=sayhello:v1.0??--port=8090

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/sayhelloapp created

7.真正發(fā)布或者說(shuō)暴露部署資源resource?

把一個(gè)資源作為一個(gè)新的Kubernetes服務(wù)暴露出去(外部可以通過(guò)url地址或者接口訪問(wèn)此服務(wù)了)拦惋。

可能的資源包含:

容器組pod (po), 服務(wù)service (svc), replicationcontroller (rc), 部署deployment (deploy), 副本集replicaset (rs)

執(zhí)行命令:kubectl expose deployment sayhelloapp --type="LoadBalancer"

service/sayhelloapp? exposed

kubectl get services 查看已經(jīng)發(fā)布的service

c:\workspaces\spring-cloud-demo\say-hello>kubectl get services

NAME??????????TYPE???????????CLUSTER-IP???????EXTERNAL-IP???PORT(S)??????????AGE

kubernetes????ClusterIP??????10.96.0.1????????<none>????????443/TCP??????????25h

sayhelloapp???LoadBalancer???10.106.198.166???<pending>?????8090:31580/TCP???36s

查看sayhelloapp運(yùn)行的地址

minikube service sayhelloapp --url

8.運(yùn)行多個(gè)容器組Pod匆浙,形成副本數(shù)3個(gè)的集群

kubectl scale deployment sayhelloapp --replicas=3

在minikube dashboard中查看


9 集群是否生效

本文發(fā)布的是web服務(wù),通過(guò)在瀏覽器訪問(wèn)url厕妖,就能直觀知道服務(wù)是否工作正常首尼。

到此,已經(jīng)完成本文開(kāi)頭(1)-(4)所描述的內(nèi)容言秸。

10. 刪除副本集

docker stop 0631598db76b

kubectl delete rs sayhelloapp-54864b84c9

以上普通的刪除方式软能,k8s會(huì)自動(dòng)重新生成repicaSet,pod and container

kubectl delete?deployment.apps/sayhelloapp?service/sayhelloapp

同時(shí)刪除部署和服務(wù)举畸,能夠把集群徹底刪除查排。

執(zhí)行刪除命令后可以在minikube dashboard中查看或者通過(guò)執(zhí)行命令kubuctl get all查看。

11.再次打包另一個(gè)應(yīng)用程序鏡像驗(yàn)證發(fā)布流程

使用應(yīng)用程序appdemo抄沮,重新docker build一個(gè)鏡像

Dockfile內(nèi)容:

FROM openjdk:8

VOLUME /tmp

COPY target/*.jar appdemo.jar

ENTRYPOINT ["java","-jar","/appdemo.jar"]

docker build -t appdemo:v1.0 .

kubectl run appdemoapp --image=appdemo:v1.0

kubectl expose deployment appdemoapp --type="LoadBalancer" --port=8090?--target-port=8080

c:\workspaces\appdemo>minikube service appdemoapp --url

* http://192.168.99.100:32391

kubectl scale deployment?appdemoapp--replicas=3


一切運(yùn)行正常跋核。

總結(jié):

1.Kubernetes使得管理應(yīng)用程序容器岖瑰,發(fā)布,規(guī)纳按化發(fā)布管理更加專業(yè)蹋订,更加自動(dòng)化,熟悉以后效率更高刻伊。

2.minikube在開(kāi)發(fā)環(huán)境使用起來(lái)很方便露戒,確實(shí)很強(qiáng)大有效。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捶箱,一起剝皮案震驚了整個(gè)濱河市智什,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讼呢,老刑警劉巖撩鹿,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異悦屏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)键思,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)础爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吼鳞,你說(shuō)我怎么就攤上這事看蚜。” “怎么了赔桌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵供炎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疾党,道長(zhǎng)音诫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任雪位,我火速辦了婚禮竭钝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雹洗。我一直安慰自己香罐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布时肿。 她就那樣靜靜地躺著庇茫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪螃成。 梳的紋絲不亂的頭發(fā)上旦签,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天查坪,我揣著相機(jī)與錄音,去河邊找鬼顷霹。 笑死咪惠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淋淀。 我是一名探鬼主播遥昧,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼朵纷!你這毒婦竟也來(lái)了炭臭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤袍辞,失蹤者是張志新(化名)和其女友劉穎鞋仍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體搅吁,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡威创,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谎懦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肚豺。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖界拦,靈堂內(nèi)的尸體忽然破棺而出吸申,到底是詐尸還是另有隱情,我是刑警寧澤享甸,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布截碴,位于F島的核電站,受9級(jí)特大地震影響蛉威,放射性物質(zhì)發(fā)生泄漏日丹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一瓷翻、第九天 我趴在偏房一處隱蔽的房頂上張望聚凹。 院中可真熱鬧,春花似錦齐帚、人聲如沸妒牙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)湘今。三九已至,卻和暖如春剪菱,著一層夾襖步出監(jiān)牢的瞬間摩瞎,已是汗流浹背拴签。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旗们,地道東北人蚓哩。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像上渴,于是被迫代替她去往敵國(guó)和親岸梨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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