版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
^Kubernetes集群實戰(zhàn)(微課版)》
項目實訓(xùn)參考指導(dǎo)
項目1從Docker轉(zhuǎn)向Kubernetes
實訓(xùn)1安裝DockerEngine并進(jìn)行鏡像和容器的基本操作
實訓(xùn)目的
(I)了解Docker版本和安裝方式。
(2)掌握DockerEngine的安裝方法。
(3)掌握鏡像和容器的基本操作方法。
實訓(xùn)內(nèi)容
建議參照任務(wù)1.1.1道過Docker的軟件倉庫安裝Docker;參照任務(wù)1.2.1操作鏡像和容
器。
(1)準(zhǔn)備Docker安裝環(huán)境。
操作系統(tǒng)選擇CentOSStream8或CenlOSStream9;
更改主機(jī)名;
修改網(wǎng)絡(luò)連接配置;
禁用防火墻和SELinux;
更改時區(qū)。
(2)設(shè)置Docker軟件倉庫。
yuminstall-yyum-utils
yum-config-manager-add-repo\
/docker-ce/linux/centos/docker-ce.repo
(3)安裝DockerEngine軟件包。
如果運行的是CentOSStream8,則需要先卸載默認(rèn)的容器引擎Podman:
yumerasepodmanbuilda
如果運行的是CentOSStream9,則無需此操作〃
建議安裝指定版本的DockerEngine:
yuminstalldocker-ce-20.10.21docker-ce-cli-20.10.21containerd.io-1.6.10
也可以嘗試安裝最新版本:
yuminstalldocker-cedocker-ce-clicontainerd.iodocker-buildx-plugindocker-compose-plugin
目前最新版本涉及DockerCompose的安裝。
(4)啟動Docker并運行hello-world鏡像進(jìn)行測試。
systemctlstartdocker
dockerrunhello-world
因國內(nèi)網(wǎng)絡(luò)環(huán)境限制,實際應(yīng)用中我們會遇到無法拉取Docker鏡像的情況。最簡單的
解決方案是使用鏡像加速器。推薦使用以下鏡像加速器:
?Daocloud鏡像加速器:https://docker.rn.daocloud.io
?阿里云鏡像加速器:hitps:〃XXXXX.mirror.aliyuncs.com
?華為云鏡像加速器:XXXXX.mirror.swr.myhuaw
阿里云和華為云需要登錄賬號,獲取特定的鏡像加速器地址。
?需要注意的是,之前一些常用的鏡像加速器已變得不好用,列舉如下:
?Docker官方鏡像(中國區(qū))鏡像加速器:
?騰訊云鏡像加速器:https:〃
?中國科學(xué)技術(shù)大學(xué):h(tps://docker.m
?網(wǎng)易云鏡像加速器:hitp:〃hub-mirror.c.163.com
?南京大學(xué)鏡像加速器:https:〃
(5)執(zhí)行拉取鏡像、顯示鏡像列表和查看鏡像構(gòu)建歷史信息的操作。
dockerpullubuntu:18.04
dockerimages
dockerhistoryubuntu:18.04
(6)基于hltpd鏡像以后臺方式運行Apache容器并對外開放80端口.
dockerrun-d-p80:80-nametestwebhttpd
(7)使用dockerexec命令進(jìn)入Apache容器查看當(dāng)前目錄。
dockerexec-ittestweb/bn/bash
(8)停止并刪除Apache容器。
dockerstoptestweb
dockerrmtestweb
實訓(xùn)2對Node.jsWeb應(yīng)用程序進(jìn)行容器化
實訓(xùn)目的
(D了解應(yīng)用程序容器化的基本步驟。
(2)學(xué)會應(yīng)用程序容器化的基本方法。
實訓(xùn)內(nèi)容
直接從源碼托管平臺克隆一個公告板應(yīng)用程序項目node-bulletin-board使用。
(1)創(chuàng)建項目目錄。
mkdirbulletin&&cdbulletin
(2)使用Gil工具將node-bulletin-board庫克隆到本地。
若實驗環(huán)境中沒有安裝Git客戶端,先執(zhí)行進(jìn)行安裝:
yuminstall-ygit
從GilHub網(wǎng)站獲取該項目。
(root@docker_devbulletir]#gitclone/docker-training/node-bulletin-board
正克隆到'node-bulletin-board'…
remote:Enumeratingobjects:213,done.
remote:Countingobjects:100%(23/23),done.
remote:Compressingobjects:100%(19/19),done.
remote:Total213(delta8),reused17(delta4),pack-reused190
接收對象中:100%(213/213),197.64KiB|602.00KiB/s,完成.
處理delta100%(90/90),完成.
(3)查看克隆到本地的應(yīng)用程序和Dockerfileo
[root@docker_devbulletir]#Is
node-bulletin-board
[root@docker_devbulletir]#cdnode-bulletin-board
[root@docker_devnode-bulletin-board)#Is
bulletin-board-appLICENSE
[root@docker_devnode-bulletin-board]#tree
|—bulletin-board-app
II-app.js
|—backend
III-api.js
|—events.js
||1-index.js
||—Dockerfile
||一fonts
1-geomanist
1—hin(ed-Geomanist-Book.woff2
|—index.html
||—LICENSE
|—package.json
|——readme.md
||—server.js
1-site.css
1-LICENSE
[root@docker_devnode-bulletin-board]#cdbulletin-board-app
[rnot@dnckfir_dftvhiillfitir-board-app]#catDcckarfila
FROMnode:6.11.5
WORKDIR/usr/src/app
COPYpackage.json.
RUNnpminstall
COPY..
CMD["opm","start"]
該項目從現(xiàn)有的nodc:6.11.5鏡像開始構(gòu)建,但是網(wǎng)絡(luò)環(huán)境限制,直接拉取官方node鏡
像比較困難,注意使用鏡像加速器解決鏡像無法拉取的問題。
(4)基于Dockerfile構(gòu)建鏡像。
[root@docker_devbulletir-board-app]#dockerbuild-tbulletinboard:1.0.
SendingbuildcontexttoDockerdaemon45.57kB
Step1/6:FROMnode:6.11.5
6.11.5:Pullingfromlibrar)7node
85b1f47fba49:Pullcomplete
ba6bd283713a:Pullcomplete
817c8cd48a09:Pullcomplete
47cc0ed96dc3:Pullcomplete
8888adcbd08b:Pullcomplete
6f2de60646b9:Pullcompete
1666693bf996:Pullcompete
2fe410df7942:Pullcomplete
Digest:sha256:fe109b92edafd9821fbc1c80fd7587a1b4e1ff76fec3af675869e23e50bbf45b
Status:Downloadednewerimagefornode:6.11.5
—>852391892b9f
Step2/6:WORKDIR/usr.'src/app
?>Runningin01963b7cf7f0
Removingintermediatecontainer01963b7cf7f0
-->72cf46a04400
Step3/6:COPYpackage.json.
—>a6d3d413a859
Step4/6:RUNnpminstall
一>Runningin3350ea014600
npmWARNdeprecatedq@1.5.1:YouorsomeoneyoudependonisusingQ,theJavaScriptPromise
librarythatgaveJavaScriptdevelopersstrongfeelingsaboutpromises.Theycanalmostcertainlymigrateto
thenativeJavaScriptpromisenow.Thankyouliterallyeveryoneforjoiningmeinthisbetagainsttheodds.Be
excellenttoeachother.
npmWARNdeprecated
npmWARNdeprecated(ForaCapTPwithnativepromises,see@endo/eventual-sencand
@endo/captp)
npmWARNdeprecatedglob@5.0.15:Globversionspriortov9arenolongersupported
npmWARNdeprecatedinflight@1.0.6:Thismoduleisnotsupported,andleaksmemory.Donotuseit.
CheckoutIru-cacheifyouwantagoodandtestedwaytocoalesceasyncrequestsbyakeyvalue,whichis
muchmorecomprehensiveandpowerful.
>ejs@2.7.4postinstall/usr/src/app/node_modules/ejs
>node./postinstall.js
vue-event-bulletin@1.0.0/usr/src/app
+-body-parser@1.20.2
|+-bytes@3.1.2
|+-content-type@1.0.5
|+-debug@2.6.9
IT-ms@2.0.0
|+-depd@2.0.0
I+-destroy@1.2.0
I+-http-errors@2.0.0
11+-inherits@2.0.4
|r-toidentifier@1.0.1
|+-iconv-lite@0.4.24
11safer-buffer@2.1.2
|+-on-finished@2.4.1
11ee-flrst@l.1.1
|+-qs@6.11.0
11side-channel@1.0.6
||+-call-bind@1.0.7
11|+--es-define-property@1.0.0
11|+-function-bind@1.1.2
11|set-function-length@1.2.2
11|+-define-data-property@1.1.4
11|+—gopd@1.0.1
11|has-property-descriptors@1.0.2
11+-es-errors@1.3.0
11+-get-intrinsic@1.24
11|+-has-proto@1.0.3
11|+-has-symbols@1.0.3
11|-hasown@2.0.2
11object-inspect@113.2
|+-raw-body@2.5.2
|+-type-is@1.6.18
11+-media-typer@0.3.0
||mime-types@2.1.35
11mime-db@1.52.0
|unpipe@1.0.0
+-bootstrap@3.4.1
+—ejs@2.7.4
+-errorhandler@1.5.1
+-accepts?.3.8
Inegotiator@0.6.3
escape-html@1.0.3
+-express@4.19.2
+-array-flatten@1.1.1
+-content-disposition@0.5.4
+-cookie@0.6.0
+-cookie-signature@1.0.6
+-encodeurl@1.0.2
+-etag@1.8.1
+-finalhandler@1.2.0
+-fresh@0.5.2
+-merge-descriptors?".0.1
+-methods@1.1.2
+-parseurl@1.3.3
+-path-to-regexp@0.17
+-proxy-addr@2.0.7
I+-forwarded@0.2.0
|-ipaddr.js@1.9.1
+-range-parser@1.2.1
+-sa能-buffer@5.2.1
+-send@0.18.0
|+-mlme@l.6.0
IT-ms@2.1.3
|+-serve-static@1.15.0
|+--setprototypeof@1.2.0
|+--statuses@2.0.1
|+-utils-merge@1.0.1
|vary@1.1.2
+-method-override@2.3.10
+-morgan@1.10.0
|+-basic-auth@2.0.1
11safe-buffer@5.1.2
|+--on-finished@2.3.0
|,-on-headers@1.0.2
+-vue@1.0.28
|envify@3.4.1
|+-jstransform@11.0.3
||+-base62@1.2.8
||+-commoner@0.10.8
|11+-commander@220.3
|11+-detective@4.7.1
|111+-acorn@5.7.4
|HI'-defined@1.0.1
|11+-glob@5.0.15
|111+-inflight@1.0.6
||||r-wrappy@1.0.2
|111+-minimatch@3.1.2
IIIIT-brace-expansion@1.1.11
IIHI+-balanced-natch@1.0.2
I||||concat-map@0.0.1
|111+-once@1.4.0
|III'—path-is-absolute@1.0.1
|11+-graceful-fs@4.211
|11+-mkdirp@0.5.6
|III,-minimist@1.2.8
|11+-private@0.1.8
I||+-q@1.5.1
||r-recast@0.11.23
|11+-ast-types@0.9.6
|11+-esprima@3.1.3
|11'-source-map@0.5.7
||+--esprima-fb@15001.1.0-dev-harmony-fb
I|+--object-assign@2.1.1
I|*-source-map@0.4.4
||amdefine@1.01
|,一through@2.3.8
'-vue-resource@0.1.17
npmWARNvue-event-builetln@l.0.0Norepositoryfield.
Removingintermediatecontainer3350ea014600
—>73d897307a01
Step5/6:COPY..
一4f8f8611a51cl
Step6/6:CMD["npm","start"]
—>Runningin499596b33106
Removingintermediatecontainer499596b83106
—>8a25ef93958a
Successfullybuilt8a25efS3958a
Successfullytaggedbulletinboard:1.0
(5)基于構(gòu)建的鏡像啟動容器。
[root@docker_devbulletin-board-app]#dockerrun-publish8000:8080-detach-namebulletinboard
bulletinboard:1.0
4bf78efdd73bba892af0df5756a4a9d114c415be9c2625176cfadb17540bb2b4
(6)在瀏覽器中訪問localhosi:8000實際測試公告板應(yīng)用程序。
BulletinBoard-MozillaFirefox-ox
BulletinBoardX+
<-)->GQ??localhost8000…0?lll\CD=
WelcometotheBulletinBoard
■DockerWorkshop
■2017-1121
LinuxinginLonodon
Deieie
■IWinOps#17
■2017-11-21
WinOpsLondon
Delete
,MlDockerLondon
S2017-11-13
(7)測試完畢后,停止并刪除該容器。
[root@docker_devbulletir-board-app]#dockerrm-forcebulle:inboard
bulletinboard
項目2部署Kubernetes集群
實訓(xùn)1使用kubeadm工具部署三節(jié)點Kubernetes集群
實訓(xùn)目的
(1)了解Kubernetes集群的組成。
(2)了解Kubernetes集群的部署方式。
(3)學(xué)會使用kubeadm工具快速部署Kubernetes集群。
實訓(xùn)內(nèi)容
建議參照任務(wù)2.1.1至任務(wù)2.1.6完成本實現(xiàn)任務(wù)。
(1)簡單規(guī)劃要部署的Kubernetes集群。
(2)準(zhǔn)備Kubernetes集群安裝環(huán)境(3個節(jié)點主機(jī)卜
安裝容器運行時containerd時要注意修改配置以解決鏡像下載問題。在Kubernetes中,默認(rèn)情
況下,Pod會從官方DockerHub拉取Docker鏡像,即docker.io鏡像倉庫。默認(rèn)情況下containerd
配置文件/etc/containerd/corfig.toml中相關(guān)設(shè)置如下:
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins.^io.contcinerd.grpc.vl.^'.registry.mirrors^docker.io"]
#沒有任何設(shè)置,containerd將直接從DockerHub拉取鏡像
考慮到國內(nèi)網(wǎng)絡(luò)限制,通常設(shè)置鏡像加速器來解決拉取Docker鏡像的問題。本教材編寫時給出
的一些鏡像加速器自從2024年6月開始不可用。
(plugins.',io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.contcinerd.grpc.v1.cri".registry.mirrors.Mdocker.io"]
endpoint=("","",
"https:〃","http://hub-mirror.c.163.com]
其中后面3個當(dāng)前皆不可用:
騰訊云
中國區(qū)鏡像
http://hub-mirror.c.163.com"網(wǎng)易
而Daocloud鏡像加速器:https://docker.rn.daocloud.io目前可用,建議將其加入鏡像加速器列
表,該設(shè)置改為:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.conteinerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint=f'https7/docker.m.daocloud.io",""]
(3)部署Kubernetes集群節(jié)點。
(4)安裝Pod網(wǎng)絡(luò)插件。
(5)通過部署Nginx來測試Kubernetes集群的使用。
(6)練習(xí)crictl命令的使用。
實訓(xùn)2安裝和使用KubernetesDashboard
實訓(xùn)目的
(1)了解KubernetesDashboard的基本功能。
(2)學(xué)會使用KubernetesDashboard對集群進(jìn)行可視化管理操作。
實訓(xùn)內(nèi)容
建議參照任務(wù)2.2.1和任務(wù)2.2.2完成本實現(xiàn)任務(wù)。
(1)準(zhǔn)備Kubernetes實驗環(huán)境。
(2)安裝KubernetesDashboardo
(3)獲取dashboard-admin服務(wù)賬戶的令牌并登錄Dashboard。
(4)熟悉Dashboard的基本操作。
(5)嘗試使用Dashboard部署Nginx?
(6)刪除所部署的應(yīng)用程序。
項目3熟悉Kubernetes基本操作
實訓(xùn)1操作指定名稱空間中對象的標(biāo)簽
實訓(xùn)目的
(1)了解Kubernetes名稱空間和對象的標(biāo)簽。
(2)學(xué)會Kubernetes名稱空間的基本用法。
(3)學(xué)會Kubernetes對象的基本操作。
實訓(xùn)內(nèi)容
注意本實訓(xùn)的對象操作都要指定名稱空間,在控制平面主機(jī)上執(zhí)行操作。
(1)準(zhǔn)備Kubernetes集群實驗環(huán)境。
(2)創(chuàng)建一個實驗用的名稱空間。
[root@master01kubectlcreatenamespacemyns
namespace/mynscreated
(3)在該名稱空間中創(chuàng)建一個Pod對象并為其添加標(biāo)簽app=testo
(root@master01-]#kubectlrunmynginx-image=nginx-Iapp=test-nmyns
pod/mynginxcreated
[root@master01-]#kubectlgetpod-show-labels-nmyns
NAMEREADYSTATUSRESTARTSAGELABELS
mynginx1/1Running02m34sapp=test
(4)將該對象的標(biāo)簽app=test修改為app=dev0
[root@master01kubectllabelpodmynginxapp=dev-overwrite
Errorfromserver(NotFound):pods"mynginx"notfound
(root@master01T#kubectllabelpodmynginxapp=dev--overwrite-nmyns
pod/mynginxlabeled
[root@master01-]#kubectlgetpod-show-labels-nmyns
NAMEREADYSTATUSRESTARTSAGELABELS
mynginx1/1Running04m19sapp=dev
(5)為該對象增加標(biāo)簽ver=1.5o
(root@master01-]#kubectllabelpodmynginxver=1.5-nmyns
pod/mynginxlabeled
(root@master01-]#kubectlgetpod--show-labels-nmyns
NAMEREADYSTATUSRESTARTSAGELABELS
mynginx1/1Running06m50sapp=dev,ver=1.5
(6)刪除該對象名為app的標(biāo)簽。
[root@mastert)1-]#kubectllabelpodmynginxapp--nmyns
pod/mynginxunlabeled
[root@master01-]#kubectlgetpod-show-labels-nmyns
NAMEREADYSTATUSRESTARTSAGELABELS
mynginx1/1Running07m52sver=1.5
(7)刪除該對象。
[root@mastert)1-]#kubectldeletepodmynginx-nmyns
pod"mynginx"deleted
[root@master01~]#kubectlgetpod-nmyns
Noresourcesfoundinmynsnamespace.
(8)刪除該名稱空間。
[root@master01-]#kubectldeletenamespacemyns
namespace"myns"deleted
實訓(xùn)2創(chuàng)建一個多容器Pod并進(jìn)行測試
實訓(xùn)目的
(1)了解多容器Podo
(2)增加對多容器Pod的認(rèn)識。
實訓(xùn)內(nèi)容
(1)參照任務(wù)3.3.1進(jìn)行操作。
(2)編寫定義Pod的配置文件,其中涉及的兩個容器分別運行Nginx和BusyBox,兩個容器
共享卷。
(3)基于該配置文件創(chuàng)建Podo
(4)查看Pod及其容寄的信息,以丫AML格式輸出。
(5)進(jìn)入Nginx容器的Shell,使用curl命令向Nginx服務(wù)器發(fā)起請求,以驗證結(jié)果。
(6)使用curl命令向Pod的IP地址發(fā)起請求,進(jìn)一步驗證結(jié)果。
(7)刪除該Podo
項目4部署和運行應(yīng)用程序
實訓(xùn)1使用Deployment運行Apache服務(wù)
實訓(xùn)目的
(1)了解Deployment的基本用法。
(2)學(xué)會使用Deployment運行和管理無狀態(tài)應(yīng)用程序。
實訓(xùn)內(nèi)容
(1)準(zhǔn)備Kubernetes集群實驗環(huán)境。
(2)使用Deployment創(chuàng)建有3個副本的httpd服務(wù)(使用httpd鏡像卜
編寫Deployment配置文件(文件名httpd-deployyaml):
apiVersion:apps/v1#版本號
kind:Deployment#類型為Deployment
metadata:#元數(shù)據(jù)
name:httpd-deploy
labels:#標(biāo)簽
app:httpd
spec:#詳細(xì)信息
replicas:3#副本數(shù)量
strategy:#策略
type:Rollingllpdate#滾動更新策略
rollingUpdate:#滾動更新設(shè)置
maxSurge:25%#更新過程中允許超出期望Pod副本數(shù)的Pod數(shù)量,用百分比或整數(shù)表示
maxUnavailable:25%#更新過程中不可用的Pod數(shù)?上限,用百分比或整數(shù)表示
selector:#選擇器,指定該控制器管理哪些Pod
matchLabels:#匹配規(guī)則
app:httpd
template:#定義模板,當(dāng)副本數(shù)量不足時會根據(jù)模板定義創(chuàng)建Pod副本
metadata:
labels;
app:httpd#Pod的標(biāo)簽
spec:
containers:#容器列表(本例僅定義一個容器)
-name:httpd#容器的名稱
image:httpd:2.2#容器所用的鏡像
ports:
-containerPort:80#容器需要暴露的端口
基于該文件創(chuàng)建創(chuàng)建Deployment:
[root@master01-]#kubectlapply-fhttpd-deploy.yaml
deployment.apps/httpd-deploycreated
查看和測試:
[root@mastert)1-]#kubectlgetdeployhttpd-deploy-owide
NAMEREADYUP-TO-DATEAVAILABLEAGECONTAINERSIMAGES
SELECTOR
httpd-deploy0/33040shttpdhttpd:2.2app=httpd
[root@master01kubectlgetdeployhttpd-deploy-owide
NAMEREADYUP-TO-DATEAVAILABLEAGECONTAINERSIMAGES
SELECTOR
httpd-deploy3/333116shttpdhttpd:2.2app=httpd
[root@master01~]#kubectlgetpods-owide
NAMEREADYSTATUSRESTARTS
AGEIPNODENOMINATEDNODEREADINESSGATES
httpd-deploy-7ffdc45d4-2>:h2c1/1Running067s
6node02<none><none>
httpd-deploy-7ffdc45d4-5zx521/1Running067s
22node02<none><none>
httpd-deploy-7ffdc45d4-vjk441/1Running067s
78node01<none><none>
[root@master01-]#curl6
<html><body><h1>ltworl(s!</h1></body></html>
(3)測試Deployment更新。
[root@master01-]#kubectlsetimagedeployment.vl.apps/httpd-deployhttpd=httpd:2.4.46
deployment.apps/httpd-deployimageupdated
(4)測試Deployment回滾。
[root@master01~]#kubectlrollouthistorydeployment/httpd-deploy
deployment.apps/httpd-deploy
REVISIONCHANGE-CAUSE
1<none>
2<none>
[root@master01-]#kubectlrolloutundodeployment/httpd-deploy
deployment.apps/httpd-deployrolledback
(5)將Deployment擴(kuò)容到5個副本。
(root@master01-]#kubectlscaledeployment/httpd-deploy-replicas=5
deployment.apps/httpd-deployscaled
[root@master01-]#kubectlgetdeployhttpd-deploy-owide
NAMEREADYUP-TO-DATEAVAILABLEAGECONTAINERSIMAGES
SELECTOR
httpd-deploy5/5559m15shttpdhttpd:2.2app=httpd
(6)將Deployment縮容到2個副本。
[root@master01-]#kubectlscaledeployment/httpd-deploy-replicas=2
deployment.apps/httpd-deployscaled
[root@master01-]#kubectlgetdeployhttpd-deploy-owide
NAMEREADYUP-TO-DATEAVAILABLEAGECONTAINERSIMAGES
SELECTOR
httpd-deploy2/2229m49shttpdhttpd:2.2app=httpd
(7)刪除Deploymento
[root@master01-]#kubectldelete-fhttpd-deploy.yaml
deployment.apps"httpd-deploy"deleted
詳細(xì)操作請參考任務(wù)4.1中的任務(wù)實現(xiàn)部分。
實訓(xùn)2使用DaemonSet在所有工作節(jié)點上部署Nginx
實訓(xùn)目的
(1)了解DaemonSet的基本用法。
(2)學(xué)會使用DaemonSet部署和管理集群守護(hù)進(jìn)程集。
實訓(xùn)內(nèi)容
(1)使用DaemonSet在每個工作節(jié)點上運行Nginxo
配置文件nginx-daemonset.yaml內(nèi)容如下:
apiVersion:apps/v1
kind:DaemonSet#資源類型為DaemonSet
metadata:
name:nginx-ds
labels:
k8s-app:nginx#DaemonSet資源的標(biāo)筌
spec:
selector:
matchLabels:#必須指定與spec.terrplate的標(biāo)簽匹配的Pod選擇運算符
name:nginx
template:#創(chuàng)建Pod副本所依據(jù)的模板
metadata:
labels:#Pod模板必須指定標(biāo)簽
name:nginx
spec:
tolerations:#容忍度設(shè)置,此處設(shè)置讓該守護(hù)進(jìn)程集在控制平面節(jié)點或主節(jié)點上運行
-key:node-role.kubernetes.io/control-plane
operator:Exists
effect:NoSchedule
-key:node-role.kubernetes.io/master
operator:Exists
effect:NoSchedule
containers:
-name:nginx
image:nginx:1.16.1#鏡像
基于該文件創(chuàng)建DaemonSet:
[root@master01~]#kubectlcreate-fnginx-daemonset.yaml
daemonset.apps/nginx-dscreated
[root@master01-]#kubectlgetdaemonsetnginx-ds-owide
NAMEDESIREDCURRENTREADYUP-TO-DATEAVAILABLENODE
SELECTORAGECONTAINERSIMAGESSELECTOR
nginx-ds33333<none>3m43s
nginxnginx:1.16.1rame=nginx
(2)驗證該DaemonSet的Pod的節(jié)點部署。
[root@mastert)1-]#kubectlgetpods-owide
NAMEREADYSTATUSRESTARTS
AGEIPNODENOMINATEDNODEREADINESSGATES
nfs-client-provisioner-bfbc644fc-zq5sw1/1Running15(123mago)62d
73nodeOl<none><none>
nginx-ds-2skg91/1Running04m19s
81nodeOl<none><none>
nginx-ds-g4l5w1/1Running04m19s
09masterOI<none><none>
(3)測試DaemonSet更新。
[root@mastert)1~]#kubectlgetds/nginx-ds-ogo-template='{{spec.updateStrategy.type}}{f\n"}}'
RollingUpdate
(root@master01-]#kubectlsetimageds/nginx-dsnginx=nginx:1.17.2
daemonset.apps/nginx-dsimageupdated
[root@master01~]#kubectlrolloutstatusds
Waitingfordaemonset"nginx-ds"rollouttofinish:1outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:1outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:1outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:2outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:2outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:2outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:2outof3newpodshavebeenupdated...
Waitingfordaemonset"nginx-ds"rollouttofinish:2of3updatedpodsareavailable...
daemonset"nginx-ds"successfullyrolledout
[root@master01-]#kubectlgetdaemonsetnginx-ds-owide
NAMEDESIREDCURRENTREADYUP-TO-DATEAVAILABLENODE
SELECTORAGECONTAINERSIMAGESSELECTOR
nginx-ds33333<none>10mnginx
nginx:1.17.2name=nginx
(4)測試DaemonSet回滾。
(root@master01kubectlrollouthistoryds/nginx-ds
daemonset.apps/nginx-ds
REVISIONCHANGE-CAUSE
1<none>
2<none>
(root@master01-]#kubectlrolloutundods/nginx-ds-to-revision=1
daemonset.apps/nginx-dsrolledback
(root@master01-]#kubectlrolloutstatusds
daemonset"nginx-ds"successfullyrolledout
[root@mastert)1kubectlgetdaemonsetnginx-ds-owide
NAMEDESIREDCURRENTREADYUP-TO-DATEAVAILABLENODE
SELECTORAGECONTAINERSIMAGESSELECTOR
nginx-ds33333<none>12mnginx
nginx:1.16.1name=nginx
(5)刪除DaemonSet對象。
[root@mastert)1~]#kubectldelete-fnginx-daemonset.yaml
daemonset.apps"nginx-ds"deleted
項目5發(fā)布應(yīng)用程序
實訓(xùn)1使用Service發(fā)布Apache服務(wù)并考察Service工作機(jī)制
實訓(xùn)目的
(1)了解Service的概念和基本用法。
(2)學(xué)會使用Service對外發(fā)布應(yīng)用程序。
實訓(xùn)內(nèi)容
參考任務(wù)5.1.2創(chuàng)建NodePort類型的Service并發(fā)布Apache服務(wù)。
(1)編寫Deployment配置文件,基于該配置文件運行兩個副木的Apache(使用httpd鏡像卜
配置文件httpd-deploy.yaml:
apiVersion:apps/v1#版本號
kind:Deployment#類型為Deployment
metadata:#元數(shù)據(jù)
name:httpd-deploy
labels:#標(biāo)簽
app:httpd-deploy
spec:#詳細(xì)信息
replicas:2#副本數(shù)量
selector:#選擇器,指定該控制器管理哪些Pod
matchLabels:#匹配規(guī)則
app:httpd-pod
template:#定義模板,當(dāng)副本數(shù)■不足時會根據(jù)模板定義創(chuàng)建Pod副本
metadata:
labels:
app:httpd-pod#Pod的標(biāo)簽
spec:
containers:#容器列表(本例僅定義一個容器)
-name:httpd#容器的名稱
image:httpd:2.4.46#容器所用的鏡像
ports:
-name:httpd-port
containerPort:80
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025秋蘇少版(2024)初中美術(shù)七年級上冊知識點及期末測試卷及答案
- 護(hù)理課件:皮膚護(hù)理的未來趨勢
- (新教材)2026年滬科版八年級下冊數(shù)學(xué) 17.5 一元二次方程的應(yīng)用 課件
- 2025年辦公樓宇安防合作合同
- 設(shè)備安全防護(hù)裝置配置規(guī)范
- 基于知識圖譜的資源關(guān)聯(lián)挖掘方法
- 人工智能在智能投顧中的應(yīng)用-第4篇
- 2026 年中職救援技術(shù)(救援技能)技能測試題
- 英語第二單元試題及答案
- 網(wǎng)紅經(jīng)濟(jì)對大學(xué)生從眾消費行為的扎根理論研究
- 2026湖北恩施州建始縣教育局所屬事業(yè)單位專項招聘高中教師28人備考筆試試題及答案解析
- 心肺康復(fù)課件
- 2025人民法院出版社社會招聘8人(公共基礎(chǔ)知識)測試題附答案解析
- 2025年山東省夏季普通高中學(xué)業(yè)水平合格考試物理試題(解析版)
- 2024屆高考地理一輪復(fù)習(xí)+課件+工業(yè)區(qū)位因素
- 標(biāo)準(zhǔn)作業(yè)指導(dǎo)書模板(SOP)
- 科室質(zhì)控小組活動內(nèi)容及要求
- 圖形創(chuàng)意應(yīng)用課件
- 北京師范大學(xué)珠海校區(qū)
- 豎窯控制系統(tǒng)手冊
- 煤礦投資可行性研究分析報告
評論
0/150
提交評論