操作场景
tcenter⼤部分的组件都在容器中运⾏,且⼤部分容器⾃身都有健康探测机制。所以⾸先确认容器的运⾏是否健康很重要。
前提条件
可登录k8s集群节点,并能执行kubectl命令。
操作步骤
- 登录k8s集群节点,执行如下命令确认服务状态是否正常。
# 检查pod是否正常拉起,pod状态是否正常
kubectl get pod -n tce | grep cloud-tcenter
异常处理
若存在容器运行状态异常,可通过如下方式确认异常原因。
# 此处以tcloud-tcenter-console-web-xx为例
kubectl describe pod -n tce tcloud-tcenter-console-web-xxx | grep -A 5 -E 'Last State:|Events:'

此处主要关注点为Last State.Reason和Exit Code,此处若容器由于资源限制问题,例如oom导致容器异常,则显示为oomkilled,code为137;图中状态非137,在云平台场景下基本均为服务自身健康探测机制失败导致,结合events部分可以进一步确认,该容器异常原因为存活探测失败。
# 查看容器资源限制大小,健康检查设置
kubectl describe pod -n tce tcloud-tcenter-console-web-xxx | grep -A 4 -E 'Limits|Liveness|Readiness'

1)若容器由于资源限制问题可通过调整组件规格大小临时解决,长期方案可提单相关技术栈确认是否为资源使用不合理或者出厂规格设置不合理,此处一般处理方案如下:
# 此处以tcloud-tcenter-console-web-xx为例,修改其中limits部分调整对应规则信息
# 常规k8s组件默认修改deploy、sts、ds等cr即可,云平台场景下应用采用oam模型,常规服务上层控制器均为comp
kubectl edit comp -n tce tcloud-tcenter-console-web
# 确认容器正常启动
kubectl get pod -n tce | grep tcloud-tcenter-console-web
# 确认组件历史资源使用情况,可通过登录运营端 > 监控系统 > 云产品指标 > tcs/pod > 监控指标选择pod_cpu_limit_usage/pod_memory_nocache_limit_usage,集群选择global,命名空间tce,容器选择tcloud-tcenter-console-web查看
2)若容器由于健康检查问题则需查看服务日志进一步确认无法启动的原因,此处一般处理方案如下,初步排查后可提单相关技术栈支持。
kubectl get pod -n tce | grep tcloud-tcenter-console-web
# 当容器处于0/1 Running状态的时候进入
kubectl exec -it -n tce tcloud-tcenter-console-web-xxx bash
tail -n 100 /data/log/console/console.server.log
# 若容器一直处于CrashLoopBackOff状态,也可通过kubectl logs命令尝试查看日志(需要服务支持将日志打印至标准输出)
kubectl logs -n tce tcloud-tcenter-console-web-xxx