拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

腾讯云K3S修改默认容器运行时:TaoToken 统一 Key 接入与 config.toml 配置骨架

腾讯云K3S修改默认容器运行时:TaoToken 统一 Key 接入与 config.toml 配置骨架 1. 腾讯云 K3S 换运行时这件事为什么值得折腾腾讯云 K3S 默认容器运行时是 Containerd这个选择本身没问题轻量、启动快、资源占用低。但很多团队在腾讯云上跑 K3S 时会遇到一个很现实的场景镜像构建、调试、CI 流水线里全是 Docker 命令运维脚本也依赖docker ps、docker logs这套习惯。这时候要么改脚本要么把 K3S 的默认运行时切回 Docker让crictl和docker两套工具都能用。我这次在腾讯云 CentOS 8 的 K3S 节点上做的就是把默认运行时从 Containerd 改成 Docker同时把 AI 工具侧的接入通道统一到 TaoToken 的 Key 上。为什么要一起做因为改完运行时之后节点上会多出一批容器和镜像AI 编码工具Cline、CC Switch 这类如果还在用各自散落的 Key排查问题时根本分不清是运行时没生效还是 Key 配错了。统一走一个 API 通道验证链路会短很多。这篇适合三类人正在腾讯云上维护 K3S 集群、需要把运行时切回 Docker 的运维用 Cline 或 Claude Code 做日常编码、想统一 Key 管理的开发者以及刚接触 K3S、想搞清楚k3s.service里ExecStart到底能加哪些参数的新手。下面从改运行时开始到 AI 工具侧接入再到验证和排错一步步来。2. 前置准备TaoToken 统一 Key 与 API 通道在动 K3S 配置之前先把 AI 工具侧的接入通道准备好这样后面验证容器和 AI 调用时可以一起测。TaoToken 的作用是把多个模型的调用收敛到一个 Key 和一个 API 地址上你不用在 Cline、CC Switch、Claude Code 里分别填不同的 Key。你需要拿到两样东西一个 API Key以及 API 的基础地址。基础地址是https://taotoken.net/api这个地址在配置里会反复出现。Key 的获取入口在控制台的 API Keys 页面登录后新建一个就行建议按用途命名比如k3s-node-coding方便后面区分。这里有个细节TaoToken 的 API 地址不带 UTM 参数配置里直接写https://taotoken.net/api即可。官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content控制台和文档都在这个域名下。如果你后面要长期跑编码 Agent可以关注 Coding Plan 这条线如果只是临时验证模型通不通用模型对话页面更快。接入文档在 doc 路径下配置格式和参数说明都在那里。先把 Key 复制到剪贴板下一步改完 K3S 就要用它。3. 可复制配置K3S 运行时切换与 config.toml 骨架3.1 安装 Docker 与 containerd.io腾讯云 CentOS 8 上先装包管理工具和国内源避免拉包超时。命令如下yum -y install yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm dnf install docker-ce systemctl start docker systemctl enable docker docker -vdocker -v能输出版本号说明 Docker 装好了。注意 containerd.io 这个包是 Docker 的依赖K3S 切到 Docker 运行时后底层还是 containerd 在干活只是上层接口换成了 Docker。3.2 修改 k3s.service 的 ExecStartK3S 的服务文件在/etc/systemd/system/multi-user.target.wants/k3s.service用编辑器打开vim /etc/systemd/system/multi-user.target.wants/k3s.service找到ExecStart这一行原始内容是ExecStart/usr/local/bin/k3s server --write-kubeconfig-mode644改成ExecStart/usr/local/bin/k3s server --write-kubeconfig-mode644 --docker --no-deploy traefik--docker是切换运行时的关键参数--no-deploy traefik是顺手关掉默认的 Traefik 部署如果你需要 Ingress 就别加这个。改完重载并重启systemctl daemon-reload systemctl restart k3s3.3 config.toml 配置骨架K3S 的配置文件在/etc/rancher/k3s/config.toml如果你想把运行时参数写进配置文件而不是 service 文件可以用下面这个骨架# /etc/rancher/k3s/config.toml write-kubeconfig-mode 644 docker true no-deploy [traefik] # 容器运行时相关 container-runtime-endpoint unix:///var/run/docker.sock # 镜像仓库镜像加速按需替换 # private-registry /etc/rancher/k3s/registries.yaml注意docker true和 service 文件里的--docker二选一即可同时写会以 service 文件为准。container-runtime-endpoint指向 Docker 的 socket改完同样要systemctl daemon-reload systemctl restart k3s。3.4 Cline 的 settings.json 示例Cline 在 VS Code 里的配置走settings.json把 API 地址和 Key 填进去{ cline.apiProvider: openai, cline.openaiApiKey: 你的_TaoToken_Key, cline.openaiBaseUrl: https://taotoken.net/api, cline.model: claude-sonnet-4-20250514 }openaiBaseUrl指向 TaoToken 的 API 地址openaiApiKey填你刚才在控制台建的 Key。模型名按你实际要用的填这里只是示例。3.5 CC Switch 的配置示例CC Switch 用来在多个 Claude Code 配置间切换它的配置文件里同样把 base URL 指向 TaoToken{ profiles: { taotoken: { apiKey: 你的_TaoToken_Key, baseUrl: https://taotoken.net/api, model: claude-sonnet-4-20250514 } }, activeProfile: taotoken }这样切换 profile 的时候Key 和地址一起切不会出现地址对了 Key 错了的情况。4. 验证请求容器与 AI 工具是否都正常改完运行时先验证 K3S 侧。用crictl看容器列表crictl ps如果输出里能看到运行中的容器说明 containerd 这层是通的。再用 Docker 看docker ps切到 Docker 运行时后docker ps应该能列出 K3S 管理的容器。如果docker ps为空但crictl ps有内容说明运行时没切成功回去检查ExecStart里的--docker是否生效。接着验证 AI 工具侧。用 curl 直接打 TaoToken 的 APIcurl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer 你的_TaoToken_Key \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: ping}] }返回里有choices字段和内容说明 Key 和地址都对。如果返回 401检查 Key 有没有复制全返回 404检查 base URL 是不是写成了带/v1的完整路径TaoToken 的 base 是https://taotoken.net/api具体路径由工具自己拼。最后在 Cline 里发一条消息看它能不能正常返回。Cline 走的是settings.json里的配置如果 curl 通了但 Cline 不通多半是settings.json里字段名写错了对照上面的示例检查。5. 本篇常见错排查错误一systemctl restart k3s后服务起不来。先看日志journalctl -u k3s -n 50 --no-pager常见原因是ExecStart里参数拼错比如--docker写成了-docker或者--no-deploy后面跟了不存在的组件名。改回原样再重启确认服务能起来后再加参数。错误二docker ps报Cannot connect to the Docker daemon。Docker 服务没启动执行systemctl start docker systemctl enable docker。K3S 切到 Docker 运行时后依赖 Docker daemon 在跑daemon 挂了 K3S 也会受影响。错误三crictl ps报连接超时。检查/var/run/docker.sock是否存在以及config.toml里的container-runtime-endpoint是否指向了正确的 socket。Containerd 的 socket 和 Docker 的 socket 路径不一样切运行时后要对应改。错误四Cline 返回model not found。模型名写错了或者 TaoToken 那边没有开通这个模型。去模型对话页面确认可用模型列表把settings.json里的cline.model改成列表里有的。错误五curl 通了但 Cline 超时。检查 VS Code 的网络设置有些环境会走系统代理而 curl 不走。把settings.json里的 base URL 确认成https://taotoken.net/api不要带多余路径。错误六改完运行时后旧容器不见了。这是正常的Containerd 和 Docker 的容器存储是分开的切运行时后原来的容器不会自动迁移。需要重新部署工作负载或者用kubectl get pods -A看 Pod 是否在重建。6. 接入通道与后续动作运行时切换和 AI 工具接入都验证通过后日常维护就两件事K3S 侧看crictl ps和docker ps是否一致AI 侧看 Key 有没有过期。TaoToken 的 Key 在控制台的 API Keys 页面管理接入文档在 doc 路径下配置格式有更新会写在那里。如果你只是临时验证模型通不通用模型对话页面最快不用配任何本地文件。长期跑编码 Agent 的话Coding Plan 那条线更适合Key 和额度管理都在一个地方。Cline 和 CC Switch 的配置改完后建议把settings.json和 CC Switch 的 profile 文件一起备份换机器时直接复制省得重新对 Key。最后提醒一句config.toml和k3s.service里的运行时参数不要同时改改一个地方就行改完必须daemon-reload再重启否则 systemd 用的还是旧配置。
返回列表