Fix bug: check script fails to perform all checks

When piping the script to bash (cat ./environment_check.sh | bash), the
part after `kubectl exec -i` will be interpreted as the input for the
command inside kubectl exec command. As the result, the env check script
doesn't perform the steps after that kubectl exec command. Removing the
`-i` flag fixed the issue.

Also, replacing `kubectl exec -t` by `kubectl exec` because the input of
kubectl exec command is not a terminal device

longhorn-5653

Signed-off-by: Phan Le <phan.le@suse.com>
This commit is contained in:
Phan Le 2023-10-16 14:34:42 -07:00 committed by David Ko
parent 730d156f0a
commit 1410adf090

View File

@ -109,7 +109,7 @@ detect_node_kernel_release()
{ {
local pod="$1" local pod="$1"
KERNEL_RELEASE=$(kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'uname -r') KERNEL_RELEASE=$(kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'uname -r')
echo "$KERNEL_RELEASE" echo "$KERNEL_RELEASE"
} }
@ -117,9 +117,9 @@ detect_node_os()
{ {
local pod="$1" local pod="$1"
OS=$(kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID_LIKE=" /etc/os-release | cut -d= -f2') OS=$(kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID_LIKE=" /etc/os-release | cut -d= -f2')
if [[ -z "${OS}" ]]; then if [[ -z "${OS}" ]]; then
OS=$(kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID=" /etc/os-release | cut -d= -f2') OS=$(kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c 'grep -E "^ID=" /etc/os-release | cut -d= -f2')
fi fi
echo "$OS" echo "$OS"
} }
@ -248,7 +248,7 @@ check_package_installed() {
for ((i=0; i<${#PACKAGES[@]}; i++)); do for ((i=0; i<${#PACKAGES[@]}; i++)); do
local package=${PACKAGES[$i]} local package=${PACKAGES[$i]}
kubectl exec -i $pod -- nsenter --mount=/proc/1/ns/mnt -- timeout 30 bash -c "$CHECK_CMD $package" > /dev/null 2>&1 kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- timeout 30 bash -c "$CHECK_CMD $package" > /dev/null 2>&1
if [ $? != 0 ]; then if [ $? != 0 ]; then
all_found=false all_found=false
node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName) node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName)
@ -288,7 +288,7 @@ check_multipathd() {
local all_not_found=true local all_not_found=true
for pod in ${pods}; do for pod in ${pods}; do
kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager multipathd.service" > /dev/null 2>&1 kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager multipathd.service" > /dev/null 2>&1
if [ $? = 0 ]; then if [ $? = 0 ]; then
all_not_found=false all_not_found=false
node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName) node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName)
@ -328,7 +328,7 @@ check_iscsid() {
local all_found=true local all_found=true
for pod in ${pods}; do for pod in ${pods}; do
kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager iscsid.service" > /dev/null 2>&1 kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "systemctl status --no-pager iscsid.service" > /dev/null 2>&1
if [ $? != 0 ]; then if [ $? != 0 ]; then
all_found=false all_found=false
@ -358,12 +358,12 @@ check_nfs_client_kernel_support() {
fi fi
node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName) node=$(kubectl get ${pod} --no-headers -o=custom-columns=:.spec.nodeName)
res=$(kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "grep -E \"^# ${config} is not set\" /boot/config-${kernel_release}" > /dev/null 2>&1) res=$(kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "grep -E \"^# ${config} is not set\" /boot/config-${kernel_release}" > /dev/null 2>&1)
if [[ $? == 0 ]]; then if [[ $? == 0 ]]; then
all_found=false all_found=false
nodes["${node}"]="${node}" nodes["${node}"]="${node}"
else else
res=$(kubectl exec -t $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "grep -E \"^${config}=\" /boot/config-${kernel_release}" > /dev/null 2>&1) res=$(kubectl exec $pod -- nsenter --mount=/proc/1/ns/mnt -- bash -c "grep -E \"^${config}=\" /boot/config-${kernel_release}" > /dev/null 2>&1)
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
all_found=false all_found=false
warn "Unable to check kernel config ${config} on node ${node}" warn "Unable to check kernel config ${config} on node ${node}"