《Kubernetes集群實戰(zhàn)(微課版)》項目實訓(xùn)參考指導(dǎo)_第1頁
《Kubernetes集群實戰(zhàn)(微課版)》項目實訓(xùn)參考指導(dǎo)_第2頁
《Kubernetes集群實戰(zhàn)(微課版)》項目實訓(xùn)參考指導(dǎo)_第3頁
《Kubernetes集群實戰(zhàn)(微課版)》項目實訓(xùn)參考指導(dǎo)_第4頁
《Kubernetes集群實戰(zhàn)(微課版)》項目實訓(xùn)參考指導(dǎo)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論