运行一个pod资源10
接下来了解k8s的资源单位
k8s里面最小的资源单位就是pod,如果说咱们教室这里有一面墙,这面墙的最小资源单位是什么?是一块砖,在k8s里面有很多的资源,其中最小的资源单位就是pod,在k8s里面所有的资源都可以用yaml文件来创建,讲docker compose也是用yaml文件来声明的,在k8s里面,所有的资源单位都是由yaml文件来声明的,每个yaml文件都有4个主要部分,第一个主要部分,apiversion,api版本,几乎是一行就搞定了;然后资源类型kind也基本是一行就搞定了;接下来是他的属性,metadata,这个属性里面可能会包含资源的名字,标签,还有它的一个namespace,前三个,apiversion,kind,metadate的信息都是比较少的,最后一个spec是它的详细,比如pod里面最终是用来跑容器的,在这个spec详细里面就会详细的介绍,这个pod使用什么镜像,这个容器叫什么名字,用什么镜像,是否需要暴露端口,挂载什么卷,站点镜像的策略是什么,重启的策略是什么,所有一切的信息都在spec详细里面指定。yaml文件有缩进的写法,每个缩进代表一个层级关系,spec里面就用来跑容器,注意containers多了个s,一个pod里面是可以跑多个容器的,至少的跑一个,容器的第一行就声明了名字,容器的名字就叫nginx,用的镜像是nginx1.13,后面会用到nginx1.15实现它的滚动升级,nginx镜像里面的端口就是80,这就是一个yaml文件,如下图所示,
我们把这个yaml文件复制下来,在master节点上去操作,所有k8s的配置文件都建一个目录放下来,进到k8s目录,创建一个pod目录,在这个目录下写配置文件/root/k8s/pod,vim k8s_pod.yaml,见名知义,
然后我们把刚才复制的yaml配置文件粘贴上,这就是我们pod资源的一个配置文件了,大家看到这个镜像是从私有仓库里面去下载的,私有仓库里面有这个镜像?没有,所以我们需要上传,接下来我们在创建这个资源之前,上传到12,13上,在推到仓库里面行不行,可以,随便选一个节点,就选择node2节点,
我们把镜像打开,在这里就有13的镜像,
我们自己本地就有,直接rz上去都行,另外一种方法按我的方法复制链接地址,通过wget下载,
现在镜像有了,先把他docker load -i docker_nginx1.13.tar.gz 导入镜像
导入镜像之后打标签,docker tag docker.io/nginx:1.13 10.0.0.11:5000/nginx:1.13,
接下来把这个镜像推上去,
现在私有仓库有这个镜像了,镜像我已经准备好了,接下来根据这个yaml文件怎么去创建这个pod?去主节点master上,在k8s中,创建任何资源都可以用create命令,现在通过一个配置文件来声明这个资源,所以每次创建资源的时候都可以加一个-f指定配置文件,指定k8s_pod资源的这个配置文件,如下图,创建成功。
创建成功之后get一下pod的列表,就能看到一个pod,如下图所示,
在这里就创建了一个pod,创建完之后你用get就能看到这个pod的状态,快10分钟勒,这个pod还处于容器创建中,一直没处于running运行状态,接下来用k8s里面的一个最常用的排错命令,kubectl describe pod nginx ,可以用这个查看pod资源的状态,describe是描述的意思,describe是动态查看它的状态,所有的命令都是有规律的,get pod是看pod资源的列表,describe可以看所有资源的状态,现在我要看pod,nginx的资源
这个pod叫什么名字,nginx
往下面看事件events的第一条,一创建这个pod,scheduler会给他调度一下,给他调度到10.0.0.13这个节点上勒,紧接着就能远程控制kubelet10.0.0.13的服务。
它看这个好像是要铺pull一个镜像,这个镜像的地址好像是,registry.access.redhat.com/rhel7/pod-infrastructure:latest,如下图所示
要铺pull这个镜像,结果发现这个镜像布置pull不下来,说没有这个证书文件,如下图所示
既然10.0.0.13上面铺pull不下来,我们node3节点10.0.0.13去手动铺一下,如下图所示,没有这个文件和目录。
我们手动都铺pull不下来,让它自动也铺pull不下来,如下图所示
为什么铺pull不下来?可以去百度上查一下这个问题的所在
尤其你买了k8s的权威指南,这个坑它就不会告诉你,还得自己查百度解决,上面有告诉你怎么解决,
装上这个包,再来手动安装一下这个证书,然后就能手动将这个镜像铺pull下来了,咱们现在不需要铺pull,你看人家这个镜像在人家的仓库上面,
我们如果铺下来之后,这是调度到10.0.0.13node节点上需要铺pull这个镜像,回头调度到10.0.0.12node节点上,又得铺pull镜像,这里面只要是镜像我们就让它走私有仓库,怎么让这个镜像地址从私有仓库布置pull?为什么它从这个地址布置pull勒?
我们来看一下这个配置文件vim /etc/kubernetes/kubelet
这里面写了一个pod的基础容器,给了基础容器的镜像地址,从红帽官方库
在这里我们不需要它从红帽官方库,我们资料包里面有这个镜像,回头我们把这个地址改成私有仓库地址,它就从私有仓库地址布置pull了,
自己把这个镜像传上去,
找到图上这个资料包,把这个包传上来,这里包200多M,建议用xftp上传,不建议rz,如下图
又要把这个包传到哪儿去勒?把这个包传到私有仓库,之后需要拉取的话直接从私有仓库下载拉取。
传包第一步,先导入进去,
第二步,打标签
因为我们布置pull不下来,你用docker search 也能搜索到这个镜像,别人传到这上面,我们就可以布置下来
接下来不管从哪儿布pull的,怎么把它打标签?
打标签
推上去
最终私有仓库地址就是这个,如下图
然后再把它改到哪儿去,让它生效勒?改它的配置文件,接下来改配置文件,vim /etc/kubernetes/kubelet
传上去之后保存了之后生效了?需要重启kubelet服务,如下图所示
再回到master节点上面,再看一下这个pod状态
刚才还报错,两秒之后就可以pull拉了,有个警告没关系。
这个容器搞定了之后,会去pull我们的nginx的镜像,再下一步,镜像本地已经有了,
因为之前在10.0.0.13node2节点上我已经打过标签了,所以提示有,就不用从私有仓库pull了
再来get一下pod状态,就变成了running
标签:pull,这个,配置文件,10,镜像,pod,k8s,运行 From: https://www.cnblogs.com/ypyyds/p/16830691.html