需要使用Robot Framework写测试用例。 使用python的sshClient在指定容器创建目录。
本来用的方法
podname = send('kubectl get pods -n test | grep rsync | awk '{print $1}')
send('kubectl exec -it -n test' + podname + ' --mkdir -p /home/test/rsync')
就是在第二个send方法有问题,拼接后打印的response怎么都是乱的,会加入一些其他的字符。试了很久,也查了很久,没有找到解决办法。
第二个send不要拼接,把第一行查出来的结果写死到里面,返回的结果就是好的。但这肯定不行,podname 是变化的。
使用
kubectl -n test exec -it `kubectl get pods -n test | grep rsync | awk '{print $1}'` --mkdir -p /home/test/rsync
没有了拼接,就是好用的。kubectl中的双横杠(--)代表着kubectl命令项的结束,在两个横杠之后的内容是指在pod内部里需要执行的命令。
python sshClient的send问题始终没解决。但是平时总是使用单个操作的k8s命令,合成复杂的语句来使用,效果还是很好的。