實戰(zhàn)案例-原生Kubernetes容器云平臺應用部署_第1頁
實戰(zhàn)案例-原生Kubernetes容器云平臺應用部署_第2頁
實戰(zhàn)案例-原生Kubernetes容器云平臺應用部署_第3頁
實戰(zhàn)案例-原生Kubernetes容器云平臺應用部署_第4頁
實戰(zhàn)案例-原生Kubernetes容器云平臺應用部署_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章容器云技術(shù)7.9實戰(zhàn)案例——原生Kubernetes容器云平臺應用部署目錄2案例目標案例分析案例實施010203301案例目標學習目標了解YAML文件的語法。掌握Deployment、Pod、Service的部署基于Kubernetes部署Wordpress服務401

案例目標了解YAML文件的語法。掌握Deployment、Pod、Service的部署?;贙ubernetes部署Wordpress服務。502案例分析學習目標節(jié)點規(guī)劃基礎(chǔ)準備602

案例分析1.

規(guī)劃節(jié)點Kubernetes集群各節(jié)點的規(guī)劃表2.

基礎(chǔ)準備Kubernetes集群已部署完成。虛擬機要求能連接外網(wǎng)。703案例實施學習目標YAML文件部署應用優(yōu)化應用81.

YAML文件YAML是專門用來寫配置文件的語言,非常簡潔和強大,使用比JSON更方便。它實質(zhì)上是一種通用的數(shù)據(jù)串行化格式。YAML語法規(guī)則:大小寫敏感。使用縮進表示層級關(guān)系??s進時不允許使用Tab鍵,只允許使用空格??s進的空格數(shù)目不重要,只要相同層級的元素左側(cè)對齊即可?!?”表示注釋,從這個字符一直到行尾,都會被解析器忽略。03

案例實施9在Kubernetes中,只需要知道兩種結(jié)構(gòu)類型即可:ListsMaps使用YAML用于K8S的定義帶來的好處包括:便捷性:不必添加大量的參數(shù)到命令行中執(zhí)行命令??删S護性:YAML文件可以通過源頭控制,跟蹤每次操作。靈活性:YAML文件可以創(chuàng)建比命令行更加復雜的結(jié)構(gòu)。03

案例實施10(1)YAML

MapsMap顧名思義指的是字典,即一個Key:Value的鍵值對信息。例如:注意:---為可選的分隔符,當需要在一個文件中定義多個結(jié)構(gòu)的時候需要使用。上述內(nèi)容表示有兩個鍵apiVersion和kind,分別對應的值為v1和Pod。03

案例實施---apiVersion:

v1

kind:

Pod11Maps的value既能夠?qū)址材軌驅(qū)粋€Maps。例如:YAML處理器根據(jù)行縮進來知道內(nèi)容之間的關(guān)聯(lián)。上述例子中,使用兩個空格作為縮進,但空格的數(shù)量并不重要,只是要求至少一個空格并且所有縮進保持一致。03

案例實施---apiVersion:

v1

kind:Pod

metadata:name:

kube100-site

labels:app:

web12(2)YAML

ListsList即列表,類似于數(shù)組,例如:可以指定任何數(shù)量的項在列表中,每個項的定義以破折號“-”開頭,并且與父元素之間存在縮進。在JSON格式中,表示如下:03

案例實施args-beijing-shanghai-shenzhen-guangzhou{"args":["beijing",

"shanghai","shenzhen","guangzhou"]}13當然Lists的子項也可以是Maps,Maps的子項也可以是List,例如:03

案例實施apiVersion:

v1

kind:Pod

metadata:name:

kube100-site

labels:app:web

spec:

containers:-

name:

front-end

image:nginxports:-

containerPort:

8014(3)創(chuàng)建Pod創(chuàng)建YAML文件。03

案例實施[root@master

~]#

cat

test.yaml

#

api版本apiVersion:

v1#

指定創(chuàng)建資源對象kind:

Pod#

源數(shù)據(jù)、可以寫name,命名空間,對象標簽metadata:#

服務名稱name:

pod-test1503

案例實施#

標簽labels:#

標簽名os:

centos#

容器資源信息spec:#

容器管理containers:#

容器名稱-

name:

hello

#

容器鏡像image:nginx:latest

imagePullPolicy:

Never#

添加環(huán)境變量env:#

創(chuàng)建key-

name:

Test

#

創(chuàng)建valuevalue:

"123456"

#

啟動容器后執(zhí)行命令command:

["bash","-c","while

true;do

date;sleep

1;done"]1603

案例實施172.

部署應用在Kubernetes上運行WordPress的好處是顯而易見的。首先是安裝非常簡單(在已有集群的情況下),其次是可靠性更高,第三是規(guī)??梢陨炜s。當然,可以在多個云之間更為容易地遷移也是非常重要的一點。(1)新建namespace新建blog

namespace,將應用都部署到blog這個命名空間下面。03

案例實施[root@master~]#kubectlcreatenamespaceblog

namespace/blogcreated18(2)創(chuàng)建MySQL的Deployment對象創(chuàng)建一個MySQL的Deployment對象wordpress-db.yaml。然后創(chuàng)建上面的wordpress-db.yaml文件。03

案例實施[root@master

~]#

cat

wordpress-db.yaml[root@master~]#kubectlcreate-fwordpress-db.yaml

deployment.apps/mysql-deploycreatedservice/mysql

created19后查看Service的詳細情況??梢钥吹紼ndpoints部分匹配到了一個Pod,生成了一個clusterIP為53,現(xiàn)在就可以通過這個clusterIP加上定義的3306端口訪問MySQL

服務了。03

案例實施[root@master

~]#

kubectl

describe

svcmysql-nblog......Selector: app=mysqlType: ClusterIPIP: 53Port: mysqlport

3306/TCP

TargetPort: dbport/TCP

Endpoints: 5:330620(3)創(chuàng)建Wordpress服務創(chuàng)建Wordpress服務,將上面的wordpress的Pod轉(zhuǎn)換成Deployment對象wordpress.yaml。注意:要添加屬性type:

NodePort,然后創(chuàng)建wordpress.yaml文件。03

案例實施[root@master

~]#

catwordpress.yaml[root@master~]#kubectl

create

-fwordpress.yaml

deployment.apps/wordpress-deploycreatedservice/wordpresscreated21(4)編寫YAML文件編寫YAML文件wordpress-pod.yaml。注意:這里針對MySQL這個容器做了一個數(shù)據(jù)卷的掛載,這是為了能夠?qū)ySQL的數(shù)據(jù)能夠持久化到節(jié)點上,這樣下次MySQL容器重啟過后數(shù)據(jù)不至于丟失。(5)創(chuàng)建Pod03

案例實施[root@master

~]#

cat

wordpress-pod.yaml[root@master~]#kubectlcreate-fwordpress-pod.yaml

pod/wordpress

created22可以看到Wordpress服務產(chǎn)生了一個32012的端口,現(xiàn)在通過任意節(jié)點的NodeIP加上32012端口,就可以訪問Wordpress應用了。03

案例實施(6)訪問服務查看svc。[root@master

~]#

kubectl

get

svc

-n

blogNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEmysql ClusterIP 53<none> 3306/TCP 7m53s<none>80:32012/TCPwordpress NodePort 1776s233.

優(yōu)化應用(1)增加健康檢測liveness

probe和rediness

probe是提高應用穩(wěn)定性非常重要的方法。03

案例實施initialDelaySeconds:

3periodSeconds:

3

readinessProbe:tcpSocket: #通過端口探測的方式port:

80initialDelaySeconds:

5periodSeconds:

1024(2)增加Pod資源限制配置HPA,讓應用能夠自動應對流量高峰期。03

案例實施resources:limits:cpu:200m

memory:200Mi

requests:cpu:100m

memory:

100Mi25(3)增加滾動更新策略增加滾動更新策略,這樣可以保證在更新應用的時候,服務不會被中斷。03

案例實施replicas:

2revisionHistoryLimit:

10minReadySeconds:

5

strategy:type:RollingUpdate

rollingUpdate:

maxSurge:

1maxUnavailable:

126(4)修改MySQL主機值如果MySQL服務被重新創(chuàng)建了的話,它的clusterIP非常有可能就變化了,所以上面環(huán)境變量中的WORDPRESS_DB_HOST的值就會有問題,會導致訪問不了數(shù)據(jù)庫服務,這個地方可以直接使用Service的名稱來代替host,這樣即使clusterIP變化了,也不會有任何影響。03

案例實施env:-

name:

WORDPRESS_DB_HOSTvalue:

mysql:330627(5)添加initcontainer在部署Wordpress服務的時候,MySQL服務已經(jīng)啟動起來了嗎?如果沒有啟動起來,則無法連接數(shù)據(jù)庫。此時在啟動Wordpress應用之前,需要檢查一下MySQL服務,如果服務正常的話,就可以開始部署應用。直到MySQL服務創(chuàng)建完成后,initContainer才結(jié)束,結(jié)束完成后開始下面的部署。03

案例實施initContainers:-name:init-db

image:

busyboxcommand:

['sh',

'-c',

'until

nslookup

mysql;do

echo

waiting

for

mysql

service;

sleep2;done;']28(6)整合YAML把部署的應用整合到一個YAML文件wordpress-all.yaml中。(7)創(chuàng)建服務03

案例實施[root@master

~]#

cat

wordp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論