服务实例
1 介绍
服务实例(Pod),是服务实例运行的对象,通过服务来配置和管理。
服务实例可以在服务详情中进行查看。其中,当实例运行异常时,实例状态会显示相关的异常信息,具体可参考本文第5小节。
2 实例信息
在实例列表,可以看到实例的状态、所在的主机IP、实例的IP、创建时间。点击实例名称或"详情",进一步可以查看实例运行配置信息、监控、事件和容器进程信息。
运行信息:主要是查看到实例下容器运行的配置信息,这些配置信息通过服务中配置。
监控信息:查看实例的CPU、内存使用量、实例网络流入流出信息。这里在的监控信息只是展示实例最实时数据,历史数据需要到监控服务中进行查看。
事件:查看实例运行过程中的事件,通过事件信息,很方便排查实例异常问题。如果实例重启过,也可以看到重启次数和上次重启原因。事件信息默认保留1个小时,具体由K8S参数控制。
进程:查看实例中容器运行的进程。
3 日志
日志功能用于查看容器通过控制台终端console输出的日志,也可以日志下载到本地。这里下载的日志,是实例保存在所运行的K8S节点中的日志,如docker的json-file日志,由于docker会定期清理日志,所以下载的日志并不一定是容器从启动以来的所有日志,而是现存在node节点上的日志。
3 连接容器
可以连接到容器终端,执行Linux命令,具体可执行的命令,由容器镜像安装的命令决定。在连接容器页面,还可以上传文件到容器,或下载容器的文件到本地。
4 隔离
容器服务还实现了容器的隔离功能,如果集群服务间用服务名作为地址进行访问,当点隔离后,当前的实例将不能通过服务名访问到,也就是访问流量从服务的负载均衡中剔除掉,主要是为了保留现场,方便后续定位问题。
如果是使用微服务框架,直接是通过实例的IP和端口访问,将达不到隔离的效果,隔离后仍然会被访问到。
5 容器状态汇总
服务中的容器实例在创建、启动、运行、结束时会有相应的状态,这些状态有助于我们了解运行情况,出现问题有助于我们解决问题。
关键词 | 状态说明 |
---|---|
Pending | 等待中。系统已经接受pod实例的创建,但其中所包含容器的一个或者多个image还没有创建成功。Pending包含调度计算与通过网络创建image,所以此阶段时间可能会有点长。 |
ContainerCreating | 容器正在创建中。系统已经完成了Pod的调度,但可能需要通过网络下载镜像,这可能需要花点时间。 |
Running | 运行中。容器已经被调度到某个node上,容器已经创建并启动完成。注意:容器Running中,不代表服务可用,因为容器中的进程可能在启动中,并未准备好对外提示服务,或者健康检测还未检测到服务可用。 |
Unknow | 未知状态。无法取得pod状态,一般是网络问题引起,如超时。 |
ImagePullBackOff/ ErrImagePull | 错误的容器镜像/非法的仓库权限。该状态出现的两个最普遍的问题是:(a)指定了错误的容器镜像(镜像 tag 不正确或镜像不存在),(b)使用私有镜像却不提供仓库认证信息。 |
CrashLoopBackOff | 容器曾经启动了,但又异常退出了。容器退出的原因有容器进程退出、健康检查失败退出等。 |
Terminating | Pod停止中。 |
OOMKilled | Pod使用的内存超过了资源配置中的内存最大限制,被强行终止。 |
Evicted | Pod所处节点出现异常,kubernetes根据相应的机制把该Pod驱赶到其他节点。多见于资源不足时导致的驱赶。 |
Unschedulable/ FailedScheduling | 调度失败,没有合适的节点可以运行该Pod,一般是CPU或内存资源不足。 |
CreateContainerConfigError | k8s资源需要的配置创建失败或者不存在,导致容器不能创建。 |
RunContainerError | 启动容器失败。比如容器中命令执行失败。 |
CreateContainerError | 创建容器失败。常见于镜像拉取超时,可以等待一会直到镜像拉取成功。 |
容器状态说明
下面对常见的一些状态进行说明,有助于用户在使用中进行排错。出现非Running状态时,一般查看方法是先查看容器事件,再看容器日志记录,最后看服务资源监控。
ContainerCreating 状态
如果长时间在ContainerCreating 状态,可能是下面的原因。
镜像拉取时间过长。镜像太大或者网速太慢造成的,可以在容器事件中确认,原因中一直处于Pulled状态。如果是私有集群,可以到其中一个主机节点手动执行docker pull 一个镜像试一下。
k8s集群网络异常,无法分配到IP。需要找集群管理员协助。
挂载存储异常。常见的情况是有状态服务的块存储,在重启时,旧的实例占用,导致新的实例无法挂载而一直在重试。需要找集群管理员协助。
CrashLoopBackOff 状态
CrashLoopBackOff 状态说明容器曾经启动了,但又异常退出了。此时 Pod 的 RestartCounts 通常是大于 0。当容器实例出现CrashLoopBackOff 状态时,可以查看事件和日志。
容器进程退出
在常见的情况下,是由于容器中用户的程序启动出错,未能正常启动,导致不断地重启容器。如果程序日志已经输出到控制台,可以在服务运行情况—实例列表—日志功能查看。健康检查失败退出
可以在服务运行情况—实例列表—事件中查看OOMKilled
内存溢出,达到资源限制,系统会将容器kill掉并重启。这种情况下不一定会有日志或者事件,可以通过监控服务来辅助查看。
服务实例
本文2024-09-23 01:11:06发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144315.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf