本文主要描述使用容器服务时,关于运行时(包括 containerd、安全容器)和操作系统的注意事项、操作配置建议、使用方法最佳实践。
合理配置 kubelet 的并发容器镜像拉取限制
在创建业务 Pod 过程中,请合理配置 kubelet 的并发容器镜像拉取限制。如果 kubelet 的并发容器镜像拉取限制较低,可能在节点上同时创建多个 Pod 等场景下,引发类似Failed to pull image "xxxxx:xxxxx": pull QPS exceeded的报错信息,影响您的业务。
您可以通过调整/etc/kubernetes/kubelet.conf中的--registry-pull-qps参数值(kubelet 的registryPullQPS参数)来合理配置并发限制的数量。
注意
修改/etc/kubernetes/kubelet.conf中的--registry-pull-qps参数,会有如下影响:
- 需要重启 kubelet 才能使配置生效。重启 kubelet 可能会引起节点的短时间不可用,建议在业务低峰期操作。
- 需要同时评估节点的带宽限制和镜像仓库的速率限制,避免速率过大引发额外的问题。
避免使用 CentOS 6.x 及以下版本作为基础镜像
建议不要在您的容器服务业务中使用 CentOS 6.x 及以下版本作为基础镜像。CentOS 6.x 版本镜像依赖系统的 vsyscall 机制,而容器服务中的 Worker 节点使用 vDSO 机制,默认不开启 vsyscall,因此运行 CentOS 6.x 版本镜像或运行以 CentOS 6.x 版本为基础镜像的业务镜像时会报错。
如果您运行 CentOS 6.x 版本镜像或使用以 CentOS 6.x 镜像作为基础镜像编译业务容器的镜像,并在 veLinux 或其他高版本的 Linux 节点上运行时,可能会出现以下报错导致业务容器无法正常启动:
- 容器的 State.Reason 显示为 CrashLoopBackOff。
- 容器的 Last State.Exit Code 为 139。
推荐您按如下两种方法使用 CentOS 镜像:
- 基于 CentOS 7.X 版本或更高 CentOS 版本重新构建(build)镜像,并在容器服务业务中使用该镜像。
- 如果您无法使用 CentOS 7.X 版本或更高 CentOS 版本作为基础镜像,请 提交工单 获取技术支持。
VKE 目前仅支持使用 containerd 运行时,请勿在节点上使用或安装 Docker 等其他运行时。使用 VKE 不支持的运行时,可能导致节点运行故障,影响业务运行。
如果您已经自行使用了其他类型运行时,可通过如下方式恢复容器运行时:
- 从 VKE 集群中移除节点但保留节点对应 ECS 实例。详细操作,请参见 移除节点。
- 通过添加已有节点方式,重新将上述 ECS 实例添加到 VKE 集群,将节点的容器运行时恢复到 VKE 支持的 containerd 运行时。详细操作,请参见 添加已有节点。