操作场景
本文档介绍如何使用腾讯云容器服务 TKE 提供的基础镜像进行自定义镜像制作。
注意:
1. 基础镜像是指 TKE 支持的公共镜像,镜像列表请参见 镜像概述。
2. 自定义镜像非标准操作环境,平台未经过兼容性适配,需要用户自行保证镜像在 Kubernetes 环境下的可用性。针对该类镜像,TKE 原则上不提供 SLA 服务和技术保障。
使用须知
目前仅支持同类型操作系统镜像的制作。例如,使用 CentOS 基础镜像制作 CentOS 类的自定义镜像。
如果您使用自定义镜像功能,请使用 TKE 提供的基础镜像来制作自定义镜像。
若 TKE 后期计划调整镜像逻辑,会提前至少一周通过站内信、短信、邮件的方式进行通知。镜像逻辑变化可能会导致原有自定义镜像新建节点失败,您需要重新制作自定义镜像。如集群有使用节点池,需调整节点池的镜像配置。
如需使用自定义镜像功能,请 提交工单 申请。
注意事项
制作自定义镜像前,请务必仔细阅读以下注意事项。自定义镜像属于非标准环境,腾讯云不提供官方支持及持续维护。
请勿随意修改
/etc/fstab
。制作镜像之后请及时清理
/var/lib/cloud/instances/${instance-id}
目录。如果您在自定义镜像中预装了运行时组件,节点初始化无法正常进行,会直接报错。
建议您在制作自定义镜像前通过 清理脚本 完成节点预清理,避免当前机器存在历史脏数据而影响节点的正常初始化流程。执行命令如下:
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.tencent.com/install/tke/clean-node.sh | bash
操作步骤
本文以使用基础镜像创建云服务器(CVM)为例。
1. 创建 CVM
1. 登录 云服务器控制台,选择新建进入云服务器购买页面。
2. 在镜像中选择容器服务基础镜像,这里以公共镜像 TencentOS Server 3.1 为例。如下图所示:
3. 其他选项设置请参考 新建 CVM 实例。
2. 创建自定义镜像
1. 请参考 使用标准登录方式登录 Linux 实例(推荐) 登录 CVM。
2. 执行以下命令,新建
test.txt
文件。vi test.txt
3. 按 i 进入编辑模式,并写入以下内容。
this is customer cvm images test
4. 按 Esc 并输入
:wq
退出并保存。5. 请参考 创建自定义镜像 完成创建。
3. 使用自定义镜像
注意:
您创建(共享)的自定义镜像所在地域需和 TKE 集群所在地域保持一致。
4. 验证自定义镜像
1. 登录容器服务控制台,选择左侧导航栏中的 集群。
2. 选择使用自定义镜像创建的集群 ID,进入集群详情页。
3. 在节点管理页面,选择节点,记录需要登录验证的节点 ID。
4. 登录 云服务器控制台,在搜索框中输入记录的节点 ID 并单击
,即可看到已创建的节点。如下图所示:
5. 请参考 使用标准登录方式登录 Linux 实例(推荐),登录节点。
6. 执行以下命令,验证自定义镜像。
cat test.txt
返回结果如下,则表示该节点已使用自定义镜像。
使用总结
制作自定义镜像必须使用 TKE 提供的基础镜像,没有满足此要求的自定义镜像在 TKE 控制台上不会显示。
若在自定义镜像中对
/etc/resolv.conf
文件设置文件保护(chattr +i /etc/resolv.conf
),则会导致 cloud-init
失败。由于 TKE 依赖于 cloud-init
成功状态,最终会导致节点加入集群失败。由于
rc.local
和 container_cluster_agent
无法保证执行顺序,会导致用户 start_init.sh
脚本拷贝的数据丢失。不建议您把 start_init.sh
放在 rc.local
中执行,建议在 user-data
中执行。曾经制作过镜像的节点上如果保留了
/var/lib/cloud
目录,那么 /var/lib/cloud/instances/${instance-id}/sem
目录下的 config_scripts_user
文件会影响 cloud-init
服务的正常执行,会导致该节点加入 TKE 集群内时修改的节点主机名无法生效。在自定义镜像中添加个人 yum 源时,若放置在不合适的目录下(例如
/etc/yum.repos.d/
),则会引起 container-cluster-agent
在执行 yum install
操作时报错,从而跳过该步骤,导致 agent 安装 yum 源失败。常见问题
TKE 控制台看不到自定义镜像的可能原因:
1. 您选择的基础镜像在 CVM 控制台不可见,该场景需 提交工单 申请。
2. 您选择的基础镜像不在 TKE 支持的公共镜像列表内,镜像列表请参见 镜像概述。
3. 您创建(共享)的自定义镜像所在地域和集群地域不一致。