




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項5 標(biāo)點(解析版)
- 2025年初中教科版八年級上冊物理2.3測量物體運動的速度說課稿
- 2.2 聲音的特性 說課稿-2025年初中人教版八年級物理上冊
- 品牌戰(zhàn)略規(guī)劃作業(yè)指導(dǎo)書
- 電信行業(yè)網(wǎng)絡(luò)優(yōu)化及增值業(yè)務(wù)拓展方案
- 垃圾焚燒發(fā)電廠項目劃分
- 房地產(chǎn)開發(fā)項目可行性研究論文
- 股份制改革實施路徑研究
- 快遞行業(yè)長期物流合作協(xié)議
- 針對提高團(tuán)隊協(xié)作效率的解決方案
- 《油氣儲存企業(yè)安全風(fēng)險評估細(xì)則(2025年修訂版)》解讀與培訓(xùn)
- 2025年安徽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- 2025年內(nèi)蒙古北方職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫完美版
- Deepseek 學(xué)習(xí)手冊分享
- 電網(wǎng)工程設(shè)備材料信息參考價(2024年第四季度)
- 《你當(dāng)像鳥飛往你的山》讀書分享讀書分享筆記
- 2024年浙江省中考社會試卷真題(含標(biāo)準(zhǔn)答案及評分標(biāo)準(zhǔn))
- 20以內(nèi)退位減法口算練習(xí)題100題30套(共3000題)
- 4925095728國內(nèi)外中小學(xué)作業(yè)研究綜述
- 外墻粉刷施工方案(完整版)
- 華為-原理圖繪制評審規(guī)范-checklist
評論
0/150
提交評論