我尝试使用Python脚本执行kubectl
命令,但不断收到错误。我需要执行kubectl
命令来创建pod并检查pod
日志中是否有任何故障。
我在这里做错了什么?
import subprocess
command = 'kubectl apply -f deployment.yaml'
check_output= subprocess.check_output(command)
print(check_output)
错误
Traceback (most recent call last):
File "/usr/bin/cma-scripts/kubectl.py", line 6, in <module>
check_output= subprocess.check_output(command)
File "/usr/local/lib/python3.9/subprocess.py", line 424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/usr/local/lib/python3.9/subprocess.py", line 505, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.9/subprocess.py", line 1821, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'kubectl apply -f deployment.yaml'
apply
、-f
等参数调用kubectl
,而是想要调用不存在的命令kubectl apply -f ...
而且没有参数。尝试使用shell=True
运行它,或者将该命令拆分成列表形式 (["kubectl", "apply", "-f"...]
)。 - koorkevanikubectl
?你需要动态调用kubectl exec
调试工具吗,还是你的应用程序有一个HTTP端点可以连接到?(请记住,kubectl exec
只会针对复制部署的单个Pod,并且您在那里进行的任何更改都将在Pod被删除时丢失。) - David Maze