gpt4 book ai didi

linux - 用于在日常基础知识中查找 kubernetes 中新添加的 pod 的 Shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:21 27 4
gpt4 key购买 nike

我想要一个 shell 脚本来查找新添加到集群的 kubernetes pod。包括 pod 名称、日期和时间以及命名空间。

我试过以下 bash 脚本:

#!/bin/bash

p=50 #total pods count

pcount=`kubectl get pods |wc -l`

###Addition check
if [ $ncount -gt $n ]
then

####pods variable have all pods name.
pods=`kubectl get pods|awk '{print $1}'|awk '{if(NR>1)print}'| xargs`

###start variable have all dates pods created

start=`kubectl describe pod $pods |grep "Start Time"|awk '{print $3 $4 $5 $6}'`

###max variable have total number of pods
max=`kubectl get pods |awk '{if(NR>1)print}'| wc -l`

dt=`date +%a,%d%b%Y`

array=( $start )

i=0
while [ $i -lt $max ];
do
# echo "inside loop ${array[$i]}"

if [[ "$dt" == "${array[$i]}" ]];then
dat=`date "+%a, %d %b %Y"`
name=`kubectl describe pod $pods |grep -v SecretName: |echo "$dat" |egrep 'Name|Start Time'`

printf "\n"
echo "Newly Added pods are: $name"
fi
i=$(( $i + 1 ))
done
fi

脚本几乎可以正常工作。但我只需要今天创建的 pod,显示所有 pod 名称、开始时间和命名空间的脚本。

请帮忙。

最佳答案

您的脚本存在许多问题且效率低下。应该避免重复调用像 kubectl 这样比较重的命令;尝试重新安排事情,以便您只运行一次,并从中提取您需要的信息。我隐约猜到您实际上想要的是

#!/bin/bash

# Store pod names in an array
pods=($(kubectl get pods |
awk 'NR>1 { printf sep $1; sep=" "}'))
if [ ${#pods[@]} -gt $n ]; then # $n is still undefined!
for pod in "${pods[@]}"; do
kubectl describe pod "$pod" |
awk -v dt="$(date +"%a, %d %b %Y")" '
/SecretName:/ { next }
/Name:/ { name=$NF }
/Start Time:/ { t=$3 $4 $5 $6;
if (t==dt) print name
name="" }'
done
fi

不管怎样,一旦你运行了 Awk,将尽可能多的处理重构到 Awk 中是有意义的;它可以做 grepcutsed 可以做的一切,甚至更多。另请注意我们如何优先使用 $(command) 命令替换语法,而不是过时的遗留 `command` 语法。

kubectl-o=json 可能更容易和更直接地以编程方式处理,因此您应该真正研究一下。我没有 Kubernetes 集群可以玩,所以我只是指出这个作为进一步改进的方向。

关于linux - 用于在日常基础知识中查找 kubernetes 中新添加的 pod 的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com