【问题标题】:Azure VM extension update failureAzure VM 扩展更新失败
【发布时间】:2020-04-22 15:11:01
【问题描述】:

我尝试通过扩展向 VM 添加自定义脚本。我观察到,在创建 vm 时,默认情况下会创建名为“cse-agent”的 Microsoft.Azure.Extensions.CustomScript 类型。所以我尝试通过使用脚本属性对文件进行编码来更新扩展名

  az vm extension set \
  --resource-group test_RG \
  --vm-name aks-agentpool \
  --name CustomScript \
  --subscription ${SUBSCRIPTION_ID} \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"script": "'"$value"'"}'

$value 表示以 base 64 编码的脚本文件。

这样做会给我一个错误:

Deployment failed. Correlation ID: xxxx-xxxx-xxx-xxxxx. 
VM has reported a failure when processing extension 'cse-agent'. 
Error message: "Enable failed: failed to get configuration: invalid configuration:
'commandToExecute' and 'script' were both specified, but only one is validate at a time"

从文档中提到,当存在脚本属性时, 不需要 commandToExecute。正如您在上面看到的,我没有提到 commandToExecute,它以某种方式从以前的扩展中获取。有没有办法在不删除的情况下更新它?此外,了解 cse-agent 扩展在删除时会产生什么影响也会很有趣。

仅供参考:我已尝试从 VM 中删除“cse-agent”扩展程序并添加了我的扩展程序。它奏效了。

【问题讨论】:

    标签: azure azure-aks azure-vm


    【解决方案1】:

    CSE-AGENT vm 扩展至关重要,它管理所有需要的安装后配置,以将节点视为有效的 Kubernetes 节点。删除此 CSE 将破坏 VM 并使您的集群无法运行。

    如果您有兴趣将更改应用到现有集群中的节点,但不受官方支持,您可以利用以下项目。

    https://github.com/juan-lee/knode

    这允许您使用 DaemonSet 配置节点,这在您的节点池启用了自动扩展功能时会有所帮助。

    对于文件系统的简单节点更改,具有主机路径的特权 pod 也可以工作

    https://dev.to/dannypsnl/privileged-pod-debug-kubernetes-node-5129

    【讨论】:

    • 我检查了 knode 并观察到 ​​/etc/docker/daemon.json 可以从自述文件中配置。假设如果我想在 VM 中的 /etc/ 创建一个文件,是否可以使用 knode?​​span>
    • 这应该可以通过任何 deamonset 轻松实现,您只需要创建一个权限容器并挂载一个主机路径卷。
    • dev.to/dannypsnl/privileged-pod-debug-kubernetes-node-5129 这是一个很好的例子来说明如何实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多