在Docker容器内向前运行kubectl端口失败

问题描述 投票:0回答:1

我想在包含在容器中的程序中运行命令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会话中运行python代码->确定
  • 如果我运行命令以在Linux会话中转发端口->确定
  • 如果我在容器中运行程序,则为-否。

尽管,仍然很奇怪:似乎它不理解第二个cli,一个要向前移植的cli,并用kubectl的可能命令列表来回答然后,显示窗格列表(打印1),然后显示命令(打印2)谢谢

python-3.x docker kubectl portforwarding
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.