【问题标题】:Run a kubectl port forward inside docker container fails在 docker 容器内向前运行 kubectl 端口失败
【发布时间】:2019-10-30 12:28:36
【问题描述】:

我想在包含在容器中的程序中运行命令 kubectl port-forward。

代码如下:

list_pods = subprocess. \
        check_output(kub_props['get_pods'].format(**kwargs, **conf.config_data), shell=True).decode("utf-8")
    print(list_pods)
    pod_name = re.search(kub_props['re_pod_name'], list_pods).group(1)
    self.command = kub_props['port_forward'].format(pod_name=pod_name, **kwargs, **conf.config_data)
    print(self.command)
    self.sp: subprocess.Popen = subprocess.Popen(self.command.split(), shell=True)

现在,情况是: 我总是成功获取 pod 列表(因此 kubernetes 和 kubectl 配置正确)

  • 如果我直接在 Windows Session 中运行 python 代码->OK
  • 如果我在 linux 会话中运行命令以进行端口转发 ->OK
  • 如果我在容器中运行程序->NOK.

不过,更奇怪的是: 似乎它不理解第二个 cli,即转发的那个,并回答 kubectl 的可能命令列表 然后,它显示 pod 列表(打印 1),然后是命令(打印 2) 谢谢

【问题讨论】:

  • 您几乎肯定应该使用Kubernetes API,而不是尝试编写kubectl 命令的脚本。您应该从不使用字符串格式化操作创建 shell 命令;几乎不可能保证这一点的安全,而且在您描述的设置中,有动机的攻击者可以从集群中运行的任何服务收集信息。

标签: python-3.x docker kubectl portforwarding


【解决方案1】:

您几乎肯定应该使用Kubernetes API,而不是尝试编写 kubectl 命令的脚本。您应该从不使用字符串格式化操作创建 shell 命令;几乎不可能保证这种安全,而且在您描述的设置中,有动机的攻击者可以从集群中运行的任何服务收集信息。

转到Kubernetes Python client github 存储库以获取示例。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
相关资源
最近更新 更多