在容器服务中运行 CentOS 6.X 版本镜像或运行以 CentOS 6.X 版本为基础镜像的业务镜像时,Pod 状态一直为Error
,Exit Code
为139
(分段错误 SIGSEGV)。
CentOS 6.X 版本镜像依赖系统的 vsyscall 机制,而容器服务中的 Worker 节点使用 vDSO 机制,默认不开启 vsyscall,因此运行 CentOS 6.X 版本镜像或运行以 CentOS 6.X 版本为基础镜像的业务镜像时报错。
vsyscall 和 vDSO 相关介绍,请参见 On vsyscalls and the vDSO。
基于 CentOS 7.X 版本或 CentOS 8.X 版本重新构建(build)镜像。
如果您无法基于 CentOS 7.X 版本或 CentOS 8.X 版本重新构建镜像,必须基于 CentOS 6.X 版本来运行业务镜像时,需要使用本方法打开容器服务 Worker 节点的 vsyscall 机制。
cp /etc/default/grub /etc/default/grub.bak
GRUB_CMDLINE_LINUX_DEFAULT
字段处添加vsyscall=emulate
并保存 grub 文件。vi /etc/default/grub
update-grub2 && sync && reboot
返回类似如下信息,表示容器服务的 vsyscall 已启用。cat /proc/self/maps | egrep 'vdso|vsyscall'
如果您无法使用 CentOS 7.X 版本或 CentOS 8.X 版本作为基础镜像,需要继续使用 CentOS 6.X 版本,请确认 CentOS 6.X 版本镜像中的 glibc 版本是否低于 2.14。如果是,请升级 glibc 版本到 2.14 及以上版本。
如果使用上述三个方法仍未解决您的问题,请 提交工单 获取技术支持。