本文永久链接: https://www.xtplayer.cn/rancher/rancher-rke2-change-server-url/

更新 rancher helm 安装参数

使用上一次安装或者更新 rancher 的 helm 参数,修改其中的 hostname,然后重新执行更新。

修改 rancher server-url

  1. 通过 helm 使用新的 hostname 更新完成之后,使用新的域名登录 rancher ui。
  2. 进入 rancher ui 后,点击左下角地球图标,在 Settings 中找到 server-url ,将其修改为新的域名。

获取节点请求 token

此处的 token 不能使用用户 API KEY,会报 500 错误。需要进入集群管理,点击目标集群,点击节点注册,在节点注册命令中获取此 token。

  1. 进入集群管理,点击目标集群。

    image-20260729161616014

  2. 在节点注册中,获取注册 token 备用。

    image-20260729161753431

更新 rancher-system-agent 配置

  1. 拷贝并修改以下脚本内容:

    1. 替换脚本中的 CATTLE_SERVER_URL,注意结尾不要添加 ‘/’。

    2. 替换脚本中的 CATTLE_TOKEN 为上一步骤中获取到的 token 值。

  2. 将脚本保存在所有 rke2 集群节点中,并执行 bash xxx.sh

#!/bin/bash
set -e # 遇到错误立即退出
CATTLE_SERVER_URL=https://xxx.xxxx.cn
# 注意: 需要进入集群管理,点击目标集群,点击节点注册,在节点注册命令中获取此 token。如果设置用户 API KEY 会报 500 错误。
CATTLE_TOKEN=xxxxxxxxxxxhwqd5m #
CATTLE_AGENT_VAR_DIR=/var/lib/rancher/agent
# 如果启用 debug, 添加 -v 参数
CURL_LOG="-sS"

# 创建目录
mkdir -p ${CATTLE_AGENT_VAR_DIR}

# 检查 cattle-id 文件是否存在
if [ ! -f "/etc/rancher/agent/cattle-id" ]; then
echo "Error: /etc/rancher/agent/cattle-id not found" >&2
exit 1
fi

systemctl stop rancher-system-agent.service

# 备份现有配置
if [ -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json ]; then
BACKUP_FILE="${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info-$(date +%Y%m%d_%H%M%S).json"
cp ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json ${BACKUP_FILE}
echo "Backup created: ${BACKUP_FILE}"
fi

# 获取新的连接信息
CATTLE_ID=$(cat /etc/rancher/agent/cattle-id)
echo "Using cattle-id: ${CATTLE_ID}"

# 执行 curl 请求
HTTP_CODE=$(curl -kL --connect-timeout 60 --max-time 60 --write-out "%{http_code}\n" ${CURL_LOG} \
-H "Authorization: Bearer ${CATTLE_TOKEN}" \
-H "X-Cattle-Id: ${CATTLE_ID}" \
"${CATTLE_SERVER_URL}/v3/connect/agent" \
-o ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp)

# 检查 HTTP 状态码
case $HTTP_CODE in
200|201|204)
# 检查文件是否为空或无效 JSON
if [ ! -s ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ]; then
echo "Error: Downloaded file is empty" >&2
exit 1
fi

# 验证是否为有效 JSON
if ! jq . ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp > /dev/null 2>&1; then
echo "Error: Downloaded file is not valid JSON" >&2
cat ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp
exit 1
fi

# 移动文件到最终位置
mv ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json
chmod 600 ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json
echo "Connection info updated successfully"

# 重启 rancher-system-agent 服务
echo "Restarting rancher-system-agent service..."
if systemctl restart rancher-system-agent; then
echo "Service restarted successfully"

# 可选:等待服务启动并检查状态
sleep 3
if systemctl is-active --quiet rancher-system-agent; then
echo "rancher-system-agent is running"
# 显示最近的日志
echo "Recent logs:"
journalctl -u rancher-system-agent.service --since "1 minute ago" --no-pager --lines=10
else
echo "Warning: rancher-system-agent service is not running" >&2
exit 1
fi
else
echo "Error: Failed to restart rancher-system-agent service" >&2
exit 1
fi
;;
*)
echo "Error: Failed to update connection info, HTTP code: ${HTTP_CODE}" >&2
# 显示错误响应内容
if [ -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ]; then
echo "Error response:" >&2
cat ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp >&2
rm -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp
fi
exit 1
;;
esac

更新 fleet 配置

在修改 rancher 访问域名后,fleet 持续交付相关组件状态可能会不正常。查看相关 pod,可以发现在连接旧的 rancher 域名。如果出现这种情况,点击 持续交付 按钮,接着点击集群,选择目标集群,点击强制更新。

image-20260729182332656

image-20260729182641890