K8S是基于容器的集群管理平台,它的全称,是kubernetes。k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。并且k8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。由于K8s具有着强大的功效,同时也能与docker配合进行使用,于是笔者开始学习理解k8s,并对其过程进行记录归纳。

第一个pod创建及故障处理

在安装过程中,我们下载了MobaXterm,使用这款软件进行编辑会比较方便。具体的使用方法在上篇部署安装k8s中有演示。
在这里插入图片描述
首先,在MobaXterm打开master和它的两个节点。
在这里插入图片描述
输入图中命令,创建一个yml的文件。然后用cd进入yml。在其中创建一个test文件,用pwd查看路径。
在这里插入图片描述
输入以下命令,进入到对k8s_pod.yml的编辑页面
在这里插入图片描述
在里面写上图中所示字符。
在这里插入图片描述

第一行显示的是api的版本,第二行显示的是资源类型。metadata是源数据。在Pod中资源名为nginx。label是别名,可以理解为标签来标识唯一性。也可以加namespace,如果有多个相同标签的话,可以独立出来。从spec开始是计算节点。这段在docker中可以表示成为开启容器和暴露端口。输入如下命令,可以发现出错了。
在这里插入图片描述
经过搜索相关文档以及分析错因后,笔者发现是缩进有问题,某些地方的空格数应该仔细查阅。
在这里插入图片描述
如图所示,创建完成。使用下列代码查看是否创建成功。
在这里插入图片描述
可以看到创建成功。
在这里插入图片描述
但是状态是pending怎么办呢,正常启动后状态应该为running。笔者先查看了两个节点的运行情况,发现是notready。
在这里插入图片描述
笔者通过输入以下命令,关闭了防火墙,并且重新启动后,他们显示ready了。

# systemctl stop firewalld
# systemctl daemon-reload
# systemctl restart docker
# systemctl restart kubelet
# systemctl restart kube-proxy

在这里插入图片描述
而此时可以看到仍然处于pending状态。笔者认为主要问题是出在了containers中的ready是false状态。
在这里插入图片描述
并且在后续上又出现了如下问题
在这里插入图片描述
笔者在一番搜索操作无果后,选择了另一种方法与思路。
在这里插入图片描述
笔者首先调节了虚拟机的内存。笔者猜测是因为虚拟机内存太小导致的无法运行。
在这里插入图片描述
重置后,发现还是出现pending的问题。
在这里插入图片描述
笔者将这个pod删除,再进行查看pod。此时发现,竟然有一个新的pod存在。
在这里插入图片描述
笔者此时查看了下kubectl的状态。
在这里插入图片描述
发现并没有什么问题。然后笔者检查了防火墙设置,也发现没有什么问题。那么笔者觉得是不是kubelet没有打开或者运行有问题,那么笔者输入指令打开kubelet。
在这里插入图片描述
接下来,笔者检查了docker的状态,发现docker运行正常。但是当笔者想要检查kubeproxy的状态时,发现kubeproxy.service找不到。
在这里插入图片描述
或许是因为命令打错了,笔者在中间加入了-后还是一样的结果。
在这里插入图片描述
笔者觉得可能是某些包并没有补全,于是下载了bash-comletion的包。
在这里插入图片描述
在这里插入图片描述
此时,使用了source的命令,再去查看时发现,pod已经可以正常运行。
在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐