如何在k3s Airgap离线安装中传递flags参数与环境变量
问题原因
你写的离线安装命令存在两处核心错误:
- 冗余使用了管道逻辑:在线安装用管道是为了把curl拉取的脚本内容传递给sh进程执行,离线场景下你已经有本地的install.sh脚本,不需要再通过管道喂给sh执行,放在管道后面的环境变量只会作用于sh进程,无法被前面执行的install.sh读取。
- INSTALL_K3S_EXEC参数存在引号嵌套错误:外层已经用双引号包裹参数值,内层
cluster_cidr变量外重复使用双引号会导致参数截断,变量无法正常解析。
正确配置方案
所有需要生效的环境变量都需要放在install.sh执行命令的前方,shell会自动将这些变量注入到脚本的运行环境中,写法如下:
INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_KUBECONFIG_MODE="644" \ INSTALL_K3S_EXEC="--flannel-backend=none --cluster-cidr=$cluster_cidr --disable=traefik" \ /usr/local/bin/install.sh
如果你的脚本没有可执行权限,可以用以下写法调用:
INSTALL_K3S_SKIP_DOWNLOAD=true \ K3S_KUBECONFIG_MODE="644" \ INSTALL_K3S_EXEC="--flannel-backend=none --cluster-cidr=$cluster_cidr --disable=traefik" \ sh /usr/local/bin/install.sh
内容的提问来源于stack exchange,提问作者Thor
相关产品推荐
相关产品推荐

