我们来主要看一下pod。spec。containers的属性,这也是pod配置最重要的一环〔qqk8snode1〕kubectlexplainpod。spec。containersKIND:PodVERSION:v1RESOURCE:containers〔〕Object《数组,可以代表多个容器》DESCRIPTION:FIELDS:args〔〕string《容器的启动命令需要的参数列表》command〔〕string《容器启动命令,如果不指定,则选用打包时的启动命令》env〔〕Object《容器的环境变量配置》imagestring《镜像地址,或者说镜像名称,版本》imagePullPolicystring《镜像拉取策略》namestringrequired《容器名称》ports〔〕Object《容器暴露的端口号》resourcesObject《资源限制和资源请求设置》 下面我们简单的写一个podyaml出来,建议自己打一遍运行vipodbase。yamlapiVersion:v1kind:Podmetadata:name:podbase这里我用了两个空格,同一级的项目空格数要相同,这是yaml语法namespace:dev:号后面要加一个空格注意!!labels:user:aaaspec:containers:name:nginximage:nginx:1。17。1name:busyboximage:busybox:1。30〔qqk8snode1〕kubectlapplyfpodbase。yamlpodpodbasecreated〔qqk8snode1〕kubectlgetpodndevNAMEREADYSTATUSRESTARTSAGEnginx64b7c758f446xld11Running045hnginx64b7c758f4k2gk511Running045hnginx64b7c758f4wwhn411Running045hpodbase12CrashLoopBackOff13(2m29sago)44m《12表示有两个容器,一个已运行成功,另一个故障,pod会不断地重启修复他,这里这个故障先不管他》〔qqk8snode1〕kubectldescribepodpodbasendev《也可以尝试看一下这个pod的详细信息》Name:podbaseNamespace:devPriority:0Node:minikube192。168。49。2StartTime:Wed,23Feb202213:12:200800Labels:useraaaAnnotations:noneStatus:RunningIP:172。17。0。6IPs:IP:172。17。0。6Containers:nginx:ContainerID:docker:a83914812bd01073bb88fef74fc168e58ac665fc099f3b80dd679d37ff48a616Image:nginx:1。17。1ImageID:dockerpullable:nginxsha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbbPort:noneHostPort:noneState:RunningStarted:Wed,23Feb202213:12:200800Ready:TrueRestartCount:0Environment:noneMounts:varrunsecretskubernetes。ioserviceaccountfromkubeapiaccesspmwb5(ro)busybox:ContainerID:docker:52657bd5629a6faa8157555ebc759cfe6b35cc31c4f293f59697af7c0f1325eeImage:busybox:1。30ImageID:dockerpullable:busyboxsha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort:noneHostPort:noneState:WaitingReason:CrashLoopBackOffLastState:TerminatedReason:CompletedExitCode:0Started:Wed,23Feb202213:59:210800Finished:Wed,23Feb202213:59:210800Ready:FalseRestartCount:14Environment:noneMounts:varrunsecretskubernetes。ioserviceaccountfromkubeapiaccesspmwb5(ro)Conditions:TypeStatusInitializedTrueReadyFalseContainersReadyFalsePodScheduledTrueVolumes:kubeapiaccesspmwb5:Type:Projected(avolumethatcontainsinjecteddatafrommultiplesources)TokenExpirationSeconds:3607ConfigMapName:kuberootca。crtConfigMapOptional:nilDownwardAPI:trueQoSClass:BestEffortNodeSelectors:noneTolerations:node。kubernetes。ionotready:NoExecuteopExistsfor300snode。kubernetes。iounreachable:NoExecuteopExistsfor300sEvents:TypeReasonAgeFromMessageNormalScheduled48mdefaultschedulerSuccessfullyassigneddevpodbasetominikubeNormalPulled48mkubeletContainerimagenginx:1。17。1alreadypresentonmachine《寻找nginx的镜像》NormalCreated48mkubeletCreatedcontainernginx《创建了容器》NormalStarted48mkubeletStartedcontainernginx《启动了容器》NormalStarted47m(x4over48m)kubeletStartedcontainerbusyboxNormalPulled46m(x5over48m)kubeletContainerimagebusybox:1。30alreadypresentonmachine《寻找镜像》NormalCreated46m(x5over48m)kubeletCreatedcontainerbusybox《创建容器》WarningBackOff3m4s(x211over48m)kubeletBackoffrestartingfailedcontainer《启动失败》 镜像拉取策略 说回刚才的yaml文件vipodbase。yamlapiVersion:v1kind:Podmetadata:name:podbase这里我用了两个空格,同一级的项目空格数要相同,这是yaml语法namespace:dev:号后面要加一个空格注意!!labels:user:aaaspec:containers:name:nginximage:nginx:1。17。1imagePullPolicy:Never《配置镜像的拉取策略》name:busyboximage:busybox:1。30 imagePullPolicy一个新的关键字,我们可以去帮助文档里查看一下先看一下层级关系,过滤掉查询的无用信息kind:Pod《Pod资源》spec:《spec目录下》containers:《containers目录下》imagePullPolicy:Never《imagePullPolicy查询的子目录》《配置镜像的拉取策略》〔qqk8snode1〕kubectlexplainpod。spec。containers。imagePullPolicy《这样就可以查到资源的信息了》KIND:PodVERSION:v1FIELD:imagePullPolicystringDESCRIPTION:Imagepullpolicy。OneofAlways,Never,IfNotPresent。DefaultstoAlwaysif:latesttagisspecified,orIfNotPresentotherwise。Cannotbeupdated。Moreinfo:https:kubernetes。iodocsconceptscontainersimagesupdatingimagesimagePullPolicy资源下可以使用以下三种策略Always:总是从远程仓库拉取下载Never:总是使用本地的镜像IfNotPresent:本地有则使用本地镜像,本地没有则拉取远程仓库的如果指定了版本号,则默认策略是IfNotPresent如果镜像tag为:latest(最新版本)则默认策略为Always〔qqk8snode1〕catpodimagepullpolicy。yamlapiVersion:v1kind:Podmetadata:name:podimagepullpolicynamespace:devspec:containers:name:nginximage:nginx:1。17。1imagePullPolicy:Nevername:busyboximage:busybox:1。30《虽然容器不正常,但还是可以创建上看一下》〔qqk8snode1〕kubectlapplyfpodimagepullpolicy。yamlpodpodimagepullpolicycreated〔qqk8snode1〕kubectldescribepodpodimagepullpolicyndevName:podimagepullpolicyNamespace:devPriority:0Node:minikube192。168。49。2StartTime:Wed,23Feb202214:24:380800Labels:noneAnnotations:noneStatus:RunningIP:172。17。0。7IPs:IP:172。17。0。7Containers:nginx:ContainerID:docker:f140807fb535a3b8b07453ff239db980277b1229cc7834f4108926be9b204e41Image:nginx:1。17。1ImageID:dockerpullable:nginxsha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbbPort:noneHostPort:noneState:RunningStarted:Wed,23Feb202214:24:390800Ready:TrueRestartCount:0Environment:noneMounts:varrunsecretskubernetes。ioserviceaccountfromkubeapiaccesshj8v8(ro)busybox:ContainerID:docker:b61920d1b73aee2684dd270291dfb2a5322259daf2e033f9db623484085453c2Image:busybox:1。30ImageID:dockerpullable:busyboxsha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3dPort:noneHostPort:noneState:WaitingReason:CrashLoopBackOffLastState:TerminatedReason:CompletedExitCode:0Started:Wed,23Feb202214:27:310800Finished:Wed,23Feb202214:27:310800Ready:FalseRestartCount:5Environment:noneMounts:varrunsecretskubernetes。ioserviceaccountfromkubeapiaccesshj8v8(ro)Conditions:TypeStatusInitializedTrueReadyFalseContainersReadyFalsePodScheduledTrueVolumes:kubeapiaccesshj8v8:Type:Projected(avolumethatcontainsinjecteddatafrommultiplesources)TokenExpirationSeconds:3607ConfigMapName:kuberootca。crtConfigMapOptional:nilDownwardAPI:trueQoSClass:BestEffortNodeSelectors:noneTolerations:node。kubernetes。ionotready:NoExecuteopExistsfor300snode。kubernetes。iounreachable:NoExecuteopExistsfor300sEvents:TypeReasonAgeFromMessageNormalScheduled3m32sdefaultschedulerSuccessfullyassigneddevpodimagepullpolicytominikubeNormalPulled3m31skubeletContainerimagenginx:1。17。1alreadypresentonmachineNormalCreated3m31skubeletCreatedcontainernginxNormalStarted3m31skubeletStartedcontainernginxWarningBackOff2m22s(x7over3m30s)kubeletBackoffrestartingfailedcontainerNormalPulled2m7s(x5over3m31s)kubeletContainerimagebusybox:1。30alreadypresentonmachineNormalCreated2m7s(x5over3m31s)kubeletCreatedcontainerbusyboxNormalStarted2m7s(x5over3m31s)kubeletStartedcontainerbusybox