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

下載本文檔

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

文檔簡介

第7章容器云技術(shù)7.10實戰(zhàn)案例——原生Kubernetes容器云平臺運維目錄2案例目標(biāo)案例分析案例實施010203301案例目標(biāo)學(xué)習(xí)目標(biāo)了解Node節(jié)點的隔離、恢復(fù)與擴(kuò)容了解Pod的調(diào)度方式了解Kubernetes應(yīng)用的滾動升級401

案例目標(biāo)了解Node節(jié)點的隔離、恢復(fù)與擴(kuò)容。了解Pod的調(diào)度方式。了解Kubernetes應(yīng)用的滾動升級。502案例分析學(xué)習(xí)目標(biāo)節(jié)點規(guī)劃基礎(chǔ)準(zhǔn)備602

案例分析1.

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

基礎(chǔ)準(zhǔn)備Kubernetes集群已部署完成。703案例實施學(xué)習(xí)目標(biāo)掌握.Node的隔離與恢復(fù)掌握Node擴(kuò)容掌握Pod動態(tài)擴(kuò)容和縮放掌握將Pod調(diào)度到指定的Node理解應(yīng)用滾動升級81.

Node的隔離與恢復(fù)(1)隔離Node在硬件升級、硬件維護(hù)等情況下,需要將某些Node隔離。使用kubectl

cordon<node_name>命令可禁止Pod調(diào)度到該節(jié)點上,在其上運行的Pod并不會自動停止,管理員需要手動停止在該Node上運行的Pod。查看Node的狀態(tài),可以觀察到在node的狀態(tài)中增加了一項SchedulingDisabled,對于后續(xù)創(chuàng)建的Pod,系統(tǒng)將不會再向該Node進(jìn)行調(diào)度。03

案例實施[root@master

~]#

kubectl

cordon

node[root@master

~]#

kubectlget

nodes9(2)恢復(fù)Node通過kubectl

uncordon命令可完成對Node的恢復(fù)。可以看到Node節(jié)點已恢復(fù)調(diào)度,允許Pod調(diào)度到該節(jié)點上。(3)驅(qū)逐Node通過kubectl

drain

<node>命令可實現(xiàn)對node節(jié)點的驅(qū)逐,該命令會刪除該節(jié)點上的所有Pod(DaemonSet除外),在其他Node上重新啟動它們。03

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

[root@master~]#

kubectl

getnodes102.

Node擴(kuò)容在Kubernetes集群中,對于一個新Node的加入是非常簡單的??梢栽贜ode節(jié)點上安裝Docker、Kubelet和kube-proxy服務(wù),然后將Kubelet和kube-proxy的啟動參數(shù)中的Master

URL

指定為當(dāng)前Kubernetes集群master的地址,最后啟動這些服務(wù)?;贙ubelet的自動注冊機(jī)制,新的Node將會自動加入現(xiàn)有的Kubernetes集群中。03

案例實施11基礎(chǔ)環(huán)境配置新增節(jié)點按7.7.3步驟完成基礎(chǔ)環(huán)境的配置。配置Kubernetes

Yum源所有節(jié)點配置Kubernetes源。03

案例實施1203

案例實施#

cat

<<EOF

>

/etc/yum.repos.d/kubernetes.repo

[kubernetes]name=Kubernetes

baseurl=/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1gpgcheck=0

repo_gpgcheck=0gpgkey=/kubernetes/yum/doc/yum-key.gpg

/kubernetes/yum/doc/rpm-package-key.gpg

EOF13(3)安裝工具Kubelet負(fù)責(zé)與其他節(jié)點集群通信,并進(jìn)行本節(jié)點Pod和容器生命周期的管。Kubeadm是Kubernetes的自動化部署工具,降低了部署難度,提高效率。Kubectl是Kubernetes集群管理工具。所有節(jié)點安裝Kubernetes工具并啟動Kubelet。03

案例實施#

yuminstall

-ykubelet-1.14.1

kubeadm-1.14.1

kubectl-1.14.1

#systemctl

enable

kubelet

&&

systemctl

start

kubelet//

此時啟動不成功正常,后面初始化的時候會變成功14(4)生成TokenKubernetes默認(rèn)的Token有效期為24小時,當(dāng)過期之后,該Token就不可用了。登錄master節(jié)點,生成一條永久有效的Token。(5)獲取hash值登錄master節(jié)點,獲取CA證書sha256編碼hash值。03

案例實施[root@master~]#kubeadmtokencreate--ttl0

nhbdlm.n4x86kxi5z2ugg2l[root@master~]#

openssl

x509

-pubkey

-in

/etc/kubernetes/pki/ca.crt

|

openssl

rsa-pubin

-outformder

2>/dev/null

|openssl

dgst

-sha256

-hex

|

sed

's/^.*

//'

bc6b971ef27788d62491f27c61d68bf1ee01ccf2eb615f275f1df7db3955612815加入集群登錄node2節(jié)點,使用kubeadm

join命令加入集群。[root@node2

~]#

kubeadm

join

0:6443

--tokennhbdlm.n4x86kxi5z2ugg2l

--discovery-token-ca-cert-hash

his

nodehasjoinedthecluster:Certificate

signingrequestwassent

to

apiserverandaresponsewas

received.The

Kubelet

was

informed

of

the

new

secure

connection

details.Run'kubectl

get

nodes'on

thecontrol-plane

to

seethis

nodejointhe

cluster.03

案例實施16(7)查看集群節(jié)點登錄master節(jié)點,查看集群所有節(jié)點狀態(tài)。03

案例實施173.

Pod動態(tài)擴(kuò)容和縮放(1)運行Deployment以Nginx

Deployment為例,已定義的最初副本數(shù)量為1。[root@master~]#kubectlrun

nginx--image=nginx:latestkubectl

run

--generator=deployment/apps.v1

is

DEPRECATED

and

will

be

removedin

a

future

version.

Use

kubectl

run--generator=run-pod/v1

or

kubectlcreate

instead.[root@master

~]#

kubectl

get

podsNAME READY STATUS RESTARTS AGEnginx-ccb467dc5-jlr4c 1/1 Running 0 40s03

案例實施18(2)Pod擴(kuò)容通過執(zhí)行下面的命令將Nginx

Deployment控制的Pod副本數(shù)量從初始的1更新為5。03

案例實施[root@master

~]#kubectl

scale

deploymentnginx--replicas=5

deployment.extensions/nginx

scaled執(zhí)行kubectl

get

pods命令來驗證Pod的副本數(shù)量增加到5。[root@master

~]#

kubectl

get

podsNAME READY STATUS RESTARTS AGEnginx-ccb467dc5-2f6n2 1/1 Running 0 34s......19(3)Pod縮容將--replicas設(shè)置為比當(dāng)前Pod副本數(shù)量更小的數(shù)字,系統(tǒng)將會“殺掉”一些運行中的Pod,即可實現(xiàn)應(yīng)用集群縮容。03

案例實施204.

將Pod調(diào)度到指定的Node(1)添加LabelLabel(標(biāo)簽)作為用戶可靈活定義的對象屬性,在已創(chuàng)建的對象上,仍然可以隨時通過kubectllabel命令對其進(jìn)行增加、修改、刪除等操作。使用kubectl

label給node打標(biāo)簽的用法如下:下面的示例,為node打上一個project=gcxt的標(biāo)簽。如果想刪除Label,只需要在命令行最后指定Label的key名,并加一個減號即可。03

案例實施#kubectl

label

nodes

<node-name>

<label-key>=<label-value>[root@master~]#

kubectl

labelnodesnodeproject=gcxt[root@master

~]#kubectl

labelnodenodeproject-node/node

labeled21(2)調(diào)度Pod到指定Node節(jié)點

在Pod中加入nodeSelector定義。運行kubectl

create-f命令創(chuàng)建Pod,scheduler就會將該Pod調(diào)度到擁有project=gcxt標(biāo)簽的Node上去。查看Pod。這種基于Label標(biāo)簽的調(diào)度方式靈活性很高,比如,可以把一組Node分別貼上“開發(fā)環(huán)境”、“測試環(huán)境”、“生產(chǎn)環(huán)境”這3組標(biāo)簽中的一種,此時一個Kubernetes集群就承載了3個環(huán)境,這將大大提高開發(fā)效率。03

案例實施[root@master

~]#

cat

nginx.yaml[root@master

~]#

cat

nginx.yaml[root@master

~]#kubectlgetpods-owide225.

應(yīng)用滾動升級當(dāng)集群中的某個服務(wù)需要升級時,需要停止目前與該服務(wù)相關(guān)的所有Pod,然后重新拉取鏡像并啟動。如果集群規(guī)模比較大,這個工作就變成了一個挑戰(zhàn)。如果采取先全部停止,然后逐步升級的方式,會導(dǎo)致較長時間的服務(wù)不可用。Kubernetes提供了rolling-update(滾動升級)

功能來解決上述問題。滾動升級通過執(zhí)行kubectl

rolling-update命令一鍵完成,該命令創(chuàng)建了一個新的Deployment,然后自動控制舊的Deployment中的Pod副本數(shù)量逐漸減少到0,同時新的Deployment中的Pod副本數(shù)量從0逐步增加到目標(biāo)值,最終實現(xiàn)了Pod的升級。注意:系統(tǒng)要求新的Deployment需要與舊的Deployment在相同的命名空間Namespace

內(nèi),即不能把別人的資產(chǎn)偷偷轉(zhuǎn)移到自家名下。03

案例實施23(1)啟動Deployment定義httpd.yaml文件。啟動Deployment。查看Deployment。03

案例實施[root@master

~]#

cat

httpd.yaml[root@master~]#

kubectlcreate

-fhttpd.yaml

[root@master~]#

kubectl

getpods[root@master~]#kubectlget

deploymentshttpd-o

wideNAMEREADYUP-TO-DATE

AVAILABLE

AGE

CONTAINERS

IMAGES

SELECTORhttpd 3/3 3 3 93s httpd httpd:2.2.31

run=httpd24(2)滾動升級把配置文件中的httpd:2.2.31改為httpd:2.2.32,再次啟動。再次查看Deployment。查看Deployment的詳細(xì)信息。03

案例實施[root@master

~]#

cat

httpd.yaml[root@master~]#kubectlget

deploymentshttpd-o

wide[root@master~]#kubectl

describe

deploymenthttpd25上面的日志信息就描述了滾動升級的過程:啟動一個新版Pod。把舊版Pod數(shù)量降為2。再啟動一個新版,數(shù)量變?yōu)?。把舊版Pod數(shù)量降為1。再啟動一個新版,數(shù)量變?yōu)?。把舊版Pod數(shù)量降為0。這就是滾動的意思,始終保持副本數(shù)量為3,控制新舊Pod的交替,實現(xiàn)了無縫升級。03

案例實施26(3)回滾kubectl

apply每次更新應(yīng)用時,kubernetes都會記錄下當(dāng)前的配置,保存為一個revision,這樣就可以回滾到某個特定的版本。創(chuàng)建3個配置文件,內(nèi)容中唯一不同的就是鏡像的版本號。03

案例實施[root@master~]#cathttpd.v1.yaml

[root@master~]#cathttpd.v2.yaml

[root@master

~]#

cat

httpd.v3.yaml27部署Deployment。--record的作用是將當(dāng)前命令記錄到revision中,可以知道每個revision對應(yīng)的是哪個配置文件。03

案例實施[root@master~]#kubectlapply-fhttpd.v1.yaml

--record

deployment.apps/httpdconfigured[root@master~]#kubectlapply-fhttpd.v2.yaml

--record

deployment.apps/httpdconfigured[root@master~]#kubectlapply-f

溫馨提示

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

評論

0/150

提交評論