《Kubernetes集群实战(微课版)》项目实训参考指导_第1页
《Kubernetes集群实战(微课版)》项目实训参考指导_第2页
《Kubernetes集群实战(微课版)》项目实训参考指导_第3页
《Kubernetes集群实战(微课版)》项目实训参考指导_第4页
《Kubernetes集群实战(微课版)》项目实训参考指导_第5页
已阅读5页,还剩49页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

^Kubernetes集群实战(微课版)》

项目实训参考指导

项目1从Docker转向Kubernetes

实训1安装DockerEngine并进行镜像和容器的基本操作

实训目的

(I)了解Docker版本和安装方式。

(2)掌握DockerEngine的安装方法。

(3)掌握镜像和容器的基本操作方法。

实训内容

建议参照任务1.1.1道过Docker的软件仓库安装Docker;参照任务1.2.1操作镜像和容

器。

(1)准备Docker安装环境。

操作系统选择CentOSStream8或CenlOSStream9;

更改主机名;

修改网络连接配置;

禁用防火墙和SELinux;

更改时区。

(2)设置Docker软件仓库。

yuminstall-yyum-utils

yum-config-manager-add-repo\

/docker-ce/linux/centos/docker-ce.repo

(3)安装DockerEngine软件包。

如果运行的是CentOSStream8,则需要先卸载默认的容器引擎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镜像进行测试。

systemctlstartdocker

dockerrunhello-world

因国内网络环境限制,实际应用中我们会遇到无法拉取Docker镜像的情况。最简单的

解决方案是使用镜像加速器。推荐使用以下镜像加速器:

•Daocloud镜像加速器:https://docker.rn.daocloud.io

•阿里云镜像加速器:hitps:〃XXXXX.mirror.aliyuncs.com

•华为云镜像加速器:XXXXX.mirror.swr.myhuaw

阿里云和华为云需要登录账号,获取特定的镜像加速器地址。

•需要注意的是,之前一些常用的镜像加速器已变得不好用,列举如下:

•Docker官方镜像(中国区)镜像加速器:

•腾讯云镜像加速器:https:〃

•中国科学技术大学:h(tps://docker.m

•网易云镜像加速器:hitp:〃hub-mirror.c.163.com

•南京大学镜像加速器:https:〃

(5)执行拉取镜像、显示镜像列表和查看镜像构建历史信息的操作。

dockerpullubuntu:18.04

dockerimages

dockerhistoryubuntu:18.04

(6)基于hltpd镜像以后台方式运行Apache容器并对外开放80端口.

dockerrun-d-p80:80-nametestwebhttpd

(7)使用dockerexec命令进入Apache容器查看当前目录。

dockerexec-ittestweb/bn/bash

(8)停止并删除Apache容器。

dockerstoptestweb

dockerrmtestweb

实训2对Node.jsWeb应用程序进行容器化

实训目的

(D了解应用程序容器化的基本步骤。

(2)学会应用程序容器化的基本方法。

实训内容

直接从源码托管平台克隆一个公告板应用程序项目node-bulletin-board使用。

(1)创建项目目录。

mkdirbulletin&&cdbulletin

(2)使用Gil工具将node-bulletin-board库克隆到本地。

若实验环境中没有安装Git客户端,先执行进行安装:

yuminstall-ygit

从GilHub网站获取该项目。

(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)查看克隆到本地的应用程序和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"]

该项目从现有的nodc:6.11.5镜像开始构建,但是网络环境限制,直接拉取官方node镜

像比较困难,注意使用镜像加速器解决镜像无法拉取的问题。

(4)基于Dockerfile构建镜像。

[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)基于构建的镜像启动容器。

[root@docker_devbulletin-board-app]#dockerrun-publish8000:8080-detach-namebulletinboard

bulletinboard:1.0

4bf78efdd73bba892af0df5756a4a9d114c415be9c2625176cfadb17540bb2b4

(6)在浏览器中访问localhosi:8000实际测试公告板应用程序。

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集群

实训1使用kubeadm工具部署三节点Kubernetes集群

实训目的

(1)了解Kubernetes集群的组成。

(2)了解Kubernetes集群的部署方式。

(3)学会使用kubeadm工具快速部署Kubernetes集群。

实训内容

建议参照任务2.1.1至任务2.1.6完成本实现任务。

(1)简单规划要部署的Kubernetes集群。

(2)准备Kubernetes集群安装环境(3个节点主机卜

安装容器运行时containerd时要注意修改配置以解决镜像下载问题。在Kubernetes中,默认情

况下,Pod会从官方DockerHub拉取Docker镜像,即docker.io镜像仓库。默认情况下containerd

配置文件/etc/containerd/corfig.toml中相关设置如下:

[plugins."io.containerd.grpc.v1.cri".registry]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]

[plugins.^io.contcinerd.grpc.vl.^'.registry.mirrors^docker.io"]

#没有任何设置,containerd将直接从DockerHub拉取镜像

考虑到国内网络限制,通常设置镜像加速器来解决拉取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个当前皆不可用:

腾讯云

中国区镜像

http://hub-mirror.c.163.com"网易

而Daocloud镜像加速器:https://docker.rn.daocloud.io目前可用,建议将其加入镜像加速器列

表,该设置改为:

[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集群节点。

(4)安装Pod网络插件。

(5)通过部署Nginx来测试Kubernetes集群的使用。

(6)练习crictl命令的使用。

实训2安装和使用KubernetesDashboard

实训目的

(1)了解KubernetesDashboard的基本功能。

(2)学会使用KubernetesDashboard对集群进行可视化管理操作。

实训内容

建议参照任务2.2.1和任务2.2.2完成本实现任务。

(1)准备Kubernetes实验环境。

(2)安装KubernetesDashboardo

(3)获取dashboard-admin服务账户的令牌并登录Dashboard。

(4)熟悉Dashboard的基本操作。

(5)尝试使用Dashboard部署Nginx©

(6)删除所部署的应用程序。

项目3熟悉Kubernetes基本操作

实训1操作指定名称空间中对象的标签

实训目的

(1)了解Kubernetes名称空间和对象的标签。

(2)学会Kubernetes名称空间的基本用法。

(3)学会Kubernetes对象的基本操作。

实训内容

注意本实训的对象操作都要指定名称空间,在控制平面主机上执行操作。

(1)准备Kubernetes集群实验环境。

(2)创建一个实验用的名称空间。

[root@master01kubectlcreatenamespacemyns

namespace/mynscreated

(3)在该名称空间中创建一个Pod对象并为其添加标签app=testo

(root@master01-]#kubectlrunmynginx-image=nginx-Iapp=test-nmyns

pod/mynginxcreated

[root@master01-]#kubectlgetpod-show-labels-nmyns

NAMEREADYSTATUSRESTARTSAGELABELS

mynginx1/1Running02m34sapp=test

(4)将该对象的标签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)为该对象增加标签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的标签。

[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

实训2创建一个多容器Pod并进行测试

实训目的

(1)了解多容器Podo

(2)增加对多容器Pod的认识。

实训内容

(1)参照任务3.3.1进行操作。

(2)编写定义Pod的配置文件,其中涉及的两个容器分别运行Nginx和BusyBox,两个容器

共享卷。

(3)基于该配置文件创建Podo

(4)查看Pod及其容寄的信息,以丫AML格式输出。

(5)进入Nginx容器的Shell,使用curl命令向Nginx服务器发起请求,以验证结果。

(6)使用curl命令向Pod的IP地址发起请求,进一步验证结果。

(7)删除该Podo

项目4部署和运行应用程序

实训1使用Deployment运行Apache服务

实训目的

(1)了解Deployment的基本用法。

(2)学会使用Deployment运行和管理无状态应用程序。

实训内容

(1)准备Kubernetes集群实验环境。

(2)使用Deployment创建有3个副本的httpd服务(使用httpd镜像卜

编写Deployment配置文件(文件名httpd-deployyaml):

apiVersion:apps/v1#版本号

kind:Deployment#类型为Deployment

metadata:#元数据

name:httpd-deploy

labels:#标签

app:httpd

spec:#详细信息

replicas:3#副本数量

strategy:#策略

type:Rollingllpdate#滚动更新策略

rollingUpdate:#滚动更新设置

maxSurge:25%#更新过程中允许超出期望Pod副本数的Pod数量,用百分比或整数表示

maxUnavailable:25%#更新过程中不可用的Pod数・上限,用百分比或整数表示

selector:#选择器,指定该控制器管理哪些Pod

matchLabels:#匹配规则

app:httpd

template:#定义模板,当副本数量不足时会根据模板定义创建Pod副本

metadata:

labels;

app:httpd#Pod的标签

spec:

containers:#容器列表(本例仅定义一个容器)

-name:httpd#容器的名称

image:httpd:2.2#容器所用的镜像

ports:

-containerPort:80#容器需要暴露的端口

基于该文件创建创建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扩容到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

详细操作请参考任务4.1中的任务实现部分。

实训2使用DaemonSet在所有工作节点上部署Nginx

实训目的

(1)了解DaemonSet的基本用法。

(2)学会使用DaemonSet部署和管理集群守护进程集。

实训内容

(1)使用DaemonSet在每个工作节点上运行Nginxo

配置文件nginx-daemonset.yaml内容如下:

apiVersion:apps/v1

kind:DaemonSet#资源类型为DaemonSet

metadata:

name:nginx-ds

labels:

k8s-app:nginx#DaemonSet资源的标筌

spec:

selector:

matchLabels:#必须指定与spec.terrplate的标签匹配的Pod选择运算符

name:nginx

template:#创建Pod副本所依据的模板

metadata:

labels:#Pod模板必须指定标签

name:nginx

spec:

tolerations:#容忍度设置,此处设置让该守护进程集在控制平面节点或主节点上运行

-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#镜像

基于该文件创建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的节点部署。

[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发布应用程序

实训1使用Service发布Apache服务并考察Service工作机制

实训目的

(1)了解Service的概念和基本用法。

(2)学会使用Service对外发布应用程序。

实训内容

参考任务5.1.2创建NodePort类型的Service并发布Apache服务。

(1)编写Deployment配置文件,基于该配置文件运行两个副木的Apache(使用httpd镜像卜

配置文件httpd-deploy.yaml:

apiVersion:apps/v1#版本号

kind:Deployment#类型为Deployment

metadata:#元数据

name:httpd-deploy

labels:#标签

app:httpd-deploy

spec:#详细信息

replicas:2#副本数量

selector:#选择器,指定该控制器管理哪些Pod

matchLabels:#匹配规则

app:httpd-pod

template:#定义模板,当副本数■不足时会根据模板定义创建Pod副本

metadata:

labels:

app:httpd-pod#Pod的标签

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论