我生成了一个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权限,但是没有任何效果。
答案 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脚本,这样子进程就可以访问该文件。
如果这可以解决您的问题,请告诉我。