news 2026/6/26 3:26:26

腾讯云轻量服务器折腾 K3s 实录 (续):ArgoCD 部署避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
腾讯云轻量服务器折腾 K3s 实录 (续):ArgoCD 部署避坑指南

腾讯云轻量服务器折腾 K3s 实录 (续):ArgoCD 部署避坑指南

上回说到我们在腾讯云的 4G 轻量服务器上成功把 K3s 跑起来了,并打通了外网kubectl的直连。
今天这篇,我们继续推进,实战部署 GitOps 的核心控制面 ——ArgoCD

本以为有了 K8s 集群,装个 ArgoCD 只是kubectl apply一把梭的事,结果依然是“步步惊心”。这里把遇到的两个巨坑和终极解法记录下来。

坑一:ArgoCD CRD 文件过大导致 Annotation 溢出报错

按照官方文档,我们满心欢喜地敲下安装命令:

kubectl create namespace argocd kubectl apply-nargocd-fhttps://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

结果终端直接糊了一长串红字:

The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes

原因分析:
K8s 默认的kubectl apply使用的是Client-Side Apply (客户端应用)模式。它会非常实诚地把你整个 YAML 文件的内容塞进这个对象的last-applied-configuration注解 (Annotation) 里。
偏偏 ArgoCD 的核心 CRD(比如 ApplicationSet)的声明文件巨大无比,轻轻松松突破了 K8s 注解长度 256KB 的硬性限制,直接被 API Server 拒收了。

终极解法:使用 Server-Side Apply
既然客户端算不过来,就把合并的压力丢给服务端。只需要在命令里加一个--server-side参数,让 K8s 的 API Server 自己去处理状态合并:

kubectl apply --server-side-nargocd-fhttps://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

敲下这行命令,看着屏幕刷刷刷地输出serverside-applied,简直强迫症福音。

坑二:国内网络拉取沙盒镜像 (Pause) 失败导致 Pod 卡死

资源对象虽然建好了,但我通过kubectl get pods -n argocd一看,所有的 Pod 像木头一样死死卡在ContainerCreating状态,十几分钟一动不动。

describe命令深挖日志,发现了老熟人:

Failed to pull image "rancher/mirrored-pause:3.6"... dial tcp 162.125.x.x:443: connect: connection refused

原因分析:
这是国内云主机的通病。K3s/K8s 在启动任何 Pod 之前,都需要先从 Docker Hub 拉取基础的沙盒镜像(pause 镜像)。但目前国内直连registry-1.docker.io基本被掐断,连最底层的环境都初始化不了,业务镜像更是没戏。

终极解法:给 K3s 配置国内容器镜像加速器
注意,K3s 底层用的是 containerd,而不是 Docker,所以不要去改/etc/docker/daemon.json
你需要登录到服务器上,直接修改 K3s 的镜像配置表:

# 写入国内镜像加速源 (例如 DaoCloud, 南大源等)cat<<'EOF'|sudotee/etc/rancher/k3s/registries.yamlmirrors: docker.io: endpoint: - "https://docker.m.daocloud.io" - "https://docker.nju.edu.cn" - "https://registry.docker-cn.com" EOF# 重启 K3s 让配置生效sudosystemctl restart k3s

K3s 重启速度极快(通常不到两秒)。重启完成后,被卡住的 Pod 就像久旱逢甘霖一样,瞬间开始拉取镜像,状态全部变为Running

收尾与效果验证

当所有 Pod 都跑起来后,为了方便在外面通过浏览器直接访问 ArgoCD 的炫酷界面,我们直接把它原本内部的 ClusterIP 服务改成 NodePort,并固定映射到30080端口:

# 暴露 NodePortkubectl patch svc argocd-server-nargocd-p'{"spec": {"type": "NodePort", "ports": [{"port": 443, "nodePort": 30080}]}}'# 窃取初始的超级管理员密码kubectl-nargocd get secret argocd-initial-admin-secret-ojsonpath="{.data.password}"|base64 -d;echo

最后,记得去腾讯云控制台的安全组里把TCP 30080端口放通。
打开浏览器,访问https://你的公网IP:30080(忽略证书警告),输入admin和刚拿到的密码。看到 ArgoCD 后台界面的那一刻,所有的折腾都值了!

下一篇,我们将继续向这台 4G 战舰里塞入 Kong 网关数据面,真正把 GitOps 闭环跑通。敬请期待!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 5:46:18

ViGEmBus虚拟控制器驱动:3步解锁Windows游戏手柄无限可能

ViGEmBus虚拟控制器驱动&#xff1a;3步解锁Windows游戏手柄无限可能 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否遇到过想在PC游戏中使用PS4手柄却…

作者头像 李华
网站建设 2026/6/14 5:46:34

ROG Zephyrus S GX701深度评测:超薄游戏本如何实现高性能散热与结构创新

1. 西风之神再进化&#xff1a;当17寸巨屏遇上18.7mm超薄机身作为一名常年混迹于硬件评测圈的老玩家&#xff0c;我经手过的“性能猛兽”和“轻薄旗舰”不在少数&#xff0c;但能将这两者以如此极致方式融合的产品&#xff0c;确实不多见。华硕ROG玩家国度的“西风之神”系列&a…

作者头像 李华
网站建设 2026/6/14 5:46:36

告别‘不支持ARM’:为Kettle适配华为鲲鹏服务器的完整配置流程与思考

告别“不支持ARM”&#xff1a;Kettle在华为鲲鹏服务器上的深度适配指南当国产化替代浪潮席卷IT基础设施领域&#xff0c;华为鲲鹏服务器凭借其ARM架构的高效表现成为众多企业的首选。然而&#xff0c;将成熟的开源工具迁移至新架构平台时&#xff0c;技术团队常会遇到“Im sor…

作者头像 李华
网站建设 2026/6/23 21:07:47

3G芯片专利授权博弈:从高通壁垒到手机厂商的合规生存指南

1. 项目概述&#xff1a;一场关于3G芯片专利授权的深度剖析最近和几位在手机设计公司打拼的老朋友聊天&#xff0c;他们不约而同地抛来一个棘手的问题&#xff1a;“我们新项目选了某家的WCDMA基带芯片&#xff0c;但这专利授权到底该怎么弄&#xff1f;是直接找高通谈&#xf…

作者头像 李华
网站建设 2026/6/14 5:46:36

VB6实现Windows按钮突破工具:深入理解HWND与API消息机制

1. 项目概述&#xff1a;一个“灰色按钮”的克星在Windows桌面应用的日常使用或逆向分析中&#xff0c;我们经常会遇到一些“灰色”的按钮、滑块或输入框。这些控件被开发者通过设置Enabled属性为False的方式禁用&#xff0c;通常是为了限制未授权用户使用某些高级功能&#xf…

作者头像 李华