在K8s中运行python脚本直接进入pod

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

以下命令在K8s中可以正确运行

kubectl exec -n nginx-ingress $(kubectl get pods -n nginx-ingress -o wide -LhaRole | grep nginx-ingress | grep Running | awk '{print $1}') -it -- /bin/bash

如果我将其放入Python脚本中,如下所示,

#!/usr/bin/python

import subprocess

subprocess.run('kubectl exec -n nginx-ingress $(kubectl get pods -n nginx-ingress -o wide -LhaRole | grep nginx-ingress | grep Running | awk '{print $1}') -it -- /bin/bash', shell=True)

结果显示SyntaxError:无效语法。

任何人都可以帮我纠正它并让它运行吗?

提前非常感谢。

[root@k8s-master temp]# kubectl exec -n nginx-ingress $(kubectl get pods -n nginx-ingress -o wide -LhaRole | grep nginx-ingress | grep Running | awk '{print $1}') -it -- /bin/bash
nginx@nginx-ingress-b9fcfbb59-cn647:/$
nginx@nginx-ingress-b9fcfbb59-cn647:/$ exit
exit
[root@k8s-master temp]#
[root@k8s-master temp]# ./k8s.py
  File "/home/jin/temp/./k8s.py", line 9
    subprocess.run('kubectl exec -n nginx-ingress $(kubectl get pods -n nginx-ingress -o wide -LhaRole | grep nginx-ingress | grep Running | awk '{print $1}') -it -- /bin/bash', shell=True)
                                                                                                                                                  ^
SyntaxError: invalid syntax
[root@k8s-master temp]#
[root@k8s-master temp]#

python-3.x bash shell kubernetes
1个回答
0
投票

根据您分享的内容,我相信您遇到了语法错误,因为您的脚本在命令字符串内部和外部都使用了单引号。在 Python 中,这会提前结束字符串。

请注意,

-it
命令中的
kubectl exec
标志用于交互式终端,这可能不会在您的Python脚本中按预期运行。

我建议您修改脚本,用三个单引号 (

'''
) 将命令括起来,这样,您就可以在字符串中包含单引号,而无需转义它们。您可以在[此处][1]了解有关使用引号的更多信息。

我还从

-it
命令中删除了
kubectl exec
标志,以确保该命令可以在您的脚本中执行。

#!/usr/bin/python

import subprocess

command = '''kubectl exec -n nginx-ingress $(kubectl get pods -n nginx-ingress -o wide | grep nginx-ingress | grep Running | awk '{print $1}') -- /bin/bash'''

subprocess.run(command, shell=True)

尝试一下,如果有帮助请告诉我。

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