Python脚本执行Kubernetes命令:kubectl apply-f config_file.yaml



我生成了一个python脚本,该脚本打开部署config_file.yaml,修改一些参数并使用pyyaml再次保存。这个python脚本将在Kubernetes集群的主节点中执行。

一旦生成了新文件,我的意图是执行

kubectl apply -f config_file.yaml

在python脚本中,将修改应用于部署。

我一直在阅读如何使用kubernetes python客户端来实现这一点,但似乎还没有准备好执行kubectl应用程序。

因此,另一种选择是创建一个bash脚本并从python脚本中执行它。

Bash脚本:

#!/bin/bash
sudo kubectl apply -f config_file.yaml

我授予它权限chmod+x shell_scipt.sh

Python脚本:

import subprocess
subprocess.call(['./shell_script.sh'])

但出现了一个错误:_execute_child中的文件"/usr/lib/python2.7/subprocess.py",第1047行引发child_exceptionOSError:[Erno 13]权限被拒绝

我不知道如何解决这个错误,我已经测试了对bash脚本的givin权限,但什么都不起作用。

我对Kubernetes一无所知,但我认为我可能会有所帮助。

我基本上是建议您直接从Python脚本运行命令,而不是让Python运行运行命令的bash脚本。

import os
command = 'kubectl apply -f config_file.yaml'
password = 'yourpassword'
p = os.system('echo %s|sudo -S %s' % (passs, command))

如果我理解正确,您将使用python动态修改静态yaml文件。如果是这种情况,我建议使用helm,如果它非常适合使静态yaml文件动态:-(

您是如何运行python脚本的?

我认为您正在使用非sudo用户运行python脚本。尝试以sudo用户的身份运行python脚本,这样子进程就可以访问该文件。

如果这能解决你的问题,请告诉我。

最新更新