K8S集群中部署的云管微服务应用,在本地启动只需要1~2分钟,放到集群中启动时,大概需要6~9分钟。
2、问题分析2.1应用程序启动资源。
2.2容器启动设置。
2.3应用程序接口调用。
3、问题处理3.1应用程序资源部署在k8s集群上的资源,是否与本地启动时资源一致。pod通过设置resources分别指定CPU、内存使用资源。如果分配的资源过少,影响容器启动的速度。通过设置requests的值,让容器调到到资源更合理的节点。
上述建议requests与limits值设置相等,这样pod在运行过程如果资源不足,主机oom时会把其他没有设置resources的pod优先kill掉。
此外:
JAVA程序容器化。建议加入jvm参数,防止容器OOM。
群节点主机除了CPU、内存等资源外,还应该检查磁盘I/O资源。
3.2容器启动设置3.2.1容器镜像容器启动速度,有可能镜像拉取太慢。k8s中pod的镜像策略,为Always。这样每次都会重新拉取镜像,如镜像网络速度慢,会直接造成集群容器启动慢。
容器镜像拉取策略如下:
Always:表示每次都尝试重新下载镜像。
IfNotPresent:表示如果本地有该镜像,则使用本地的镜像,本地不存在时下载镜像。
Never:表示仅使用本地镜像,如果本地没有也不会去从库下载(需要用户手动pull)。
#kubectlgetpodxxxx-oyaml
注:xxxx,为podname。
#kubectlgetpod-w
imagePullPolicy为Always,容器创建到成功启动时间将近30s。如果容器镜像拉取网络速度,无论直接从hub.docker.