版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Kubernetes集群实战(微课版)工业和信息化精品系列教材——云计算技术项目3
熟悉Kubernetes基本操作能力CAPACITY要求了解Kubernetes对象和资源学会Kubernetes对象的创建和基本操作熟悉kubectl命令的语法并掌握其基本用法了解Pod的概念和实现机制学会创建和管理Pod任务3.2使用kubectl命令任务3.1理解和使用Kubernetes对象任务3.3创建和管理Pod任务3.1理解和使用Kubernetes对象任务说明01OPTION02OPTION03OPTION了解Kubernetes对象和资源的概念了解Kubernetes对象的描述方法了解Kubernetes对象管理方法04OPTION初步掌握Kubernetes对象的创建方法05OPTION学会使用Kubernetes对象的标签06OPTION学会使用Kubernetes名称空间任务3.1理解和使用Kubernetes对象相关知识3.1.1什么是Kubernetes对象任务3.1理解和使用Kubernetes对象相关知识3.1.2Kubernetes对象的规约和状态spec——指定对象的规约(规格),是必需的字段,用于描述对象的期望状态(DesiredState)。status——描述对象的当前状态(CurrentState),由Kubernetes系统和组件设置并更新。Kubernetes控制平面一直都在积极地管理着对象的实际状态(ActualState),让对象达成所期望的状态。任务3.1理解和使用Kubernetes对象相关知识3.1.3描述Kubernetes对象#必需字段,声明对象使用的API版本apiVersion:apps/v1#必需字段,声明要创建的对象的类别kind:Deployment#必需字段,定义对象的元信息,包括对象名称、使用的标签等metadata:name:nginx-deployment任务3.1理解和使用Kubernetes对象相关知识3.1.3描述Kubernetes对象#必需字段,声明对象的期望状态,如使用的镜像、副本数等spec:selector:matchLabels:app:nginxreplicas:2#运行2个与该模板匹配的Podtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.14.2ports:-containerPort:80任务3.1理解和使用Kubernetes对象相关知识3.1.4Kubernetes对象管理方法管理方法说明示例适用场景指令式命令通过操作指令的形式直接操作Kubernetes对象,所操作的对象在命令的参数中直接指定,操作结果由Kubernetes系统实时管理,不提供配置更改的历史记录kubectlcreatedeploymentnginx--imagenginx项目开发阶段,或在Kubernetes中运行一次性任务,简单易用指令式对象配置将指令发给配置文件,配置文件必须包含YAML或JSON格式的对象完整定义,被操作的对象会由Kubernetes按照配置文件中的定义进行创建或更改kubectlcreate-fnginx.yaml适合生产项目,通过代码管理系统进行管理,可以与流程集成声明式对象配置将对象的定义保存在配置文件,但是并不指定要对该文件执行的操作,对对象执行的操作(create、update、patch、delete)由Kubernetes自动检测出来。基于目录工作,根据目录中若干配置文件执行不同的操作,通过kubectlapply命令应用配置文件来实现kubectlapply-fconfigs/适合生产项目,但使用难度较高,难于调试任务3.1理解和使用Kubernetes对象相关知识3.1.5对象的名称和UID每一个对象都有一个名称来标识在同类资源中的唯一性。名称在同一资源的所有API版本中必须是唯一的。每个对象都有一个不同的UID来标识该对象在整个集群中的唯一性。UID是Kubernetes自动为对象生成的,可以唯一标识该对象的字符串。任务3.1理解和使用Kubernetes对象相关知识3.1.6标签和注解标签标签以键值对的形式附加到各种对象上。一个对象可以定义任意数量的标签,同一个标签也可以被添加到任意数量的对象上。任务3.1理解和使用Kubernetes对象相关知识3.1.6标签和注解标签选择器基于等值的选择器environment=productiontier!=frontend基于集合的选择器environmentin(production,qa)tiernotin(frontend,backend)
partition!partition任务3.1理解和使用Kubernetes对象相关知识3.1.6标签和注解注解使用注解为Kubernetes对象附加任意的非标识的元数据。注解使用键值对的形式进行定义。"metadata":{"annotations":{"key1":"value1","key2":"value2"}}任务3.1理解和使用Kubernetes对象相关知识3.1.7名称空间名称空间进一步组织和划分资源。名称空间为名称提供了一个范围。部分全局资源是不属于任何名称空间。名称空间适用于存在很多跨多个团队或项目的用户的场景。任务3.1理解和使用Kubernetes对象任务实现任务3.1.1创建Kubernetes对象使用指令式命令创建Deployment对象#kubectlcreatedeploymentnginx--imagenginx:1.14.2deployment.apps/nginxcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx1/11151s#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-896b88869-bmchg1/1Running076s#kubectldeletedeploymentnginxdeployment.apps"nginx"deleted任务3.1理解和使用Kubernetes对象任务实现任务3.1.1创建Kubernetes对象使用指令式对象配置创建Deployment对象#kubectlcreate-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment2/2222m41s#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-deployment-7fb96c846b-6pgv91/1Running02m52snginx-deployment-7fb96c846b-sqrdr1/1Running02m52s#kubectldelete-f/k8sapp/03/nginx-deployment.yamldeployment.apps"nginx-deployment"deleted任务3.1理解和使用Kubernetes对象任务实现任务3.1.1创建Kubernetes对象使用声明式对象配置创建Deployment对象#kubectlapply-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentcreated#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment2/22236s修改该YAML文件,将其中的副本数定义修改为3。#kubectlapply-f/k8sapp/03/nginx-deployment.yamldeployment.apps/nginx-deploymentconfigured#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment3/333106s任务3.1理解和使用Kubernetes对象任务实现任务3.1.1创建Kubernetes对象使用声明式对象配置创建Deployment对象#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx-deployment-7fb96c846b-4cmnr1/1Running0118snginx-deployment-7fb96c846b-mrr9n1/1Running034snginx-deployment-7fb96c846b-njfbf1/1Running0118s#kubectldelete-f/k8sapp/03/nginx-deployment.yamldeployment.apps"nginx-deployment"deleted任务3.1理解和使用Kubernetes对象任务实现任务3.1.2操作对象的标签为对象添加标签创建名为nginx-a的Pod对象并为其添加标签app=nginx。#kubectlrunnginx-a--image=nginx-lapp=nginxpod/nginx-acreated编写Pod配置文件nginx-label.yaml。apiVersion:v1kind:Podmetadata:name:nginx-blabels:#为Pod设置两个Labelapp:nginxenv:prodspec:containers:-name:nginximage:nginx基于该配置文件创建Pod对象。#kubectlcreate-f/k8sapp/03/nginx-label.yamlpod/nginx-bcreated任务3.1理解和使用Kubernetes对象任务实现任务3.1.2操作对象的标签修改对象的标签#kubectllabelpodnginx-aenv=debug--overwritepod/nginx-alabeled修改对象的标签#kubectllabelpodnginx-aversion-pod/nginx-aunlabeled操作具有指定标签的对象#kubectldeletepod-lapp=nginxpod"nginx-a"deletedpod"nginx-b"deleted任务3.1理解和使用Kubernetes对象任务实现任务3.1.3操作名称空间查看集群中当前所有的名称空间列表#kubectlgetnamespacesNAMESTATUSAGEdefaultActive22d#默认名称空间kube-node-leaseActive22d#用于与各节点相关的租约(Lease)对象kube-publicActive22d#主要由集群使用kube-systemActive22d#系统创建对象所使用的名称空间kubernetes-dashboardActive22d#Dashboard所用名称空间任务3.1理解和使用Kubernetes对象任务实现任务3.1.3操作名称空间通过配置文件创建名称空间编写配置文件test-ns.yaml。apiVersion:v1kind:Namespacemetadata:name:test-ns基于该配置文件创建名为test-ns的名称空间。#kubectlcreate-f/k8sapp/03/test-ns.yamlnamespace/test-nscreated#kubectlgetnamespacetest-nsNAMESTATUSAGEtest-nsActive13s任务3.2使用kubectl命令任务3.1理解和使用Kubernetes对象任务3.3创建和管理Pod任务3.2使用kubectl命令任务说明01OPTION02OPTION03OPTION了解kubectl命令的基本用法了解kubectl命令的语法要素熟悉kubectl命令的基本使用任务3.2使用kubectl命令相关知识3.2.1kubectl命令的基本用法kubectl[command][TYPE][NAME][flags]command——对资源执行操作的子命令,如create、get、describe、delete。TYPE——要操作的资源(或对象)类型。NAME——要操作的资源的名称。任务3.2使用kubectl命令相关知识3.2.2kbectl常用子命令子命令用法说明applykubectlapply-fFILENAME[flags]从配置文件或stdin对资源应用配置更改attachkubectlattachPOD-cCONTAINER[-i][-t][flags]挂接到正在运行的容器,查看输出流或与容器(stdin)交互createkubectlcreate-fFILENAME[flags]从配置文件或stdin对创建资源deletekubectldelete(-fFILENAME|TYPE[NAME|/NAME|-llabel|--all])[flags]基于文件、标准输入或通过指定标签选择器、名称、资源选择器或资源本身,删除资源describekubectldescribe(-fFILENAME|TYPE[NAME_PREFIX|/NAME|-llabel])[flags]显示资源的详细状态execkubectlexecPOD[-cCONTAINER][-i][-t][flags][--COMMAND[args...]]对Pod中的容器执行命令任务3.2使用kubectl命令相关知识3.2.3kbectl所支持的资源类型资源名称缩写名API分组及其版本是否属于名称空间资源类型configmapscmv1是ConfigMapendpointsepv1是Endpointseventsevv1是Eventnamespacesnsv1否Namespacenodesnov1否Nodepersistentvolumeclaimspvcv1是PersistentVolumeClaimpersistentvolumespvv1否PersistentVolumepodspov1是Podsecrets
v1是Secretservicessvcv1是Servicedaemonsetsdsapps/v1是DaemonSetdeploymentsdeployapps/v1是Deploymentreplicasetsrsapps/v1是ReplicaSetstatefulsetsstsapps/v1是StatefulSetcronjobscjbatch/v1是CronJobjobs
batch/v1是Jobeventsevevents.k8s.io/v1是Eventeventsevevents.k8s.io/v1是Eventstorageclassesscstorage.k8s.io/v1否StorageClass任务3.2使用kubectl命令相关知识3.2.4kbectl命令输出格式输出格式说明-ocustom-columns=<spec>以逗号分隔的自定义列列表输出-ocustom-columns-file=<filename>使用文件中的自定义列模板输出-ojson输出JSON格式的API对象-ojsonpath=<template>输出jsonpath表达式定义的字段-ojsonpath-file=<filename>输出文件中jsonpath表达式定义的字段-oname仅输出资源名称-owide以纯文本格式输出,包含所有附加信息。以Pod为例,输出包含所在节点的信息-oyaml输出YAML格式的API对象任务3.2使用kubectl命令任务实现任务3.2.1熟悉kubectl命令的使用获取kubectl命令的帮助信息kubectl<command>--help执行kubectloptions命令可以查看全局选项。执行kubectlapi-resources命令查看所支持的资源列表。使用kubectl命令行补全功能#yuminstallbash-completion-y#source/usr/share/bash-completion/bash_completion#source<(kubectlcompletionbash)任务2.2部署和使用KubernetesDashboard任务实现任务3.2.2使用kubectl命令辅助生成YAML文件获取特定资源及其字段的规范kubectlexplainresource[.field]...查看特定字段的规范#kubectlexplainpods.spec.containersKIND:PodVERSION:v1......RESOURCE:containers<[]Object>FIELDS:args <[]string>......自动生成YAML文件#kubectlcreatedeploymentnginx-deploy--image=nginx-oyaml--dry-run=client>nginx-deploy.yaml任务3.2使用kubectl命令任务3.1理解和使用Kubernetes对象任务3.3创建和管理Pod任务3.3创建和管理Pod任务说明01OPTION02OPTION03OPTION了解Pod与容器的关系了解Pod的定义了解Pod的生命周期与健康检查机制04OPTION学会创建多容器的Pod05OPTION掌握Pod的基本配置方法任务3.3创建和管理Pod相关知识3.3.1什么是PodPod是Kubernetes创建或部署的最小单位。Pod相当于容器集合,类似于共享名称空间并共享文件系统卷的一组容器。Pod具有联网功能。Pod具有存储功能。Pod被创建后用一个UID来唯一标识,当Pod生命周期结束,被一个等价Pod替代,UID将重新生成。任务3.3创建和管理Pod相关知识3.3.2Pod与容器为什么要使用Pod代替容器作为部署的最小单元容器通常遵循单一性原则。为避免给容器本身额外增加新的属性,Kubernetes引入Pod。一个Pod封装一个或多个容器、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。任务3.3创建和管理Pod相关知识3.3.2Pod与容器Pod单一容器Pod多容器
Pod任务3.3创建和管理Pod相关知识3.3.2Pod与容器初始化容器在Pod的应用容器(主容器)启动之前要运行的容器,主要完成应用容器的前置工作。提供应用容器镜像中不具备的程序或自定义代码。为应用容器的成功启动提供依赖的前提条件。任务3.3创建和管理Pod相关知识3.3.3Pod的定义apiVersion:v1#API版本号kind:Pod#资源类型Podmetadata:#元数据
name:string#Pod名称
namespace:string#Pod所属的名称空间,默认为defaultlabels:#自定义标签
-name:stringspec:#Pod中容器的详细定义(规约)
containers:#容器列表
-name:string#容器名称
image:string#容器的镜像名称
imagePullPolicy:[Always|Never|IfNotPresent]#获取镜像的策略
command:[string]#容器的启动命令......restartPolicy:[Always|Never|OnFailure]#设置重启策略任务3.3创建和管理Pod相关知识3.3.4Pod的生命周期Pod的阶段Pending(挂起)Running(正在运行)Succeeded(已成功)Failed(已失败)Unknown(未知)任务3.3创建和管理Pod相关知识3.3.4Pod的生命周期容器状态Running(正在运行)Terminated(已终止)Waiting(等待)容器重启策略AlwaysOnFailureNever任务3.3创建和管理Pod相关知识3.3.4Pod的生命周期Pod的状况状况说明PodScheduled调度就绪,Pod已经被调度到某节点PodHasNetwork网络就绪,Pod沙箱被成功创建并且配置了网络ContainersReadyPod中所有容器都已就绪Initialized所有的初始化容器都已成功完成ReadyPod可以为请求提供服务,并且应该被添加到对应服务的负载均衡池中任务3.3创建和管理Pod相关知识3.3.5Pod的健康检查机制探测器探测结果Success(成功)Failure(失败)Unknown(未知)探测器类型livenessProbe(存活探测器)readinessProbe(就绪探测器)startupProbe(启动探测器)探测机制exechttpGettcpSocket任务3.3创建和管理Pod任务实现任务3.3.1创建多容器的Pod(1)创建定义Pod的配置文件two-containers-pod.yaml。apiVersion:v1kind:Podmetadata:name:two-containers-podspec:#Pod级配置
restartPolicy:Nevervolumes:#定义共享数据的卷
-name:shared-dataemptyDir:{}#emptyDir类型的卷
containers:#容器级配置
#第1个容器配置
-name:nginx-containerimage:nginxvolumeMounts:#挂载共享卷
-name:shared-datamountPath:/usr/share/nginx/html#挂载路径任务3.3创建和管理Pod任务实现任务3.3.1创建多容器的Pod(1)创建定义Pod的配置文件two-containers-pod.yaml。#第2个容器配置
-name:busybox-containerimage:busyboxvolumeMounts:#挂载共享卷
-name:shared-datamountPath:/pod-data#挂载路径
#容器启动命令及参数
command:["/bin/sh"]args:["-c","echoHellofromthebusyboxcontainer>/pod-data/index.html"]任务3.3创建和管理Pod任务实现任务3.3.1创建多容器的Pod(2)基于上述配置文件创建Pod。#kubectlapply-f/k8sapp/03/two-containers-pod.yaml(3)查看Pod及其容器的信息。#kubectlgetpodtwo-containers-pod--output=yaml(4)进入nginx容器的Shell,使用curl向Nginx服务器发起请求。kubectlexec-ittwo-containers-pod-cnginx-container--/bin/bashroot@two-containers:/#curllocalhostHellofromthebusyboxcontainer(5)使用curl向Pod的IP地址发起请求。#curl6Hell
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度授权协议:品牌授权使用合同
- 二零二四年度品牌营销策略合作合同
- 年度耕地指标出让交易合同书2024
- 年度环保服务合作协议(二零二四版)
- 2024年度商场开业气球装饰布置合同
- 医疗服务招标合同三篇
- 纳米载体生物相容性评价
- 二零二四年度战略合作合同书
- 2024年度汽车座套广告位租用合同书2篇
- 康复科患者康复方案设计计划
- 职业生涯规划书机电一体化
- 潘玉春种猪体型外貌鉴定
- 药品经营与管理职业生涯规划
- JCT 929-2023 叶蜡石 (正式版)
- 医院骨科专病数据库建设需求
- 贷款营销具体措施和方法
- 五年级上册数学试题-第四单元-多边形的面积-测试卷-北师大版(含答案)
- 汤显祖《牡丹亭·游园》品读课件
- 高中化学学法指导
- 2024届高考语文复习:小说叙述特色专题复习 课件
- 护士进修汇报感染性疾病的预防与处理
评论
0/150
提交评论