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

时间:2018-07-26 13:49:20

标签: python bash kubernetes kubectl

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

一旦生成了新文件,我打算执行

kubectl apply -f config_file.yaml
python脚本中的

,以将修改应用于部署。

我一直在阅读如何使用kubernetes python客户端来执行此操作,但似乎不准备执行kubectl apply。

所以另一个选择是创建一个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_exception OSError:[Errno 13]权限被拒绝

我不知道如何解决该错误,我已经测试了bash脚本的givin权限,但是没有任何效果。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我对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))

答案 2 :(得分:0)

您如何运行python脚本?

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

如果这可以解决您的问题,请告诉我。