根据POD名称生成 三部曲:get、describe、log、exec

目录标题

V1.0

#!/bin/bash
 
 
# 定义颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'  # No Color
 
# 检查是否传入 Pod 名称作为参数
if [ -z "$1" ]; then
    # 如果没有传参,则提示用户输入 Pod 名称
    echo -e "${YELLOW}Please enter the Pod name:${NC}"
    read POD_NAME
else
    # 如果有传参,则使用第一个参数作为 Pod 名称
    POD_NAME=$1
fi
 
# 获取包含 Pod 的命名空间
POD_NAMESPACE=$(kubectl get pod -A --field-selector metadata.name="${POD_NAME}" -o jsonpath='{.items[0].metadata.namespace}')
 
# 检查是否找到了该 Pod
if [ -z "$POD_NAMESPACE" ]; then
    echo -e "${RED}Pod ${POD_NAME} not found.${NC}"
    exit 1
fi
 
echo -e "${GREEN}Found Pod ${POD_NAME} in namespace ${POD_NAMESPACE}.${NC}"
 
# 查看 pod 状态
echo -e "\n${YELLOW}Fetching pod status for ${POD_NAME} in namespace ${POD_NAMESPACE}...${NC}"
echo -e "${GREEN}kubectl get pod ${POD_NAME} -n ${POD_NAMESPACE}${NC}"
# kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}"
 
# 查看 pod 详细信息
echo -e "\n${YELLOW}Fetching pod details for ${POD_NAME} in namespace ${POD_NAMESPACE}...${NC}"
echo -e "${GREEN}kubectl describe pod ${POD_NAME} -n ${POD_NAMESPACE}${NC}"
# kubectl describe pod "${POD_NAME}" -n "${POD_NAMESPACE}"
 
# 获取 Pod 中的容器名称
CONTAINER_NAMES=$(kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}" -o jsonpath='{.spec.containers[*].name}')
INIT_CONTAINER_NAMES=$(kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}" -o jsonpath='{.spec.initContainers[*].name}')
ALL_CONTAINER_NAMES="${CONTAINER_NAMES} ${INIT_CONTAINER_NAMES}"
 
# 打印出所有容器的日志命令
echo -e "\n${YELLOW}Fetching logs commands for each container in ${POD_NAME}...${NC}"
for CONTAINER in $ALL_CONTAINER_NAMES; do
    echo -e "${GREEN}kubectl logs ${POD_NAME} -n ${POD_NAMESPACE} -c ${CONTAINER} --tail=100${NC}"
done
 
# 打印出所有容器的进入容器命令
echo -e "\n${YELLOW}Fetching exec commands for each container in ${POD_NAME}...${NC}"
for CONTAINER in $ALL_CONTAINER_NAMES; do
    echo -e "${GREEN}kubectl exec -it ${POD_NAME} -n ${POD_NAMESPACE} -c ${CONTAINER} -- bash${NC}"
done
sh log.sh

Please enter the Pod name:
postgres-89f33675-1-0

在这里插入图片描述

sh log.sh postgres-89f33675-1-0

在这里插入图片描述

V2.0

#!/bin/bash
 
 
# 定义颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'  # No Color
 
# 检查是否传入 Pod 名称作为参数
if [ -z "$1" ]; then
    # 如果没有传参,则提示用户输入 Pod 名称
    echo -e "${YELLOW}Please enter the Pod name:${NC}"
    read POD_NAME
else
    # 如果有传参,则使用第一个参数作为 Pod 名称
    POD_NAME=$1
fi
 
# 获取包含 Pod 的命名空间
POD_NAMESPACE=$(kubectl get pod -A --field-selector metadata.name="${POD_NAME}" -o jsonpath='{.items[0].metadata.namespace}')
 
# 检查是否找到了该 Pod
if [ -z "$POD_NAMESPACE" ]; then
    echo -e "${RED}Pod ${POD_NAME} not found.${NC}"
    exit 1
fi
 
echo -e "${GREEN}Found Pod ${POD_NAME} in namespace ${POD_NAMESPACE}.${NC}"
 
# 查看 pod 状态
echo -e "\n${YELLOW}Fetching pod status for ${POD_NAME} in namespace ${POD_NAMESPACE}...${NC}"
echo -e "${GREEN}kubectl get pod ${POD_NAME} -n ${POD_NAMESPACE}${NC}"
# kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}"
 
# 查看 pod 详细信息
echo -e "\n${YELLOW}Fetching pod details for ${POD_NAME} in namespace ${POD_NAMESPACE}...${NC}"
echo -e "${GREEN}kubectl describe pod ${POD_NAME} -n ${POD_NAMESPACE}${NC}"
# kubectl describe pod "${POD_NAME}" -n "${POD_NAMESPACE}"
 
# 获取 Pod 中的容器名称
CONTAINER_NAMES=$(kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}" -o jsonpath='{.spec.containers[*].name}')
INIT_CONTAINER_NAMES=$(kubectl get pod "${POD_NAME}" -n "${POD_NAMESPACE}" -o jsonpath='{.spec.initContainers[*].name}')
ALL_CONTAINER_NAMES="${CONTAINER_NAMES} ${INIT_CONTAINER_NAMES}"
 
# 打印出所有容器的日志命令
echo -e "\n${YELLOW}Fetching logs commands for each container in ${POD_NAME}...${NC}"
for CONTAINER in $ALL_CONTAINER_NAMES; do
    echo -e "${GREEN}kubectl logs ${POD_NAME} -n ${POD_NAMESPACE} -c ${CONTAINER} --tail=100${NC}"
done
 
# 打印出所有容器的进入容器命令
echo -e "\n${YELLOW}Fetching exec commands for each container in ${POD_NAME}...${NC}"
for CONTAINER in $ALL_CONTAINER_NAMES; do
    echo -e "${GREEN}kubectl exec -it ${POD_NAME} -n ${POD_NAMESPACE} -c ${CONTAINER} -- bash${NC}"
done

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值