版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Kubernetes基础对象1Pod是kubernetes中可以创建和部署的最小也是最简的单位。Pod代表着集群中运行的进程。Pod中有一个或多个容器,Pod有管理容器如何运行的策略选项。Pod的生命周期是短暂的,用后即焚的实体。当Pod被创建后,都会被Kubernetes调度到集群的Node上。如果Pod运行的Node故障,或者是调度器本身故障,这个Pod就会被删除。同样的,如果Pod所在Node缺少资源或者Pod处于维护状态,Pod也会被驱逐。Kubernetes使用更高级的称为Controller的抽象层,来管理Pod实例。单元概述工作中不会直接在PaaS平台运行容器,而是以Pod为单位对应用进行部署。一个Pod可以包含一个或多个容器,Pod中的容器肯定是在同一台主机中绝不会跨节点。我们为什么需要Pod?Pod能够解决什么问题呢?如何通过Pod合理管理容器?Pod将容器捆绑在一起,并将他们作为一个单元进行管理。一个Pod中的容器都在相同的network和UTS命名空间运行。它们之间共享相同的主机名和网络。在同一个集群中Pod之间是可以直接通信的。每个Pod都会有自己的IP地址。单元概述目录03任务yaml形式查看应用查看kind的类型04任务01任务kubenetes对象管理K8S基础对象构成02任务05任务生成yaml资源模板06任务命名空间功能学习目标【知识目标】●了解Kubernetes的基础对象;●掌握namespace的功能。1K8S基础对象构成1对象表示整个集群的状态,用来描述如下信息:哪些容器化应用正在运行,以及在哪些节点上运行可以被应用使用的资源关于应用运行时表现的策略,比如重启策略、升级策略以及容错策略K8S基础对象构成1apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:selector:matchLabels:app:nginxreplicas:2K8S基础对象构成template:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.14.2ports:-containerPort:80yaml示例文件1创建Kubernetes对象的yaml文件中,需要配置的字段如下:apiVersion
创建该对象所使用的KubernetesAPI的版本kind
想要创建的对象的类别metadata
帮助唯一标识对象的一些数据,包括一个
name
字符串、UID
和可选的namespacespec
你所期望的该对象的状态K8S基础对象构成2yaml形式查看应用2[root@node-1~]#kubectlgetdeployments.appsapp-demo-oyamlapiVersion:apps/v1kind:Deploymentmetadata:annotations:deployment.Kubernetes.io/revision:"1"creationTimestamp:"2020-07-15T02:33:47Z"generation:1yaml形式查看应用3查看kind的类型3显示k8s集群中的所有api资源信息[root@node-1~]#kubectlapi-resourcesNAMESHORTNAMES
APIGROUPNAMESPACED
KINDbindings
true
Bindingcomponentstatuses
cs
false
ComponentStatusconfigmapscm
true
ConfigMapendpointsep
true
Endpointsevents
ev
true
Event。。。查看kind的类型3显示k8s集群中的所有api资源信息#kubectlapi-resources参数说明:NAME:api资源名称;SHORTNAMES:api资源名称简写;APIGROUP:api分组管理;NAMESPACED:是否可使用命名空间隔离,true是,false否;KIND:api资源类型;查看kind的类型4kubenetes对象管理4kubenetes对象管理指令式:对象的参数通过命令指定配置式:对象的参数通过YAML配置文件指定
指令式对象配置:命令中指定具体操作
声明式对象配置:命令中不指定具体操作,通过kubectl自动检测对象并
自动进行创建、更新和删除操作图形化方式API编程方式5生成yaml资源模板5[root@node-1~]#kubectlcreatedeploymenttest--image=nginx:1.7.9--dry-run=client-oyaml>test.yaml参数说明:#-oyaml输出yaml格式#>xxx.yaml将输出内容导入指定的yaml文件生成yaml资源模板5[root@node-1~]#kubectlapply-ftest.yamldeployment.apps/testcreated[root@node-1~]#kubectlgetdeployments.appsNAMEREADYUP-TO-DATEAVAILABLEAGEapp-demo1/11147happ-nginx-demo4/44442hdashboard-demo3/33317htest1/11129s生成yaml资源模板运行yaml文件5通过yaml文件[root@node-1~]#kubectldelete-ftest.yamldeployment.apps"test"deleted直接指定资源名称[root@node-1~]#kubectldeletedeployments.appstest生成yaml资源模板删除test应用的两种方式6命名空间功能6Kubernetes平台可以划分多个逻辑空间,逻辑空间就是namespaces;Namespace将同一集群中的资源划分为相互隔离的组;同一Namespace内的资源名称要唯一;Namespace作用域仅针对带有Namespace的对象,例如Deployment、Service等;
Kubernetes中的对象并不是所有的都在命名空间下,有的是属于集群级别的,例如StorageClass、Node、PersistentVolume等。命名空间功能6[root@node-1~]#kubectlgetnamespacesNAME
STATUSdefault
Activekube-node-lease
Activekube-public
Activekube-system
ActiveKubernetes-dashboard
Active命名空间功能查看系统默认的namespaces6命令行指定[root@node-1~]#kubectlgetpods-nkube-systemNAME
READYSTATUSRESTARTSAGEcalico-kube-controllers-11a5574d89-k4n851/1
Running1
24hcalico-node-a68mk
1/1
Running0
12d1hcalico-node-opsls
1/1
Running1
5d7hyaml文件指定[root@node-1~]#vicalico.yamlnamespace:kube-system命名空间功能指定namespaces6[root@node-1~]#kubectlapi-resources--namespaced=trueNAMESHORTNAMES
APIGROUPNAMESPACED
KINDbindings
true
Bindingconfigmapscm
true
ConfigMapendpointsep
true
Endpointseventsev
true
Event命名空间功能查看namespace下的对象资源6[root@node-1~]#kubectlapi-resources--namespaced=falseNAMESHORTNAMESAPIGROUPNAMESPACEDKINDcomponentstatusescsfalseComponentStatusnamespacesnsfalseNamespacenodesnofalseNodepersistentvolumespvfalsePersistentVolumes命名空间功能查看集群级别的对象资源6命令行创建[root@node-1~]#kubectlcreatenamespacedemo--dry-run=client-oyamlyaml文件创建[root@node-1~]#vimnamespaces-demo.yamlapiVersion:v1kind:Namespacemetadata:name:demospec:[root@node-1~]#kubectlapply-fnamespaces-demo.yaml命名空间功能namespaces创建6[root@node-1~]#kubectlgetnsdemo-oyamlapiVersion:v1kind:Namespacemetadata:annotations:kubectl.Kubernetes.io/last-applied-configuration:|{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"demo"},"spec":null}命名空间功能查看命名空间的定义详情ThankYOU!Kubernetes基础对象2目录标签的定义和使用01任务标签和标签选择器02任务学习目标【知识目标】●掌握标签的使用。【技能目标】●能够给资源定义标签;●能够通过标签管理一组资源1标签和标签选择器1键值对类型的数据Key=Value,可以附着在任何资源对象上;可以在资源对象被创建时就指定,或者是在资源对象创建后添加;一个资源对象可以拥有多个标签,多个资源对象也可拥有相同的标签标签的特点标签和标签选择器标签1每个对象都可以定义一组键/值标签;每个键对于给定对象必须是唯一的;标签能够支持高效的查询和监听操作。标签和标签选择器标签的特点1Key的定义可以使用字母、数字而下划线,连字符以及点号,但是只能够以字符或者是数字开头;Value可以为空,也可以使用字母、数字、连字符以及点好,但是首尾必须使用数字或者是字母。标签和标签选择器标签格式1标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义;
标签可以用于组织和选择对象的子集;Label标签可以标识一个资源;标签使用户能够以松散耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。标签和标签选择器标签的作用1
"release":"stable"或"release":"canary""environment":"dev"或"environment":"qa""tier":"frontend"或"tier":"backend""partition":"customerA"或"partition":"customerB""track":"daily"或
"track":"weekly"标签和标签选择器标签示例1通过标签选择器,客户端和用户可以识别一组对象;API目前支持两种类型的选择器:基于等值的和基于集合的;
标签选择算符可以由逗号分隔的多个需求组成;
在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑与(&&)运算符。标签和标签选择器标签选择器1空标签选择器或者未指定的选择器的语义取决于上下文,支持使用选择器的API类别应该将算符的合法性和含义用文档记录下来。标签和标签选择器标签选择器1[root@node-1~]#kubectlgetpods-nkube-system--show-labelsNAME
READYSTATUSRESTARTSAGE
LABELScalico-kube-controllers-76d4774d89-k4n851/1Running1
44h
k8s-app=calico-kube-controllers,pod-template-hash=76d4774d89calico-node-c47mj
1/1Running0
2d19h
controller-revision-hash=56c64ccfb5,k8s-app=calico-node,pod-template-generation=1calico-node-jfgnf
1/1Running1
2d19h
controller-revision-hash=56c64ccfb5,k8s-app=calico-node,pod-template-generation=1标签和标签选择器查看标签lables1[root@node-1~]#kubectlgetpods-nkube-system--show-labels|grepcalico-nodecalico-node-c47mj1/1Running02d19hcontroller-revision-hash=56c64ccfb5,k8s-app=calico-node,pod-template-generation=1calico-node-jfgnf
1/1Running12d19hcontroller-revision-hash=56c64ccfb5,k8s-app=calico-node,pod-template-generation=1calico-node-r9ch71/1Running12d19hcontroller-revision-hash=56c64ccfb5,k8s-app=calico-node,pod-template-generation=1标签和标签选择器过滤查看calico的标签labels1命令行方式[root@node-1~]#kubectlgetpods-nkube-system-lk8s-app=calico-nodeNAMEREADYSTATUSRESTARTSAGEcalico-node-c47mj1/1Running02d19hcalico-node-jfgnf1/1Running12d19hcalico-node-r9ch71/1Running12d19hyaml文件方式[root@node-1~]#kubectlgetservicesapp-demo-oyamlselector:app:app-demo标签和标签选择器通过标签筛选资源2标签的定义和使用2使用kubectl定位apiserver,可以使用基于等值的标签选择器:kubectlgetpods-lenvironment=production,tier=frontend或者使用基于集合的需求:kubectlgetpods-l'environmentin(production),tierin(frontend)'标签的定义和使用常用的标签定义方式2基于集合实现值的或操作:kubectlgetpods-l'environmentin(production,qa)'或者通过notin运算符限制不匹配:kubectlgetpods-l'environment,environmentnotin(frontend)'标签的定义和使用常用的标签定义方式2标签的定义和使用标签定义和使用案例[root@node-1~]#vimtest.yaml。。。spec:replicas:1selector:matchLabels:app:testenvironment:productversion:1.7.9strategy:{}template:metadata:creationTimestamp:nulllabels:app:testenvironment:productversion:1.7.92执行yaml文件如下:[root@node-1~]#kubectlapply-ftest.yamldeployment.apps/testcreated标签的定义和使用常用的标签定义方式2查看应用标签和pod标签[root@node-1~]#kubectlgetdeployments.apps--show-labels-ndemoNAMEREADYUP-TO-DATEAVAILABLEAGELABELStest
1/1
1
1
49s
app=test,environment=product,version=1.7.9[root@node-1~]#kubectlgetpods--show-labels-ndemo\NAME
READYSTATUSRESTARTSAGELABELStest-cdd9f47-w7qpm
1/1
Running0
68s
app=test,environment=product,pod-template-hash=cdd9f47,version=1.7.9标签的定义和使用常用的标签定义方式2修改pod副本数量:[root@node-1~]#vitest.yamlspec:replicas:3标签的定义和使用常用的标签定义方式2执行yaml文件如下:[root@node-1~]#kubectlapply-ftest.yamldeployment.apps/testconfigured[root@node-1~]#kubectlgetpods-ndemoNAME
READYSTATUSRESTARTSAGEtest-cdd9f47-6cswn
1/1
Running0
12stest-cdd9f47-m5w8c1/1
Running
0
12stest-cdd9f47-w7qpm1/1
Running0
3m28s标签的定义和使用常用的标签定义方式2通过标签查看资源[root@node-1~]#kubectlgetpods-ndemo-lversion=1.7.9NAMEREADYSTATUSRESTARTSAGEtest-cdd9f47-6cswn1/1Running036stest-cdd9f47-m5w8c1/1Running036stest-cdd9f47-w7qpm1/1Running03m52s标签的定义和使用常用的标签定义方式2显示资源标签[root@node-1~]#kubectlgetpods-ndemo-lversion=1.7.9--show-labelsNAME
READYSTATUSRESTARTSAGE
LABELStest-cdd9f47-6cswn1/1
Running0
66s
app=test,environment=product,pod-template-hash=cdd9f47,version=1.7.9test-cdd9f47-m5w8c1/1
Running0
66s
app=test,environment=product,pod-template-hash=cdd9f47,version=1.7.9test-cdd9f47-w7qpm1/1
Running0
4m22s
app=test,environment=product,pod-template-hash=cdd9f47,version=1.7.9标签的定义和使用常用的标签定义方式ThankYOU!Kubernetes基础对象3目录字段选择器01任务注解和注释说明02任务03任务推荐标签学习目标【知识目标】●了解Kubernetes的基础对象;●掌握字段选择器的使用;●了解推荐标签的使用。1注解和注释说明1注解的形式:键值对
key:values注解的作用:解释和说明存放临时数据注解和注释说明注解
annotations1注解和注释说明添加注解[root@node-1~]#kubectlgetnodesnode-1-oyamlapiVersion:v1kind:Nodemetadata:
annotations:kubeadm.alpha.Kubernetes.io/cri-socket:/var/run/dockershim.socknode.alpha.Kubernetes.io/ttl:"0"/IPv4Address:0/24/IPv4IPIPTunnelAddr:28volumes.Kubernetes.io/controller-managed-attach-detach:"true"creationTimestamp:"2020-07-14T07:56:23Z"labels:beta.Kubernetes.io/arch:amd64beta.Kubernetes.io/os:linuxKubernetes.io/arch:amd64Kubernetes.io/hostname:node-1Kubernetes.io/os:linuxnode-role.Kubernetes.io/master:""1注解和注释说明添加注解[root@node-1~]#vitest-pod.yamlapiVersion:v1kind:Podmetadata:name:annotations-demo
annotations:imageregistry:"/"spec:containers:-name:nginximage:nginx:1.14.2ports:-containerPort:80下边是一个Pod的配置文件,其注解中包含
imageregistry的访问地址1注解和注释说明添加注解[root@node-1~]#vitest.yamlapiVersion:apps/v1kind:Deploymentmetadata:creationTimestamp:nulllabels:app:testenvironment:productversion:1.7.9
annotations:
imageregistry:0:5000nginx.version:1.7.9name:testnamespace:demo下面是一个Deployment的配置文件,其注解中包含
imageregistry的访问地址和nginx的版本1执行yaml文件如下:[root@node-1~]#kubectlapply-ftest.yamldeployment.apps/testconfigured[root@node-1~]#kubectlgetdeployments.apps-ndemo-oyaml。。。annotations:deployment.Kubernetes.io/revision:"1"imageregistry:0:5000kubectl.Kubernetes.io/last-applied-configuration:|{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{"imageregistry":"0:5000","nginx.version":"1.7.9"},"creationTimestamp":null,"labels":{"app":"test","environment":"product","version":"1.7.9"},"name":"test","namespace":"demo"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"test","environment":"product","version":"1.7.9"}},"strategy":{},"template":{"metadata":{"creationTimestamp":null,"labels":{"app":"test","environment":"product","version":"1.7.9"}},"spec":{"containers":[{"image":"nginx:1.7.9","name":"nginx","resources":{}}]}}},"status":{}}nginx.version:1.7.9creationTimestamp:"2020-07-20T01:45:49Z"generation:3注解和注释说明查看注解2字段选择器2下面这个
kubectl
命令将筛选出
status.phase
字段值为
Running
的所有Pod:[root@node-1~]#kubectlgetpods--field-selectorstatus.phase=Running字段选择器字段选择器
selector2默认情况下,字段选择器未被应用kubectlgetpods
和
kubectlgetpods--field-selector
查询等效字段选择器2不同的Kubernetes资源类型支持不同的字段选择器;所有资源类型都支持
和
space
字段;使用不被支持的字段选择器会产生错误。字段选择器支持的字段2错误示例:[root@node-1~]#kubectlgetingress--field-selectorfoo.bar=bazErrorfromserver(BadRequest):Unabletofind"ingresses"thatmatchlabelselector"",fieldselector"foo.bar=baz":"foo.bar"isnotaknownfieldselector:only"","space"字段选择器支持的字段2在字段选择器中使用=、==
和
!=
(=
和
==
的意义是相同的)操作符。下面这个kubectl命令将筛选所有不属于default命名空间的Kubernetes服务:[root@node-1~]#kubectlgetservices--all-namespaces--field-selectorspace!=default字段选择器支持的操作符2字段选择器可以通过使用逗号分隔的列表组成一个选择链。下面这个
kubectl
命令将筛选
status.phase
字段不等于
Running
同时
spec.restartPolicy
字段等于
Always
的所有Pod:[root@node-1~]#kubectlgetpods--field-selector=status.phase!=Running,spec.restartPolicy=Always字段选择器链式选择器2可以跨多种资源类型来使用字段选择器。下面这个
kubectl
命令将筛选出所有不在
default
命名空间中的StatefulSet和Service:[root@node-1~]#kubectlgetstatefulsets,services--all-namespaces--field-selectorspace!=default字段选择器多种资源类型2过滤podIP字段[root@node-1~]#kubectlgetpods-ndemo-oyamlpodIP:7[root@node-1~]#kubectlgetpods--field-selectorstatus.podIP=7-ndemo-owideNAME
READYSTATUSRESTARTSAGE
IP
NODENOMINATEDNODEREADINESSGATEStest-cdd9f47-6cswn1/1
Running0
117m7node-2<none>
<none>字段选择器字段选择器案例2过滤phase=Running[root@node-1~]#kubectlgetpods--field-selectorstatus.phase=RunningNAME
READYSTATUSRESTARTSAGEapp-demo-76f6796dcc-ll7m6
1/1
Running0
5d1happ-nginx-demo-d96686864-rvn6g
1/1
Running0
4d17happ-nginx-demo-d96686864-trjnk
1/1
Running0
139mapp-nginx-demo-d96686864-vvft8
1/1
Running0
139mapp-nginx-demo-d96686864-wjjc4
1/1
Running0
4d17hdashboard-demo-c8c9df95b-5nwth
1/1
Running0
139mdashboard-demo-c8c9df95b-pmbn61/1
Running0
3d18hdashboard-demo-c8c9df95b-vc8xx
1/1
Running0
3d18hnginx-app-demo
1/1
Running0
5d1h字段选择器字段选择器案例3推荐标签3推荐标签推荐标签推荐标签使管理应用程序变得更容易,但不是任何核心工具所必需的3推荐标签简单的无状态服务下面的Deployment用于监督运行应用本身的那些Pod。apiVersion:apps/v1kind:Deploymentmetadata:labels:app.Kubernetes.io/name:myserviceapp.Kubernetes.io/instance:myservice-abcxzy。。。3推荐标签下面的
Service
用于暴露应用。apiVersion:v1kind:Servicemetadata:labels:app.Kubernetes.io/name:myserviceapp.Kubernetes.io/instance:myservice-abcxzy。。。简单的无状态服务3推荐标签一个使用Helm安装的WordPress应用,其中使用了MySQL数据库。以下代码片段说明用于部署此应用程序的对象的开始。以下
Deployment
的开头用于WordPress:apiVersion:apps/v1kind:Deploymentmetadata:labels:app.Kubernetes.io/name:wordpressapp.Kubernetes.io/instance:wordpress-abcxzyapp.Kubernetes.io/version:"4.9.4"app.Kubernetes.io/managed-by:helmapp.Kubernetes.io/component:serverapp.Kubernetes.io/part-of:wordpress...带数据库的Web应用程序3推荐标签Service
用于暴露WordPress:apiVersion:v1kind:Servicemetadata:labels:app.Kubernetes.io/name:wordpressapp.Kubernetes.io/instance:wordpress-abcxzyapp.Kubernetes.io/version:"4.9.4"app.Kubernetes.io/managed-by:helmapp.Kubernetes.io/component:serverapp.Kubernetes.io/part-of:wordpress...带数据库的Web应用程序3推荐标签MySQL作为一个
StatefulSet
暴露,包含它和它所属的较大应用程序的元数据:apiVersion:apps/v1kind:StatefulSetmetadata:labels:app.Kubernetes.io/name:mysqlapp.Kubernetes.io/instance:mysql-abcxzyapp.Kubernetes.io/version:"5.7.21"app.Kubernetes.io/managed-by:helmapp.Kubernetes.io/component:databaseapp.Kubernetes.io/part-of:wordpress...带数据库的Web应用程序3推荐标签Service
用于将MySQL作为WordPress的一部分暴露:apiVersion:v1kind:Servicemetadata:labels:app.Kubernetes.io/name:mysqlapp.Kubernetes.io/instance:mysql-abcxzyapp.Kubernetes.io/version:"5.7.21"app.Kubernetes.io/managed-by:helmapp.Kubernetes.io/component:databaseapp.Kubernetes.io/part-of:wordpress...带数据库的Web应用程序ThankYOU!Kubernetes基础对象-Pod1目录explain语法解析器01任务Pod基础概念02任务03任务如何创建pod学习目标【知识目标】掌握Kubernetes资源对象pod的基本使用。【技能目标】能够使用Kubernetesexplain语法解析器;能够完成Kubernetespod资源的创建。基础概念包括:namespace,labels,annotations,pods,volumes等;核⼼概念包含Kubernetes中各种controller,包含以下⼏种:应⽤副本控制器有:Deployments,ReplicaSets,DaemonSets,StatefulSets;批处理任务控制器Jobs和CronJob;存储控制器PersistentVoloume,PersistentVolumeClaim,StorageClass;服务负载均衡Service,Ingress,NetworkPolicy和DNS名称解析;配置和密钥ConfigMaps和Secrets。Kubernetes对象注解1Pod基础概念1Pod
是可以在Kubernetes中创建和管理的、最小的可部署的计算单元,是一组容器,这些容器共享存储、网络、以及怎样运行这些容器的声明。Pod中的内容总是并置的并且一同调度,在共享的上下文中运行。Pod的共享上下文包括一组Linux名字空间、控制组(cgroup)和可能一些其他的隔离方面,即用来隔离容器的技术。在Pod的上下文中,每个独立的应用可能会进一步实施隔离。Pod基础概念1Pod被设计成支持形成内聚服务单元的多个协作过程(形式为容器)。Pod中的容器被自动安排到集群中的同一物理机或虚拟机上,并可以一起进行调度。容器之间可以共享资源和依赖、彼此通信、协调何时以及何种方式终止自身。Pod天生地为其成员容器提供了两种共享资源:网络和存储。Pod基础概念资源共享1包含一个或多个应用容器包含在Pod启动期间运行的Init容器Pod基础概念Pod容器1Pod被设计成了相对临时性的、用后即抛的一次性实体。
Pod被调度在集群中的节点上运行后,直到Pod结束执行、Pod对象被删
Pod因资源不足而被驱逐或者节点失效为止都会保持在该节点上运行。
重启Pod中的容器不应与重启Pod混淆。
Pod不是进程,而是容器运行的环境。Pod基础概念1容器是⼀种便携式,轻量级别的容器虚拟化技术,使⽤linuxcggroup技术实现各种资源的隔离,如cpu,memory,pid,mount,IPC等,相⽐于虚拟化技术如KVM,容器技术更加轻量级,它的产⽣主要解决环境的环境发布的问题。Pod基础概念Container和Pod概念1容器的镜像存储在私有镜像或者公有镜像中,运⾏时通过dockerimagepull的⽅式拉取到本地运⾏,images的拉取策略包含有两种:ImagePullPolicy为Always,不管本地是否有直接下载ImagePullPolicy为IfNotPresent,默认镜像拉取得策略,本地不存在再拉取Pod基础概念Container和Pod概念1Pods是Kubernetes中最⼩的调度单位,Pods内运⾏⼀个或者多个container,container之间共享pod的⽹络ip资源,存储volume资源,计算等资源,⽅便pod内部的container之间能够实现快速的访问和交互。Pod基础概念Container和Pod概念1Pod的使⽤⽅式通常包含两种:Pod中运⾏⼀个容器,最经常使⽤的模式,container封装在pod中调度,两者⼏乎等同,但k8s不直接管理容器Pod中运⾏多个容器,多个容器封装在pod中⼀起调度,适⽤于容器之间有数据交互和调⽤的场景,如app+redis,pod内部共享相同的⽹络命名空间,存储命名空间,进程命名空间等。Pod基础概念Container和Pod概念1Pod基础概念Pod的生命周期Pending阶段Running阶段Succeeded阶段Failed
阶段1Pod基础概念Pod的生命周期Pod在其生命周期中只会被调度一次。
一旦Pod被调度到某个节点,Pod会一直在该节点运行,直到Pod停止或者被终止。Pod是相对临时性的实体。Pod会被创建、赋予一个唯一的ID,并被调度到节点,根据重启策略并在终止或删除之前一直运行在该节点。如果节点宕机,调度到该节点的Pod也被计划在给定超时期限结束后被删除。1Pod基础概念Pod的生命周期Pod自身不具有自愈能力。Kubernetes使用一种高级抽象来管理这些相对而言可随时丢弃的Pod实例,称作为控制器。如果某对象声称其生命期与某个Pod相同,例如存储卷,这就意味着该对象在此Pod存在期间也一直存在。如果Pod因为任何原因被删除,甚至完全相同的替代Pod被创建时,这个相关的对象(存储卷)也会被删除并重建。2explain语法解析器2Explain语法解析器主要用于查看资源对象的详细信息,一般用于编写yaml文件的提示。查看pod资源对象完整的语法explain语法解析器2查看资源对象pod的spec字段[root@node-1~]#kubectlexplainpods.spec查看资源对象pod的spec字段容器的详情信息[root@node-1~]#kubectlexplainpods.spec.containersexplain语法解析器3如何创建pod3如何创建podpod定义由这么几个部分组成:首先是YAML中使用的KubernetesAPI版本和YAML描述的资源类型,其次就是几乎在所有Kubernetes资源中都可以找到的三大重要部分:metadata:包括名称,命名空间,标签和关于该容器的其他信息。spec:包含pod内容的实际说明,例如pod的容器,卷和其他数据。status:包含运行中的pod的当前信息,例如pod所处的条件,每个容器的描述和状态,以及内部IP和其他基本信息。定义Pod3如何创建pod编写pod-demo.yaml文件[root@node-1~]#vipod-demo.yamlapiVersion:v1kind:Podmetadata:name:exmple-podannotations:poduse:"thisismyfirstpod"labels:app:nginxversion:1.7.9spec:containers:##pod里运行的容器-name:exmple-nginx##pod里运行的容器名称image:nginx:1.7.9##pod里运行的容器的镜像名称ports:-name:http-80containerPort:80##pod里运行容器监听的端口protocol:TCP创建第一个Pod3如何创建pod[root@node-1~]#kubectlapply-fpod-demo.yamlpod/exmple-podcreated[root@node-1~]#kubectlgetpodexmple-pod1/1Running07s运行Pod3如何创建podPod状态3如何创建pod查看Pod详细信息[root@node-1~]#kubectldescribepodexmple-pod[root@node-1~]#kubectlgetpodsexmple-pod-oyamlThankYOU!Kubernetes基础对象-Pod2目录容器启动命令和参数01任务容器镜像拉取策略02任务03任务容器的重启策略04任务pod定义多个容器学习目标【知识目标】掌握Kubernetes资源对象pod的基本使用。【技能目标】能够完成Kubernetespod资源的创建、配置。1容器镜像拉取策略1Kubernetes支持配置三种拉取策略:IfNotPresent:只有当镜像在本地不存在时才会拉取。Always:每次创建Pod都会重新拉取一次镜像Never:Pod不会主动拉取这个镜像,仅使用本地镜像。容器镜像拉取策略1如果省略imagePullPolicy字段,容器镜像的标签是
:latest,imagePullPolicy会自动设置为Always。没有指定容器镜像的签,imagePullPolicy会自动设置为Always。为容器镜像指定了非
:latest
的标签,imagePullPolicy就会自动设置为IfNotPresent。容器镜像拉取策略imagePullPolicy字段1注意:容器的imagePullPolicy的值是在对象初次创建时设置的,如果后来镜像的标签发生变化,则不会更新。容器镜像拉取策略imagePullPolicy字段1想总是强制执行拉取,可以使用下述的一中方式:设置容器的imagePullPolicy为Always。省略imagePullPolicy,并使用:latest作为镜像标签;当你提交Pod时,Kubernetes会将策略设置为Always。省略imagePullPolicy和镜像的标签;当你提交Pod时,Kubernetes会将策略设置为Always。启用准入控制器AlwaysPullImages。容器镜像拉取策略imagePullPolicy字段1查看exmple-pod的镜像拉取策略:[root@node-1~]#kubectlgetpodsexmple-pod-oyamlspec:containers:-image:nginx:1.7.9imagePullPolicy:IfNotPresent容器镜像拉取策略配置拉取策略1将镜像拉取策略改为always:[root@node-1~]#vipod-demo.yaml。。。spec:containers:-name:exmple-nginximage:nginx:1.7.9imagePullPolicy:Always。。。容器镜像拉取策略配置拉取策略1删除原exmple-pod的资源对象:[root@node-1~]#kubectldeletepodexmple-podpod"exmple-pod"deleted容器镜像拉取策略配置拉取策略1通过yaml文件创建pod资源:[root@node-1~]#kubectlapply-fpod-demo.yamlpod/exmple-podcreated容器镜像拉取策略配置拉取策略1查看pod资源的详细信息:[root@node-1~]#kubectldescribepodexmple-podEvents:TypeReasonAgeFromMessage-------------------------NormalScheduled55sdefault-schedulerSuccessfullyassigneddefault/exmple-podtonode-2NormalPulling54skubelet,node-2Pullingimage"nginx:1.7.9"NormalPulled40skubelet,node-2Successfullypulledimage"nginx:1.7.9"NormalCreated40skubelet,node-2Createdcontainerexmple-nginxNormalStarted40skubelet,node-2Startedcontainerexmple-nginx容器镜像拉取策略配置拉取策略1将镜像拉取策略改为ifNotPresent并重建Pod[root@node-1~]#vipod-demo.yamlimagePullPolicy:IfNotPresent[root@node-1~]#kubectldeletepodexmple-podpod"exmple-pod"deleted[root@node-1~]#kubectlapply-fpod-demo.yamlpod/exmple-podcreated容器镜像拉取策略配置拉取策略1查看pod资源的详细信息:[root@node-1~]#kubectldescribepodexmple-podEvents:TypeReasonAgeFromMessage-------------------------NormalScheduled66sdefault-schedulerSuccessfullyassigneddefault/exmple-podtonode-2NormalPulled65skubelet,node-2Containerimage"nginx:1.7.9"alreadypresentonmachineNormalCreated65skubelet,node-2Createdcontainerexmple-nginxNormalStarted65skubelet,node-2Startedcontainerexmple-nginx容器镜像拉取策略配置拉取策略1省略imagePullPolicy:[root@node-1~]#vipod-demo.yamlspec:containers:-name:exmple-nginximage:nginxports:-name:http-80containerPort:80protocol:TCP容器镜像拉取策略配置拉取策略1[root@node-1~]#kubectldeletepodexmple-podpod"exmple-pod"deleted[root@node-1~]#[root@node-1~]#kubectlapply-fpod-demo.yaml[root@node-1~]#kubectldescribepodexmple-podEvents:TypeReasonAgeFromMessage-------------------------NormalScheduled47sdefault-schedulerSuccessfullyassigneddefault/exmple-podtonode-2NormalPulling46skubelet,node-2Pullingimage"nginx"容器镜像拉取策略配置拉取策略1省略imagePullPolicy,并使用:latest作为镜像标签:[root@node-1~]#vipod-demo.yamlspec:containers:-name:exmple-nginximage:nginx:latest容器镜像拉取策略配置拉取策略1创建pod资源并查看pod详细信息:[root@node-1~]#kubectldeletepodexmple-podpod"exmple-pod"deleted[root@node-1~]#kubectlapply-fpod-demo.yamlpod/exmple-podcreated[root@node-1~]#[root@node-1~]#kubectldescribepodexmple-podEvents:TypeReasonAgeFromMessage-------------------------NormalScheduled23sdefault-schedulerSuccessfullyassigneddefault/exmple-podtonode-2NormalPulling22skubelet,node-2Pullingimage"nginx:latest"容器镜像拉取策略配置拉取策略2容器启动命令和参数2创建Pod时可以为其下的容器设置启动时要执行的命令及其参数。
设置命令--填写在配置文件的command字段下,
设置命令的参数--填写在配置文件的args字段下。一旦Pod创建完成,该命令及其参数就无法再进行更改了。容器启动命令和参数2配置文件中设置的容器启动时要执行的命令及其参数会覆盖镜像中自带的命令与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年唐山幼儿师范高等专科学校单招综合素质考试题库附答案详解(综合卷)
- 2026年四川交通职业技术学院单招职业技能考试题库及答案详解(网校专用)
- 2026年四川体育职业学院单招职业技能考试题库含答案详解(b卷)
- 2026年四川体育职业学院单招职业适应性测试题库及一套完整答案详解
- 商业地产行业市场研究
- 中耳炎的药物研发动态
- 2025制造业数字化转型发展报告
- 儿科引流管护理要点
- 化疗药物过敏反应的应急处理
- 2026河南郑州十一中教育集团郑东校区(86中)招聘笔试备考题库及答案解析
- 120调度员基础知识课件
- 磷石膏无害化治理和综合利用项目可行性研究报告方案
- 校园快递外卖管理制度
- 2025年7月辽宁省普通高中学业水平合格性考试生物试题(原卷版)
- 2025年三轮电动车项目市场调查研究报告
- 医用化学(第三版)课件 -第14章 醇酚醚
- 儿童除颤课件
- (北京科电)GEX-2000技术使用说明(出版)
- 供电所所长讲安全课
- 医院感染管理办法全文
- 国家职业技术技能标准 X2-10-07-17 陶瓷产品设计师(试行)劳社厅发200633号
评论
0/150
提交评论