首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
k3sup 完整实战指南:60 秒通过 SSH 引导 K3s 集群(install / join / HA / Pro)
📅 2026/9/28 20:12:02
✍️ 爱科研究院
👁 阅读 3,247
云原生运维CLI【免费下载链接】k3supbootstrap K3s over SSH in 60s 项目地址https://gitcode.com/gh_mirrors/k3/k3sup点击查看免费下载k3sup读作 ketchup番茄酱之意是一个用 Go 编写的轻量级工具只需 SSH 访问和一个k3sup二进制文件就能在任何本地或远程虚拟机上从零到 KUBECONFIG在约 60 秒内让你在自己的电脑上运行kubectl get pods。本文以当前仓库的 README.md 为核心结合 main.go 与cmd/下的命令实现源码系统讲解 k3sup 的工作原理、CE社区版与 Pro 的全部命令用法、两种 HA 多主架构的搭建流程、Raspberry Pi 实战以及故障排查方法帮助你完整掌握这套以 SSH 为唯一前置条件的 K3s 引导方案。概念架构k3sup 在你的本地机器上运行通过 SSH 把 K3s 安装到任意 VM如 AWS EC2、DigitalOcean 等并把 kubeconfig 拉回本地。一、k3sup 是什么解决了什么问题k3sup 通过ssh将k3s安装到远程 Linux 主机也可以把已有的 Linux 主机作为agentsK3s 术语中的 worker/节点加入 k3s 集群。整个过程中你永远不需要登录到远程服务器。工具本身是 Go 编写的静态二进制交叉编译支持 Linux、Windows、macOS甚至 Raspberry Pi。安装流程大致是先用 Rancher 提供的官方脚本安装k3s同时传入主机公网 IP 以保证 TLS 正常工作随后从服务器取回kubeconfig并改写使你可以从笔记本上用kubectl连接。也许你会问这些用 bash 也能做为什么还需要专门工具README 的解释是k3sup 把对许多开发者而言非常手动、容易出错的流程自动化了——一旦你用惯用的工具创建好 VMk3sup让你距离在本地跑kubectl get pods只差 60 秒。如果目标就是本机还可以用k3sup install --local完全绕过 SSH。从源码看命令体系由 main.go 注册install、join、ready、update、plan、node-token、get-config、get含get pro与pro等命令全部基于 Cobra 框架构建其中k3sup get pro会从容器镜像仓库拉取 Pro 二进制见下文 Pro 章节。典型使用场景用k3sup install在任意 VM 上引导 K3s 集群——无论是手动、CI 中还是通过cloud-init在裸金属、Raspberry Pi、VM、AWS EC2、Google Cloud、DigitalOcean、Civo、Linode、Scaleway 等平台从零到kubectl构建高可用HA多主多 server集群用k3sup-pro get-config从已有集群拉取 KUBECONFIG用k3sup join把节点加入已有 k3s 集群用k3sup plan 一份包含 IP 地址的 JSON 文件构建面向自动化与规模化测试的大集群。二、k3sup 的工作原理四条核心步骤README 用一张 ASCII 图清晰描述了 k3sup 的完整工作流程k3sup install --------------------- ----------------------------- | | 1. SSH | | | Your Laptop / ----------------| Remote Server (VM/RPi) | | Workstation | | | | | 2. Install | --------------------- | | ---------------- | k3s --------| | k3s (server/agent) | | | | kubectl | | | --------------------- | | ---------------- | 3. Fetch | | | | kubeconfig |- kubeconfig | | | ---------------- | ----------------------------- | | --------------------- k3sup join ------------------------------- | | Agent 1 | ------------------------------- | | Agent 2 | ------------------------------- | Agent n | -----------四步分别是k3sup installSSH 进入服务器并安装 k3skubeconfig自动抓取 kubeconfig 到你的笔记本k3sup join通过 SSH 把 agent 节点加入集群kubectl从笔记本直接使用。在 cmd/install.go 的实现中makeInstallExec会拼接INSTALL_K3S_EXECserver --tls-san host ...形式的安装环境变量最终执行形如curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC... sh -的远程命令getScript常量定义于 cmd/install.go。抓取 kubeconfig 的远程命令则是sudo cat /etc/rancher/k3s/k3s.yaml。Tip在 Mac、Linux 与 WSL2 上可以配合 SlicerVM 快速创建单节点或多节点 K3s 集群。三、下载与安装 k3sup CEk3sup 以静态 Go 二进制分发MacOS 和 Linux 可用官方安装脚本Windows 用户可直接下载可执行文件curl -sLS https://get.k3sup.dev | sh sudo install k3sup /usr/local/bin/ k3sup --helpWindows 用户可以用普通的 Windows command prompt 直接运行k3sup install和k3sup join。四、前置条件服务器的免密 sudo部分 Linux 主机已配置允许sudo免密执行没有配置的主机需要做如下修改README 中的标准做法# sudo visudo # 在文件底部添加一行 # 把 alex 换成你的用户名例如 ubuntu alex ALL(ALL) NOPASSWD: ALL大多数情况下Ubuntu 及其他发行版的云镜像默认已满足此要求无需额外配置。如果只需要单台服务器也可以交互式登录后改用k3sup install --local彻底绕开 SSH 与 sudo 前置条件。五、CE 核心命令k3sup install部署 K3s 服务器创建好运行 Ubuntu、Debian、Raspbian 等兼容系统的新 VM并确保已把注册的 SSH 密钥自动复制到新主机也可以用ssh-copy-id userIP手动复制即可开始安装。假设 IP 为192.168.0.1、用户名为ubuntuexport IP192.168.0.1 k3sup install --ip $IP --user ubuntu # 或者用主机名 SSH 密钥EC2 场景 export HOSTec2-3-250-131-77.eu-west-1.compute.amazonaws.com k3sup install --host $HOST --user ubuntu \ --ssh-key $HOME/ec2-key.pem安装完成后即可验证export KUBECONFIGpwd/kubeconfig kubectl get node注意应始终使用pwd/拼出完整路径之后可随意切换目录。install的全部可选参数以下是 README 与 cmd/install.go 中定义并行的完整参数清单参数默认值说明--clusterfalse以嵌入 etcd 模式embedded HA启动服务器要求 K8s 1.19--skip-installfalse已有 k3s 时跳过安装仅抓取 kubeconfig--ssh-key~/.ssh/id_rsa远程登录使用的 SSH 密钥路径--localfalse不使用 SSH在本机执行安装--local-pathkubeconfigkubeconfig 保存路径默认会被覆盖--mergefalse合并进已有文件而不是覆盖如--local-path ~/.kube/config --merge--contextdefault设置 kubeconfig 中的 context 名称--ssh-port22SSH 端口可指定如2222--no-extrasfalse禁用 servicelb 与 traefik--k3s-extra-args空传给 k3s 安装器的额外参数需加引号如--disable traefik、--docker多个参数用单引号组合如--disable traefik --docker--k3s-version空指定 k3s 具体版本如v1.21.1覆盖 channel--k3s-channelstable按渠道指定版本如stable--ipsecfalse强制 k3s 的--flannel-backend为ipsec--print-commandfalse打印通过 SSH 发送到远程机器的命令--datastore空把 SQL 连接串传给 k3s 的--datastore-endpoint需使用 Rancher 文档要求的格式--tls-san空为 API server 附加的额外 IP 或主机名--token空加密 datastore 用的 token所有节点必须一致--sudotrue安装时使用 sudoroot 用户且无 sudo 时可设为false运行k3sup install --help可以看到更多选项。源码级细节kubeconfig 是如何被改写的cmd/install.go 中的rewriteKubeconfig是理解 k3sup 魔力的关键它用strings.NewReplacer把服务器返回的 k3s.yaml 中的127.0.0.1、localhost替换为实际主机地址并把 context 名default替换为--context指定的值。也就是说服务器上生成的 kubeconfig 原本指向本机回环地址k3sup 负责把它翻译成你的笔记本可以直连的公网地址。当指定--merge时mergeConfigs 会把新集群配置写入临时文件通过设置KUBECONFIG主文件:临时文件环境变量调用kubectl config view --merge --flatten完成合并Windows 下路径分隔符为;。最终写盘时文件权限为0600writeConfig保证 kubeconfig 的敏感内容不被其他用户读取。六、检查集群是否就绪k3sup ready有多种方式确认集群可用。k3sup 通过 KUBECONFIG 执行 kubectl get nodes检查每个节点含 agent/worker的 Ready 状态。在节点上直接安装并检查k3sup install \ --local \ --context localk3s k3sup ready \ --context localk3s \ --kubeconfig ./kubeconfig检查保存在本地文件的远程服务器k3sup install \ --ip 192.168.0.101 \ --user pi k3sup ready \ --context default \ --kubeconfig ./kubeconfig检查默认 KUBECONFIG 中的合并 contextk3sup install \ --ip 192.168.0.101 \ --user pi \ --context pik3s \ --merge \ --local-path $HOME/.kube/config # $HOME/.kube/config 是 kubeconfig 的默认位置 k3sup ready --context pik3sready命令cmd/ready.go默认尝试--attempts 25次、每次间隔--pause 2s通过kubectl get nodes -ojsonpath{.items..status.conditions[-1:].status}判断所有节点是否为True随后还会等待 default service account 创建完成这是 CI 场景下曾引发失败的环节可用--quiet抑制每次尝试的输出。七、把集群合并进你的 KUBECONFIG远程集群默认的 context 名是default但可以用下面的方式覆盖并合并进主配置文件$HOME/.kube/config然后用kubectl config get-contexts或kubectx管理k3sup install \ --ip $IP \ --user $USER \ --merge \ --local-path $HOME/.kube/config \ --context my-k3s此后即可kubectl config use-context my-k3s或kubectx my-k3s切换。八、k3sup join把 agent 节点加入集群假设已有服务器并执行过export SERVER_IP192.168.0.100 export USERroot k3sup install --ip $SERVER_IP --user $USER接着把一个或多个agent加入集群export AGENT_IP192.168.0.101 export SERVER_IP192.168.0.100 export USERroot k3sup join --ip $AGENT_IP --server-ip $SERVER_IP --user $USER如果 SSH 登录 agent 与 server 的用户名不同必须通过--server-user参数提供 server 的用户名。执行完上面的命令你就拥有了一个两节点集群——无论是在本地 VM、Raspberry Pi、64 位 ARM 还是 EC2 云 VM 上。源码级细节join 如何获取令牌并安装 agentcmd/join.go 展示了 join 的两段式流程若未通过--node-token或--node-token-path预置令牌k3sup 会先 SSH 到 server执行sudo cat /var/lib/rancher/k3s/server/node-token数据目录可用--server-data-dir覆盖默认/var/lib/rancher/k3s/取回节点令牌并尽早关闭该连接随后 makeJoinExec 构造K3S_URLhttps://server:6443、K3S_TOKENtoken与INSTALL_K3S_EXEC等环境变量以curl -sfL https://get.k3s.io | ... sh -s -的方式在目标节点安装 agentserverAgentfalse或额外 serverserverAgenttrue时追加server --server url并可选--tls-san。join还支持--server-url指定与--server-ip/--server-host不同的加入 URL、--server-ssh-port指定连接 server 的独立 SSH 端口以及--k3s-extra-args如--node-taint keyvalue:NoExecute。九、使用硬件认证 / 2FA 或 SSH Agent以下情况建议使用ssh-agentSSH 密钥受密码保护不想每次 k3sup 命令都输入密码使用 YubiKey 之类的硬件认证设备进行 SSH 会话认证。启用方法$ eval $(ssh-agent) Agent pid 2641757如果密钥是加密的可选执行ssh-add ~/.ssh/id_rsa。此后运行任何 k3sup 命令SSH 密钥会从 ssh-agent 请求而非默认位置。也可以用--ssh-key指定特定密钥对。从源码看cmd/install.go 的connectOperator连接时会优先尝试仅使用 SSH Agent 认证MacOS/Linux 上读取SSH_AUTH_SOCK环境变量失败后才回退到解析默认或指定的私钥文件若私钥带密码短语会先尝试从 ssh-agent 匹配公钥否则交互式提示输入密码短语。十、HA 多主集群一外部 SQL 数据存储K3s 多主HA模式搭配外部存储最简易的测试方式是使用 DigitalOcean 托管 MySQL。从 DigitalOcean 控制台拿到连接串并改写。改写前mysql://doadmin:80624d3936dfc8d2e80593db-mysql-lon1-90578-do-user-6456202-0.a.db.ondigitalocean.com:25060/defaultdb?ssl-modeREQUIRED改写后mysql://doadmin:80624d3936dfc8d2e80593tcp(db-mysql-lon1-90578-do-user-6456202-0.a.db.ondigitalocean.com:25060)/defaultdb注意去掉了?ssl-modeREQUIRED并把主机/端口包在tcp()中。这与 cmd/install.go 中的校验逻辑一致——源码会直接拒绝包含ssl-modeREQUIRED的连接串并要求 mysql 主机必须以tcp(host:port)形式给出。export DATASTOREmysql://doadmin:80624d3936dfc8d2e80593tcp(db-mysql-lon1-90578-do-user-6456202-0.a.db.ondigitalocean.com:25060)/defaultdb可以给命令前加两个空格防止它被写入 bash history。生成用于加密数据的 token如果已有运行中的节点可以登录节点查看/var/lib/rancher/k3s/server/token# 生成 token 的最佳方式 export TOKEN$(openssl rand -base64 64) # 无 openssl 的 Linux 主机备选 export TOKEN$(tr -dc A-Za-z0-9 /dev/urandom | head -c 64) # 再不行就试试 export TOKEN$(head -c 64 /dev/urandom|shasum| cut -d - -f 1)创建三台 VM两台作 server、一台作 agentexport SERVER1104.248.135.109 export SERVER2104.248.25.221 export AGENT1104.248.137.25安装第一台 serverk3sup install --user root --ip $SERVER1 --datastore${DATASTORE} --token${TOKEN}安装第二台 serverk3sup install --user root --ip $SERVER2 --datastore${DATASTORE} --token${TOKEN}加入第一个 agent加入任一 server 均可此步骤不需要 datastorek3sup join --user root --server-ip $SERVER1 --ip $AGENT1如果 SSH 登录 agent 与 server 的用户名不同同样需要--server-user参数。此时执行kubectl get node会看到两个 master/server 与一个 agentkubectl get node NAME STATUS ROLES AGE VERSION k3sup-1 Ready master 73s v1.19.6k3s1 k3sup-2 Ready master 2m31s v1.19.6k3s1 k3sup-3 Ready none 14s v1.19.6k3s1不过 agent 是加入第一台 server 的——如果第一台 server 宕机agent 实际也会离线。有两种方式消除对单台主机 IP 的依赖一是创建云厂商的 TCP 负载均衡器二是创建包含所有 server IP 的 DNS 轮询记录。以 DigitalOcean 为例在 Networking 菜单点击 Load Balancer在与 Droplet、SQL 同区域创建选择两台 Droplet使用TCP端口6443。若还想用k3sup join指向 LB 的 IP还需要额外放行TCP端口22健康检查也设置为TCP 端口6443。把 LB 地址存入环境变量export LB174.138.101.83用 ssh 登录两台 server编辑/etc/systemd/system/k3s.service把--tls-san及其后的地址改为 LB 的地址ExecStart/usr/local/bin/k3s \ server \ --tls-san \ 104.248.135.109 \改为ExecStart/usr/local/bin/k3s \ server \ --tls-san \ 174.138.101.83 \然后执行并重启两台 server 都要做sudo systemctl daemon-reload \ sudo systemctl restart k3s-agentagent 侧可手动编辑/etc/systemd/system/k3s-agent.service.env或若 LB 已放行端口 22再次执行k3sup join --user root --server-ip $LB --ip $AGENT1最后用 LB 的 IP 重新生成 KUBECONFIGk3sup install --skip-install --ip $LB登录第一台 server 执行sudo systemctl stop k3s模拟故障然后确认 kubectl 依然可用export KUBECONFIGpwd/kubeconfig kubectl get node -o wide NAME STATUS ROLES AGE VERSION k3sup-1 NotReady master 23m v1.19.6k3s1 k3sup-2 Ready master 25m v1.19.6k3s1 k3sup-3 Ready none 22m v1.19.6k3s1你刚模拟了一台 master/server 的故障而 kubectl 依然可以访问——一个具备韧性的 k3s 集群就这样建成了。十一、HA 多主集群二内嵌 etcd从 k3sv1.19.5k3s1开始k3s 提供名为 embedded etcd 的多主k3s 术语为多 server配置。它需要 quorum法定人数即奇数个节点且至少三个。初始化第一台 server注意--cluster标志export SERVER_IP192.168.0.100 export USERroot k3sup install \ --ip $SERVER_IP \ --user $USER \ --cluster \ --k3s-version v1.19.1k3s1加入每台额外的 server注意新的--server标志export USERroot export SERVER_IP192.168.0.100 export NEXT_SERVER_IP192.168.0.101 k3sup join \ --ip $NEXT_SERVER_IP \ --user $USER \ --server-user $USER \ --server-ip $SERVER_IP \ --server \ --k3s-version v1.19.1k3s1查看kubectl get nodekubectl get node NAME STATUS ROLES AGE VERSION paprika-gregory Ready master 8m27s v1.19.2-k3s cave-sensor Ready master 27m v1.19.2-k3s如果首次安装时使用了--no-extras每次 join 也要带上export USERroot export SERVER_IP192.168.0.100 export NEXT_SERVER_IP192.168.0.101 k3sup join \ --ip $NEXT_SERVER_IP \ --user $USER \ --server-user $USER \ --server-ip $SERVER_IP \ --server \ --no-extras \ --k3s-version v1.19.1k3s1在 cmd/join.go 的PreRunE中可以看到--tls-san与--no-extras仅在--server模式下允许使用——这是源码层面的约束防止对纯 agent 节点误传这些参数。十二、Raspberry Pi2、3 或 4微教程几分钟内即可在 Raspberry Pi 2/3/4 上把 Kubernetes 跑起来最终在本地电脑拿到可远程访问集群的 KUBECONFIG 文件。概念架构k3sup 在本地运行针对裸金属 ARM 设备部署。下载 etcher.io 用于烧录系统用 Raspbian Lite 烧录 SD 卡在 boot 分区创建名为ssh的空文件以启用 SSH若还没有 SSH 密钥用ssh-keygen生成一路回车即可用ping -c raspberrypi.local找到 RPi 的 IP然后export SERVER_IP填入该 IP编辑/boot/cmdline.txtUbuntu 为/boot/firmware/cmdline.txt在行末追加内核容器特性参数cgroup_enablecpuset cgroup_memory1 cgroup_enablememory复制 SSH 密钥ssh-copy-id piraspberrypi.local运行k3sup install --ip $SERVER_IP --user pi指向配置文件并查看节点状态export KUBECONFIGpwd/kubeconfig kubectl get node -o wide此时你的笔记本已经可以通过 kubectl 访问运行着 k3s 的 Raspberry Pi。若要加入更多节点为每台额外的 RPi 执行export IP后运行k3sup join --ip $IP --server-ip $SERVER_IP --user pi记住所有这些命令都在你的电脑上运行而不是在 RPi 上。十三、K3sup Proplan / apply 驱动的 IaaC 与 GitOpsCE 版适合实验探索而k3sup-pro为长期以来的 IaaC/GitOps 诉求而生它新增plan与apply命令可并行地自动化从小到大的安装plan 文件可自定义并纳入 Git 维护与更新。支持所有 K3sup Pro 用户的渠道是 K3sup CE 仓库的 Issue Tracker。Pro 版命令总览activate获取/刷新许可证密钥商业用户直接把密钥放到~/.k3sup/LICENSEplan读取一个或多个 JSON 文件生成 HA 安装的 YAML 计划apply并行执行安装可选预先下载 K3s 二进制并通过 SSH 拷贝到各主机exec在集群所有节点上运行命令get-config从已有安装获取 kubeconfiguninstall并行地从集群所有节点卸载 k3s经典 CE 命令install、join也保留在同一个二进制中用于向后兼容与快速测试。--predownload标志是迈向完全离线airgapped方案的第一步同时能降低带宽、加快安装速度。获取k3sup-prok3sup-pro二进制打包在容器镜像中而非 GitHub Releases。推荐用 K3sup CE 获取PRO1 curl -sLS https://get.k3sup.dev | sudo -E sh或者若已有最新版 K3sup CE可让它自我替换sudo k3sup get prok3sup get pro可通过--path指向你有写权限的目录来省略 sudo。该命令的实现cmd/get_pro.go会从容器镜像仓库拉取与当前系统架构匹配的镜像层、解包出k3sup-pro二进制先执行version自检再安装到目标路径默认/usr/local/bin/。如需特定版本可先查看镜像仓库中的版本列表再通过--version指定。激活 K3sup Pro运行k3sup-pro activate用 GitHub.com 验证身份只需在笔记本/工作站上做一次托管 K3s 的机器无需额外步骤。商业用户把许可证密钥放在$HOME/.k3sup/LICENSE即可无需运行activate。plan/apply自动化与大规模安装k3sup-pro plan读取包含主机信息的 JSON 文件并生成可编辑的 YAML 计划。示例输入文件[ { hostname: k3s-server-1, ip: 192.168.129.138 }, { hostname: k3s-server-2, ip: 192.168.129.128 }, { hostname: k3s-server-3, ip: 192.168.129.131 }, { hostname: k3s-agent-1, ip: 192.168.129.130 }, { hostname: k3s-agent-2, ip: 192.168.129.127 } ]下面这条命令将创建 1 台主 server 2 台附加 server组成 HA etcd 集群最后两台作为 agentk3sup pro plan ./n100.json ./n200.json \ --user ubuntu \ --servers 3 \ --svclbfalse \ --server-extra-args --disable traefik \ --agent-extra-args --node-label workertrue生成的示例 plan.yamlversion: k3s_channel: stable server_options: user: ubuntu ssh_port: 22 k3s_extra_args: --disable traefik parallel: 5 traefik: true agent_options: k3s_extra_args: --node-label workertrue hosts: - name: k3s-1 role: server host: 192.168.138.2 architecture: x86_64 - name: k3s-2 role: server host: 192.168.138.3 architecture: x86_64 - name: k3s-3 role: server host: 192.168.138.4 architecture: x86_64 - name: k3s-agent-1 role: agent host: 192.168.137.2 architecture: x86_64 - name: k3s-agent-2 role: agent host: 192.168.137.3 architecture: x86_64 - name: k3s-agent-3 role: agent host: 192.168.137.4 architecture: x86_64YAML 计划文件可编辑并提交到 Git用于后续维护与升级。准备好后执行k3sup-pro apply并行安装--predownload先把 k3s 二进制下载到本地再通过 SSH 拷贝到每台主机加速安装--parallel设置同时运行的安装步骤数。k3sup pro apply \ --predownload \ --parallel 10安装后可用k3sup-pro get-config获取 kubeconfig然后合并进主 KUBECONFIGk3sup pro get-config \ --local-path $HOME/.kube/config \ --context my-k3s \ --merge或输出为本地文件k3sup pro get-config \ --local-path ./kubeconfig export KUBECONFIGpwd/kubeconfig补充说明CE 中的k3sup plancmd/plan.go是 Pro 的前身思路——读取 JSON 主机清单直接生成一段包含k3sup install/k3sup join调用的 shell 脚本第一台主机执行install --cluster并导出NODE_TOKEN$(k3sup node-token ...)前 N 台--servers默认 3作为 server 加入其余作为 agent--limit可限制使用的主机数量--background让后续节点安装以后台方式并行执行kubeconfig 存在时--merge默认开启自动附带--merge。k3sup-pro uninstall快速卸载 / 重置k3sup-pro uninstall会从集群所有节点卸载 k3s。若有 plan YAML 文件用户名、SSH 端口与密钥文件都会从文件中读取按顺序并行卸载先移除 agent再移除附加 server最后移除主 server。k3sup pro uninstall如果只有设备 JSON 文件可能还需要--user和/或--ssh-keyk3sup pro uninstall \ --user ubuntu \ --ssh-key ~/.ssh/id_rsak3sup pro exec在每台机器上运行命令k3sup-pro exec可在集群所有节点运行命令可用--servers或--agents限定范围。在所有节点运行k3sup pro exec \ free -h仅在 server 上运行k3sup pro exec \ --servers \ sudo journalctl -u k3s -n 100仅在 agent 上运行k3sup pro exec \ --agents \ sudo journalctl -u k3s-agent -n 100k3sup pro get-config对接已有集群k3sup-pro get-config无需任何安装步骤即可从已有 K3s 安装取回 kubeconfig。当你已经跑着 K3s、只想拿到集群配置或当初生成了本地./kubeconfig而现在想以有意义的 context 名合并进主$HOME/.kube/config时非常有用。从远程服务器获取 kubeconfigk3sup pro get-config \ --host 192.168.0.100 \ --user ubuntu \ --local-path ./kubeconfig从本地安装获取k3sup pro get-config --local合并进主 KUBECONFIGk3sup pro get-config \ --host 192.168.0.100 \ --user ubuntu \ --merge \ --local-path $HOME/.kube/config \ --context my-remote-cluster使用自定义 SSH 密钥k3sup pro get-config \ --host 192.168.0.100 \ --user ubuntu \ --ssh-key $HOME/.ssh/my-key \ --local-path ./kubeconfig如果还没有k3sup-pro也可以用带--skip-install标志的k3sup install达到同样效果。CE 版同样内置k3sup get-configcmd/get-config.go支持--local、--merge、--context等参数并复用与 install 相同的obtainKubeconfig改写逻辑。K3sup Pro 路线图首版 K3sup Pro 大体功能完备商业用户还有以下规划特性通过 bastion 主机使用 K3sup Pro Plan/Apply先在本地机器下载软件包、再分发到目标机的离线airgapped安装。十四、安全注意事项如果使用公有云务必参考 Rancher 团队关于防火墙 / 安全组的设置说明尤其是 k3s 的端口开放要求network 相关的安装要求章节。K3s 集群通常需要放行 6443API server与 8472/51820 等节点间通信端口具体以 k3s 官方文档为准。十五、故障排查与支持问题是否出在 K3s 本身遇到问题先想一下这多半是 K3s 的问题而非 k3sup 的。k3sup 是一个非常成熟的项目覆盖的几个使用场景表现稳定。K3s 的支持渠道包括 Rancher Slack 的#k3s频道以及在 K3s 仓库提交 issue。想装特定版本的 K3s参见k3sup install --help的--k3s-version与--k3s-channel。系统是否满足 Kubernetes 运行要求运行k3s check-config查看输出——README 作者定期用 Raspberry Pi OS 与 Ubuntu LTS 测试 K3sup。常见问题最常见的问题是漏掉了一步好在大都能从 K3s 服务日志看出端倪Raspberry Pi 未启用 cgroups多半没改cmdline.txt以启用 CPU 与内存 cgroup按本文 Raspberry Pi 章节的说明修改在节点上运行kubectl不要这样做。k3sup 会把文件复制到你的本地工作站。除了查日志/升级系统不要登录 agent 或 serversudo: a terminal is required to read the password为主机配置免密sudo参见本文前置条件章节想不通过 SSH 直接在本机安装用k3sup install --local它不走 SSH 而是直接在主机上执行命令K3s server 没启动登录执行sudo systemctl status k3s或sudo journalctl -u k3sK3s agent 没启动登录执行sudo systemctl status k3s-agent在 etcd 集群中移除并重加 server 失败这是已知问题见 K3s 的 issue trackerHA 使用了不支持的数据库版本参见 Rancher 的 datastore 支持列表join 节点报ssh: handshake failed大概率是三种情况之一没执行ssh-copy-id——先运行它再用普通ssh确认可以无密码登录 server 与新节点RSA 公钥问题Go 库存在底层 issue请额外加--ssh-key ~/.ssh/id_rsa或你的私钥所在路径登录 server 与待加入节点使用的用户名不同为 server 提供--server-user参数。.ssh/config未被 k3sup 使用k3sup 不使用ssh命令行的 config 文件而是使用 CLI 标志运行k3sup install/join --help查看支持哪些参数。注意把--no-deploy传给--k3s-extra-args已被 K3s 1.17 的安装器废弃改用--disable或--no-extras。找回 KUBECONFIG 访问如果遇到需要sudo才能访问kubectl的情况不要直接在装有 K3s 的主机上运行kubectl。k3sup 的设计目标就是把集群配置改写/合并到你的本地 KUBECONFIG 文件——kubectl 只应在笔记本/客户端机器上运行。如果弄丢了 kubeconfig用k3sup get-config配合--merge、--context等标志即可找回。智能卡与 2FA警告请求支持智能卡 / 2FA 的 issue 会被立即关闭。该功能已被验证可用按现状提供。智能卡或 YubiKey 等 2FA 安全密钥可用只要正确配置好 ssh-agentMacOS 与 Linux 上 k3sup 会交给 agent 建立连接。上文SSH Agent / 2FA章节已给出配置方法。关于iptables的补充说明k3s 目前存在一个涉及iptables 1.8的问题可能影响网络通信该问题已在 Debian Buster 上被观察到其他发行版也可能受影响可在 k3s 与 Kubernetes 的相关 issue 中查找信息与临时方案。附术语与同类工具辨析术语对照Kubernetes 使用 master/slave 术语而 k3s 使用 server/agent。k3sk3sup 安装的发行版是一个合规、轻量、多架构的 Kubernetes 发行版适合本地/远程开发与边缘场景k3d在本地笔记本的 Docker 容器中运行 k3skind在 Docker 容器内运行 Kubernetes 集群做本地开发k3s 可通过 k3d 达到类似目的kind 不适合远程开发集群kubeadm创建功能完整、生产就绪的 Kubernetes 集群可带 HA通常比 k3s 更重更慢面向云 VM 或裸金属在低功耗 ARM 设备上不一定好用。结语从单机install、多节点join、ready就绪检查到外部 SQL 与内嵌 etcd 两种 HA 架构再到面向 GitOps 的plan/apply与exec/uninstall/get-configk3sup 用一条 SSH 连接串起了从零到 KUBECONFIG的全过程。本文所有命令均可对照仓库源码验证命令注册见 main.go核心安装逻辑见 cmd/install.go节点加入见 cmd/join.go就绪检查见 cmd/ready.go计划生成见 cmd/plan.go命令执行抽象见 pkg/operator/operator.go 与 pkg/operator/ssh_operator.go测试用例见 cmd/install_test.go 与 cmd/join_test.go。项目采用 MIT 许可见 LICENSEPro 版本的使用约束可查阅 EULA.md。赞分享云原生运维CLI【免费下载链接】k3supbootstrap K3s over SSH in 60s 项目地址https://gitcode.com/gh_mirrors/k3/k3sup点击查看免费下载相关推荐从0到1开发订单仪表板Dropbase实战案例详解从0到1开发订单仪表板Dropbase实战案例详解 Dropbase是一款帮助开发者使用Python构建内部Web应用的强大工具其自托管Worker能在您自10个你不知道的恶臭数字论证器高级用法10个你不知道的恶臭数字论证器高级用法 恶臭数字论证器是一款有趣的数字恶臭化工具能将任意数字转换为包含114514等元素的特殊表达式。本文将分享10个实用claude-obsidian Zettelkasten配置完整教程5步掌握原子笔记与密集链接claude obsidian Zettelkasten配置完整教程5步掌握原子笔记与密集链接 ! claude obsidian 项目封面AI 第二脑与AI 技能知识库知识管理RAG人工智能上一篇告别生硬平移动画ArcAnimator实现丝滑弧形过渡的完整指南下一篇Avalonia跨平台UI开发实战指南从XAML配置到高性能渲染创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/28 20:07:01
AI虚拟细胞:多组学整合→临床转化
2026/9/28 20:07:01
【BMS 系列教程】电池 SOH 特征工程实战:IC 曲线 + 物理特征,R² 从 0.49 提升到 0.90
2026/9/28 20:07:01
基于springboot + vue企业后台管理系统(源码+数据库+文档)
2026/9/28 22:22:18
Python深度学习人脸识别系统毕业设计:从CNN选型到答辩演示全链路
2026/9/28 22:22:18
Superpowers技能包:让AI编程Agent输出质量更稳的实战指南
2026/9/28 22:22:18
Superpowers 实战:为 AI 编程助手注入技能包与四阶段工作流
2026/9/28 22:22:18
Altium Designer晶振铺铜挖空设计原理与实操
2026/9/28 22:22:18
真实废弃物分类数据集实战:4,800张图从训练到部署
2026/9/28 22:17:18
C# FTP服务器源码带Web管理端:协议解析、文件传输与后台部署
2026/9/28 0:04:25
新手从零搭建网站促销活动策划避坑指南:3个方案费用全拆解
2026/9/28 0:04:25
网站被黑挂马?3步图解步骤搞定软件介绍下载网站建设安全
2026/9/28 0:04:25
国内可以做的国外兼职网站进阶技巧
2026/9/28 2:37:38
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
2026/9/28 5:00:42
新手入门看这篇:建设网站加盟避坑指南与SEO实操
2026/9/28 8:17:28
论文AIGC疑似度是什么意思?想查论文AI率有哪些免费工具?