新聞中心
如何為運(yùn)行中的Kubernetes Pod打補(bǔ)???
譯文
作者:布加迪編譯 2020-04-10 08:00:08
云計(jì)算 運(yùn)行中的Kubernetes pod沒必要為了更改而拆除。使用patch選項(xiàng),為pod添加新容器實(shí)際上非常容易。

創(chuàng)新互聯(lián)是一家專業(yè)提供永吉企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為永吉眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
【51CTO.com快譯】Kubernetes是市面上強(qiáng)大、靈活的容器集群管理器之一。有了這個(gè)工具,你幾乎可以做任何要做的事情。為已經(jīng)部署的pod打補(bǔ)丁就是Kubernetes提供的這樣一項(xiàng)功能。
比如說,假設(shè)你部署了一個(gè)含有Nginx容器的pod,但隨后又想把Regis和MySQL容器添加進(jìn)來。你無需把一切拆除下來并重新調(diào)整配置文件,只需運(yùn)行patch命令即可添加新容器。
下面介紹如何做到這一點(diǎn)。雖然該例子很簡單,但會(huì)演示patch選項(xiàng)如何與kubectl命令協(xié)同使用。
你需要什么?
完成這項(xiàng)工作只需要運(yùn)行中的Kubernetes集群。
想搞清楚如何部署集群,請(qǐng)查看這篇教程:《如何在Ubuntu服務(wù)器上部署Kubernetes集群?》。一旦啟動(dòng)并運(yùn)行了集群,我們可以繼續(xù)下一步了。
如何部署Kubernetes服務(wù)?
我們要做的第一件事是部署Kubernetes服務(wù)。使用以下命令創(chuàng)建一個(gè)新目錄:
- mkdir ~/patch-demo
使用以下命令進(jìn)入到該新目錄:
- cd ~/patch-demo
現(xiàn)在,為含有帶基本模板的Nginx和兩個(gè)副本的服務(wù)部署創(chuàng)建一個(gè)YAML文件。使用以下命令創(chuàng)建該文件:
- nano deployment-patch.yaml
在該文件中,粘貼以下內(nèi)容:
- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
- kind: Deployment
- metadata:
- name: patch-demo
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: nginx
- template:
- metadata:
- labels:
- app: nginx
- spec:
- containers:
- - name: patch-demo-ctr
- image: nginx
- tolerations:
- - effect: NoSchedule
- key: dedicated
- value: test-team
保存并關(guān)閉文件。使用以下命令部署該配置:
- kubectl apply -f deployment-patch.yaml
現(xiàn)在你可以通過執(zhí)行以下命令看到該pod處于運(yùn)行中:
- kubectl get pods
該patch-demo補(bǔ)丁將被列為運(yùn)行中(圖A)。
圖A. 我們的Kubernetes patch-demo pod已啟動(dòng)并在運(yùn)行中
如何為運(yùn)行中的服務(wù)打補(bǔ)丁?
現(xiàn)在,我們將創(chuàng)建一個(gè)戰(zhàn)略性合并補(bǔ)丁文件,該文件將為pod添加Redis容器。使用以下命令創(chuàng)建補(bǔ)丁文件:
- nano patch-file.yaml
在該文件中,粘貼以下內(nèi)容:
- spec:
- template:
- spec:
- containers:
- - name: patch-demo-ctr-2
- image: redis
保存并關(guān)閉文件。
為了給運(yùn)行中的服務(wù)打補(bǔ)丁,執(zhí)行以下命令:
- kubectl patch deployment patch-demo --patch "$(cat patch-file.yaml)"
該實(shí)例中發(fā)生的是,部署將終止舊pod,創(chuàng)建新pod。
你可以繼續(xù)這一步。比如說,假設(shè)你想把MySQL添加進(jìn)來。用以下命令創(chuàng)建另一個(gè)補(bǔ)丁文件:
- nano patch-file-2.yaml
在該文件中,粘貼以下內(nèi)容:
- spec:
- template:
- spec:
- containers:
- - name: patch-demo-ctr-3
- image: mysql
保存并關(guān)閉文件,重新運(yùn)行patch命令,就像這樣:
- kubectl patch deployment patch-demo --patch "$(cat patch-file-2.yaml)"
如果你執(zhí)行該命令:
- kubectl get deployment patch-demo --output yaml
會(huì)看到Nginx、Redis和MySQL都在pod中(圖B)。
圖B. 我們的Kubernetes pod現(xiàn)包括所有三個(gè)映像
對(duì)于該補(bǔ)丁系統(tǒng),你無法做到的一件事就是為pod擴(kuò)增副本的數(shù)量。為此,你要使用scale命令,就像這樣:
- kubectl scale --replicas=4 deployment patch-demo
或者你可以把它縮減至0來刪除pod,就像這樣:
- kubectl scale --replicas=0 deployment patch-demo
這就是為運(yùn)行中的Kubernetes服務(wù)打補(bǔ)丁的一切。雖然這篇教程很基礎(chǔ),但你會(huì)發(fā)現(xiàn)有了patch命令,你幾乎可以做一切事情。
原文標(biāo)題:How to patch a running Kubernetes pod,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】
文章題目:如何為運(yùn)行中的Kubernetespod打補(bǔ)?。?
網(wǎng)站URL:http://fisionsoft.com.cn/article/dhdhidi.html


咨詢
建站咨詢
