部署APP-使用kubectl創(chuàng)建一個(gè)部署

原文地址:https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-intro/

目標(biāo)

  • 學(xué)習(xí)應(yīng)用部署
  • 使用kubectl在kubernetes上部署第一個(gè)應(yīng)用

Kubernetes部署

一旦有了一個(gè)運(yùn)行中Kubernetes集群澄成,你可以在上面部署你的容器化后的應(yīng)用。為此倚喂,你需要?jiǎng)?chuàng)建一個(gè)k8s Deployment配置項(xiàng)斋泄。Deployment指明Kubernetes如何去創(chuàng)建和升級(jí)應(yīng)用的實(shí)例杯瞻。一旦創(chuàng)建了一個(gè)Deployment,kuberneters主線程調(diào)度涉及到的應(yīng)用實(shí)例到集群中的獨(dú)立Nodes炫掐。

一旦應(yīng)用實(shí)例創(chuàng)建了魁莉,一個(gè)Kubernetes Deployment Controller會(huì)持續(xù)管理這些實(shí)例。如果Node托管的實(shí)例掛掉了或者被被刪除了募胃,Deployment controller會(huì)取代它旗唁。這是k8s的一個(gè)自我修復(fù)機(jī)制來解決機(jī)器故障或者維護(hù)問題。

在一個(gè)前-編排(orchestration)世界痹束,安裝腳本經(jīng)常用來啟動(dòng)應(yīng)用逆皮,但是他們不允許從故障的機(jī)器中恢復(fù)回來,也就是沒有自我恢復(fù)機(jī)制参袱。通過既創(chuàng)建應(yīng)用實(shí)例又讓它們跨節(jié)點(diǎn)運(yùn)行电谣,Kubernetes部署提供了一個(gè)完全不同的應(yīng)用部署的方式。

總結(jié):

  • Deployments
  • Kubectl

一個(gè)Deployment負(fù)責(zé)創(chuàng)建和升級(jí)應(yīng)用實(shí)例抹蚀。

在Kubernetes上部署你的第一個(gè)app


image

你可以通過使用命令行接口Kubectl創(chuàng)建和管理一個(gè)Deployment.Kubectl使用Kubernetes API與集群進(jìn)行交互盲再。在這個(gè)單元里方庭,你將學(xué)習(xí)最常用的Kubectl用來創(chuàng)建Deployments從而在Kubernetes集群上運(yùn)行你的應(yīng)用的命令行。

當(dāng)你創(chuàng)建了一個(gè)Deployment,你需要為應(yīng)用程序指定容器圖像和你想運(yùn)行的副本的個(gè)數(shù)放闺。通過升級(jí)Deployment你能夠改變那個(gè)信息;集訓(xùn)的單元5和6將討論如何scale和升級(jí)你的Deployments.

為了部署應(yīng)用到Kubernetes上谷饿,應(yīng)用需要被打包成一種被支持的容器格式未荒。

對(duì)于我們的第一次部署,我們將部署Node.js應(yīng)用到Docker容器上接箫。源代碼和Dockerfile在Kubernetes集訓(xùn)的Github respository上攒读。

現(xiàn)在你知道Deployments是什么了,讓我們進(jìn)入在線教程并且部署你的第一個(gè)app吧辛友!

kubectl basics基礎(chǔ)

kubectl命名的格式是:kubectl + 動(dòng)作 + 資源
動(dòng)作包括create,describe等薄扁,資源則包括node,container剪返。可以在命令后加上--help查看額外的信息邓梅。例如脱盲,kubectl get nodes --help。

檢查kubectl版本:kubectl version

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"", Minor:"", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2018-01-26T19:04:38Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"linux/amd64"}

查看集群中的節(jié)點(diǎn)數(shù):kubectl get nodes

NAME      STATUS    ROLES     AGE       VERSION
host01    Ready     <none>    5m        v1.9.0

k8s將基于可用的節(jié)點(diǎn)資源來選擇應(yīng)用的部署位置日缨。

部署我們的app

讓我們使用kubectl run命令來運(yùn)行我們第一個(gè)應(yīng)用钱反。run命令創(chuàng)建了一個(gè)新的部署。我們需要提供:部署名字和應(yīng)用的圖像位置(包括在Docker hub外的完整的的repository網(wǎng)址)匣距。我們想在某個(gè)特定端口運(yùn)行應(yīng)用的話面哥,需要加上--port參數(shù)。

kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080

deployment "kubernetes-bootcamp" created
太棒了墨礁,你通過創(chuàng)建了一個(gè)部署成功部署了我們的第一個(gè)應(yīng)用程序幢竹。

上面的命令包含了以下的事情:

  • 搜索一個(gè)可用節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)可以運(yùn)行應(yīng)用實(shí)例
  • 調(diào)度應(yīng)用到那個(gè)節(jié)點(diǎn)
  • 配置集群在必要時(shí)重新調(diào)度實(shí)例到新的節(jié)點(diǎn)

列舉Deployments:kubectl get deployments

NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1         1         1            1           5m

應(yīng)用實(shí)例運(yùn)行在你的節(jié)點(diǎn)Docker容器中恩静。

查看我們的應(yīng)用

在Kubernetes內(nèi)部運(yùn)行的Pods運(yùn)行在一個(gè)私有的焕毫,獨(dú)立的網(wǎng)絡(luò)。默認(rèn)情況下驶乾,同一個(gè)k8s集群下的其他pod和service之間是可見的邑飒,但是在網(wǎng)絡(luò)外是不可見的。當(dāng)我們使用kubectl级乐,我們通過API端點(diǎn)與我們的應(yīng)用程序進(jìn)行通信疙咸。
我們將在第四單元涵蓋在k8s集群外如何暴露應(yīng)用的其他選項(xiàng)。
kubectl命名能創(chuàng)建一個(gè)代理风科,這個(gè)代理可以在我們的集群范圍內(nèi)的撒轮,私有的網(wǎng)絡(luò)空間內(nèi)轉(zhuǎn)發(fā)通信。代理可以通過CTRL+C的方式終止贼穆,而且在運(yùn)行時(shí)不會(huì)有任何輸出题山。
我們將開啟第二個(gè)終端窗口去運(yùn)行代理。
kubectl proxy
我們現(xiàn)在有了一個(gè)主機(jī)與k8s集群之間的連接故痊。代理可以直接從這些終端獲取到API的權(quán)限顶瞳。

通過代理端口,你能看到所有的主機(jī)API愕秫,從http://localhost:8001可以看到所有慨菱。例如,我們能直接通過curl命令通過API查詢版本戴甩。
curl http://localhost:8001/version
stdout:

{
  "major": "",
  "minor": "",
  "gitVersion": "v1.9.0",
  "gitCommit": "925c127ec6b946659ad0fd596fa959be43f0cc05",
  "gitTreeState": "clean",
  "buildDate": "2018-01-26T19:04:38Z",
  "goVersion": "go1.9.1",
  "compiler": "gc",
  "platform": "linux/amd64"
}

API服務(wù)器可以自動(dòng)為每個(gè)pod創(chuàng)建一個(gè)尾端點(diǎn)符喝,基于pod名字,這通過代理同樣是可行的等恐。
首先我們需要獲取到Pod的名字洲劣,然后將其存儲(chǔ)到環(huán)境變量POD_NAME中备蚓。

export  POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME

stdout:
Name of the Pod: kubernetes-bootcamp-5dbf48f7d4-s5xwx

現(xiàn)在我們可以通過運(yùn)行在那個(gè)POD的應(yīng)用程序創(chuàng)建一個(gè)HTTP請(qǐng)求了课蔬。
curl http://localhost:8001/api/v1/proxy/namespace/default/pods/$POD_NAME
stdout:
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5dbf48f7d4-s5xwx | v=1
這個(gè)url是Pod的API的路由囱稽。

注意:檢查終端的頂部。代理運(yùn)行在一個(gè)新的tab上二跋,而且最近的命令還在源tab上執(zhí)行战惊。代理仍然運(yùn)行在第二個(gè)tab,而且這也允許我們的curl命令能夠運(yùn)行在localhost:8001.

期待和大家交流扎即,共同進(jìn)步吞获,歡迎大家加入我創(chuàng)建的與前端開發(fā)密切相關(guān)的技術(shù)討論小組:

努力成為優(yōu)秀前端工程師各拷!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闷营,隨后出現(xiàn)的幾起案子烤黍,更是在濱河造成了極大的恐慌,老刑警劉巖傻盟,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件速蕊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡娘赴,警方通過查閱死者的電腦和手機(jī)规哲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诽表,“玉大人唉锌,你說我怎么就攤上這事「妥啵” “怎么了袄简?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長议双。 經(jīng)常有香客問我痘番,道長,這世上最難降的妖魔是什么平痰? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任汞舱,我火速辦了婚禮,結(jié)果婚禮上宗雇,老公的妹妹穿的比我還像新娘昂芜。我一直安慰自己,他們只是感情好赔蒲,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布泌神。 她就那樣靜靜地躺著良漱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欢际。 梳的紋絲不亂的頭發(fā)上母市,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音损趋,去河邊找鬼患久。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浑槽,可吹牛的內(nèi)容都是我干的蒋失。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼桐玻,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼篙挽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起镊靴,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤铣卡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后邑闲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體算行,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年苫耸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了州邢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褪子,死狀恐怖量淌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫌褪,我是刑警寧澤呀枢,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站笼痛,受9級(jí)特大地震影響裙秋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缨伊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一摘刑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刻坊,春花似錦枷恕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽未玻。三九已至,卻和暖如春胡控,著一層夾襖步出監(jiān)牢的瞬間扳剿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工铜犬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舞终,地道東北人轻庆。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓癣猾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親余爆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纷宇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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

  • Kubernetes(K8S)中文文檔_Kubernetes中文社區(qū) Kubernetes基礎(chǔ) 在集群上規(guī)模化蛾方,帶...
    任嘉平生愿閱讀 404評(píng)論 0 0
  • 0.前言 首先要說的一點(diǎn):這篇文章不是什么教程像捶,單純是自己學(xué)習(xí)的筆記,如果有錯(cuò)誤望各位大佬指正桩砰。 1. Kuber...
    SYFHEHE閱讀 1,358評(píng)論 0 0
  • 在實(shí)踐之前拓春,必須先學(xué)習(xí)k8s的幾個(gè)重要概念,它們是組成k8s集群的基石亚隅。 1. Cluster Cluster是計(jì)...
    wangfs閱讀 845評(píng)論 0 0
  • 2019.3.26 星期二 晴 1 后人發(fā)硼莽,先人至,謀長節(jié)短煮纵,戰(zhàn)無不勝懂鸵。 ...
    冥修人閱讀 66評(píng)論 0 1
  • 今天是1月25日是第四天,我開始了今天廈門旅游的第一個(gè)景點(diǎn)南靖土樓行疏。 經(jīng)過3個(gè)多小時(shí)的乘車匆光,終于來到了土樓景區(qū)。我...
    FatouMaiDahra閱讀 208評(píng)論 0 0