AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79433005
Accepted
ninjab3s
ninjab3s
Asked: 2025-02-12 20:15:33 +0800 CST2025-02-12 20:15:33 +0800 CST 2025-02-12 20:15:33 +0800 CST

Kubernetes PostStartHook 使用 curl 失败

  • 772

我尝试让 postStart 钩子在容器中工作,但总是失败。我收到的错误如下:

kubelet[1057]: E0212 11:07:20.205922    1057 handlers.go:78] "Exec lifecycle hook for Container in Pod failed" err=<
kubelet[1057]:         command 'curl -H 'Content-Type: application/json' -d '{ \"restarted\": True}' -X POST http://localhost:5000/restarted' exited with 2: curl: (2) no URL specified
kubelet[1057]:         curl: try 'curl --help' or 'curl --manual' for more information
kubelet[1057]:  > execCommand=[curl -H 'Content-Type: application/json' -d '{ \"restarted\": True}' -X POST http://localhost:5000/restarted] containerName="srsran-cu-du" pod="srsran/srsran-project-cudu-chart-78f658b865-pjvt2" message=<
kubelet[1057]:         curl: (2) no URL specified
kubelet[1057]:         curl: try 'curl --help' or 'curl --manual' for more information
kubelet[1057]:  >

我的清单中的钩子如下所示:

lifecycle:
  postStart:
    exec:
      command: [ "curl", "-H",  "'Content-Type: application/json'", "-d", "'{ \"restarted\": True}'", "-X", "POST http://localhost:5000/restarted" ]

其呈现为curl -H 'Content-Type: application/json' -d '{ \"restarted\": True}' -X POST http://localhost:5000/restarted。

如果我直接在容器中运行 curl 命令,它会正常工作。但是当通过 posStart 钩子运行它时,它不起作用。我做错了什么?

我尝试过用 替换'但\\\"也没有用。

kubernetes
  • 1 1 个回答
  • 19 Views

1 个回答

  • Voted
  1. Best Answer
    David Maze
    2025-02-12T20:36:39+08:002025-02-12T20:36:39+08:00

    当您使用数组形式command:或将命令作为容器的 传递时args:,您需要为每个 YAML 列表项传递一个 shell 单词。导致错误的最直接原因是最后一个列表项中有两个单词,因此curl将其解释为请求 HTTP 方法的单个参数POST http://...(包括空格),然后 URL 中没有后续参数。

    您还可能会从标题中收到错误Content-Type::因为在双引号 YAML 字符串内有一组单引号,所以curl会将这些引号视为参数的一部分-H,并且它可能会发送无效的 HTTP 标题或拒绝标题语法本身。

    将其拆分为每个单词一个参数,使用 YAML 块序列语法,并且仅在需要时使用 YAML 引用,我可能会写:

    command:
      - curl
      - -H
      - 'Content-Type: application/json'  # quotes required, else `key: value` looks like a mapping
      - -d
      - '{ "restarted": true }'           # YAML single quoting; double quotes do not need to be escaped; some quoting required else this looks like a JSON object
      - -X
      - POST
      - http://localhost:5000/restarted   # note two separate words
    

    或者你可以使用相同的引用规则将其重新打包成内联列表(“流序列”)

    command: [curl, -H, 'Content-Type: application/json', -d, '{ "restarted": true }', -X, POST, http://localhost:5000/restarted]
    

    再次注意,标题只有一组引号Content-Type:,并且POST和http://...是单独的列表项。如果您愿意,也可以引用其他单词,但只有可能与其他 YAML 语法混淆的几个词才需要引用。

    • 0

相关问题

  • K8Studio 普罗米修斯公制

  • Kong Ingress Controller:如何从配置中删除插件条目?

  • Kubernetes 服务是否在特定节点上运行?

  • kubernetes:如何在容器创建期间在 pod 的容器中安装软件包 [关闭]

  • 我如何在 kubectl 中将上下文设置为默认

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve