Kubernetes學(xué)習(xí)筆記——2.5 伸縮應(yīng)用

by kowen 2018.02.27
本文翻譯自Scale Your App

學(xué)習(xí)目標(biāo)

  • 使用kubectl伸縮(Scale)應(yīng)用

伸縮應(yīng)用

我們已經(jīng)能夠創(chuàng)建部署哀卫,并且通過服務(wù)將它暴露出去。但這個(gè)部署只是創(chuàng)建了一個(gè)Pod運(yùn)行應(yīng)用,當(dāng)訪問量增加的時(shí)候惑艇,我們需要擴(kuò)充服務(wù)來滿足用戶需求。

伸縮(Scaling)功能是通過修改部署副本的數(shù)量完成的。

伸縮概述

image.png

image.png

擴(kuò)展(scaling out)部署會(huì)確保新的Pod被創(chuàng)建并部署到有足夠可用資源的Node上面∠爬撸縮減(scaling in)會(huì)根據(jù)最新狀態(tài)減少Pod的個(gè)數(shù)。Kubernetes支持自動(dòng)伸縮功能瑰艘,但本教程不涉及該內(nèi)容是鬼。縮減Pod個(gè)數(shù)到0也是可能的紫新,這樣會(huì)停止該部署的所有Pod屑咳。

應(yīng)用運(yùn)行了多個(gè)實(shí)例,必須要有一種方法來給它們分發(fā)流量弊琴。服務(wù)有一個(gè)內(nèi)置的load-balancer自動(dòng)將網(wǎng)絡(luò)流量分發(fā)到各個(gè)Pod。服務(wù)會(huì)使用endpoint持續(xù)監(jiān)控Pod杖爽,保證流量只被發(fā)送到可用的Pod上敲董。

一旦你的應(yīng)用有個(gè)多個(gè)運(yùn)行實(shí)例,你就可以滾動(dòng)更新慰安,而服務(wù)不受影響腋寨。

交互式教程

伸縮一個(gè)部署

查看所有部署

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1         1         1            1           58s

DESIRED狀態(tài)顯示的是配置的副本個(gè)數(shù)
CURRENT狀態(tài)顯示的是目前運(yùn)行的副本個(gè)數(shù)
UP-TO-DATE狀態(tài)顯示的是已更新以匹配所需(已配置)狀態(tài)的副本數(shù)量
AVAILABLE狀態(tài)顯示實(shí)際用戶可用的副本數(shù)量

下面將部署調(diào)整為4個(gè)副本。使用kubectl scale命令化焕,后面加上部署類型萄窜、名稱和需要的實(shí)例個(gè)數(shù)。

$ kubectl scale deployments/kubernetes-bootcamp --replicas=4
deployment "kubernetes-bootcamp" scaled

查看是否成功

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   4         4         4            4           7m

可以看到目前已經(jīng)有4個(gè)運(yùn)行實(shí)例了撒桨。接下來看一下pod個(gè)數(shù)是否變化:

$ kubectl get pods -o wide
NAME                                   READY     STATUS    RESTARTS   AGE       IP      NODE
kubernetes-bootcamp-5dbf48f7d4-b94f5   1/1       Running   0          1m        172.18.0.6   host01
kubernetes-bootcamp-5dbf48f7d4-dqxw7   1/1       Running   0          1m        172.18.0.5   host01
kubernetes-bootcamp-5dbf48f7d4-txdnl   1/1       Running   0          1m        172.18.0.7   host01
kubernetes-bootcamp-5dbf48f7d4-v68pr   1/1       Running   0          8m        172.18.0.2   host01

現(xiàn)在有4個(gè)不同IP地址的Pod查刻。所有的變化都保存在部署實(shí)踐日志里。使用以下命令查看:

$ kubectl describe deployments/kubernetes-bootcamp
Name:                   kubernetes-bootcamp
Namespace:              default
CreationTimestamp:      Tue, 27 Feb 2018 07:07:13 +0000
Labels:                 run=kubernetes-bootcamp
Annotations:            deployment.kubernetes.io/revision=1
Selector:               run=kubernetes-bootcamp
Replicas:               4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
Pod Template:
  Labels:  run=kubernetes-bootcamp
  Containers:
   kubernetes-bootcamp:
    Image:        gcr.io/google-samples/kubernetes-bootcamp:v1
    Port:         8080/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   kubernetes-bootcamp-5dbf48f7d4 (4/4 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  10m   deployment-controller  Scaled up replica set kubernetes-bootcamp-5dbf48f7d4 to 1
  Normal  ScalingReplicaSet  3m    deployment-controller  Scaled up replica set kubernetes-bootcamp-5dbf48f7d4 to 4

負(fù)載均衡

讓我們確認(rèn)以下服務(wù)是否有流量負(fù)載均衡凤类。查看服務(wù)暴露的IP地址和端口:

$ kubectl describe services/kubernetes-bootcamp
Name:                     kubernetes-bootcamp
Namespace:                default
Labels:                   run=kubernetes-bootcamp
Annotations:              <none>
Selector:                 run=kubernetes-bootcamp
Type:                     NodePort
IP:                       10.100.97.40
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  32620/TCP
Endpoints:                172.18.0.2:8080,172.18.0.5:8080,172.18.0.6:8080 + 1 more...
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

創(chuàng)建環(huán)境變量NODE_PORT保存端口

$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT
NODE_PORT=32620

通過curl訪問服務(wù)穗泵,多運(yùn)行幾次,可以看到每次訪問到不同的Pod谜疤。

$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5dbf48f7d4-b94f5 | v=1
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5dbf48f7d4-txdnl | v=1
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5dbf48f7d4-v68pr | v=1

收縮

將服務(wù)縮減為2個(gè)實(shí)例副本

$ kubectl scale deployments/kubernetes-bootcamp --replicas=2
deployment "kubernetes-bootcamp" scaled

查看是否成功

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   2         2         2            2           27m

查看Pod個(gè)數(shù)

$ kubectl get pods -o wide
NAME                                   READY     STATUS    RESTARTS   AGE       IP      NODE
kubernetes-bootcamp-5dbf48f7d4-dqxw7   1/1       Running   0          20m       172.18.0.5   host01
kubernetes-bootcamp-5dbf48f7d4-v68pr   1/1       Running   0          27m       172.18.0.2   host01

可以看到有兩個(gè)Pod被終止了佃延。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市夷磕,隨后出現(xiàn)的幾起案子履肃,更是在濱河造成了極大的恐慌,老刑警劉巖坐桩,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尺棋,死亡現(xiàn)場離奇詭異,居然都是意外死亡撕攒,警方通過查閱死者的電腦和手機(jī)陡鹃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門烘浦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人萍鲸,你說我怎么就攤上這事闷叉。” “怎么了脊阴?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵握侧,是天一觀的道長。 經(jīng)常有香客問我嘿期,道長品擎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任备徐,我火速辦了婚禮萄传,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜜猾。我一直安慰自己秀菱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布蹭睡。 她就那樣靜靜地躺著衍菱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肩豁。 梳的紋絲不亂的頭發(fā)上脊串,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音清钥,去河邊找鬼琼锋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祟昭,可吹牛的內(nèi)容都是我干的斩例。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼从橘,長吁一口氣:“原來是場噩夢啊……” “哼念赶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恰力,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤叉谜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后踩萎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體停局,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了董栽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片码倦。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锭碳,靈堂內(nèi)的尸體忽然破棺而出袁稽,到底是詐尸還是另有隱情,我是刑警寧澤擒抛,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布推汽,位于F島的核電站,受9級(jí)特大地震影響歧沪,放射性物質(zhì)發(fā)生泄漏歹撒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一诊胞、第九天 我趴在偏房一處隱蔽的房頂上張望暖夭。 院中可真熱鬧,春花似錦撵孤、人聲如沸鳞尔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至市框,卻和暖如春霞扬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枫振。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工喻圃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粪滤。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓斧拍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杖小。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肆汹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 《kubernetes權(quán)威指南》是本不可多得的好書,這里記錄一下自己的讀書筆記以及按照書中搭建的源代碼予权。 kube...
    行書以鑒閱讀 8,080評(píng)論 1 19
  • 1昂勉、基礎(chǔ)架構(gòu) 1.1 Master Master節(jié)點(diǎn)上面主要由四個(gè)模塊組成:APIServer、scheduler...
    阿斯蒂芬2閱讀 10,875評(píng)論 0 44
  • 寫這篇文章主要是為了今后畢業(yè)論文素材上的整理扫腺,同時(shí)對(duì)docker進(jìn)行鞏固溫習(xí)岗照。大綱: docker簡介docker...
    胡圖仙人閱讀 7,423評(píng)論 2 96
  • 夜曉看著這充滿霓虹的街頭。這是他來到凡世的第十年,紫色的頭發(fā)已經(jīng)到了夜曉的腰部攒至。絕美的臉龐上充滿好奇厚者。 紫族的...
    九盞酒閱讀 233評(píng)論 0 0
  • 星期一放學(xué),小學(xué)生安安就發(fā)現(xiàn)迫吐,家門口附近多了一棵高大的楊樹库菲。它的腰身那么粗,要兩個(gè)安安伸長了手才能抱浊ā蝙昙;它的個(gè)子是...
    佘璽閱讀 522評(píng)論 2 2