首页 > 解决方案 > Kubernetes 在所有 php-fpm pod 上执行命令

问题描述

我想chown在我所有的 php-fpm pod 上执行一个命令。

我来到了这一部分:

#!/bin/bash
PODS=$(kubectl get pods -n my-production | grep php-fpm | awk -F' *|/' '$2 == $3 && $4 == "Running"' | awk {'print $1'} | column -t )
for POD in $PODS
do
    echo $POD
    kubectl -n my-production exec -it $POD -c php /bin/bash
done

echo "all done"

这是输入名称中包含“php-fpm”的每个特定 pod。

我想为每个豆荚执行一个 chown 命令。

我应该运行的命令如下所示:

chown -R www-data:www-data /var/app/current/app/cache

标签: kubernetes

解决方案


只需替换脚本中的命令:

#!/bin/bash
PODS=$(kubectl get pods -n my-production | grep php-fpm | awk -F' *|/' '$2 == $3 && $4 == "Running"' | awk {'print $1'} | column -t )
for POD in $PODS
do
    echo $POD
    kubectl -n my-production exec $POD -c php -- chown -R www-data:www-data /var/app/current/app/cache
done

echo "all done"

由于您执行的是非交互式命令,因此您不需要-it标志,并且由于该命令具有参数,因此您需要--在 kubectl 命令和要在 Pod 上运行的命令之间设置一个。


推荐阅读