Kubernetes 公共命令别名配置
# /etc/profile.d/k8s-aliases
# Kubernetes 公共命令别名配置(不包含特定项目)
# ============================================
# 基础 kubectl 别名
# ============================================
alias k='kubectl'
alias kk='kubectl -n'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias kex='kubectl exec -it'
alias kdel='kubectl delete'
alias kapply='kubectl apply -f'
alias kedit='kubectl edit'
# ============================================
# 资源查看
# ============================================
alias kgall='kubectl get all'
alias kgpod='kubectl get pods'
alias kgsvc='kubectl get services'
alias kgdep='kubectl get deployments'
alias kgcm='kubectl get configmaps'
alias kgsec='kubectl get secrets'
alias kging='kubectl get ingress'
alias kgpvc='kubectl get pvc'
alias kgpv='kubectl get pv'
alias kgns='kubectl get namespaces'
alias kgno='kubectl get nodes'
# ============================================
# 资源查看(详细)
# ============================================
alias kgpwide='kubectl get pods -o wide'
alias kgpall='kubectl get pods --all-namespaces'
alias kgsall='kubectl get svc --all-namespaces'
# ============================================
# Pod 操作
# ============================================
alias klf='kubectl logs -f'
alias klt='kubectl logs --tail=100'
alias klp='kubectl logs --previous'
alias kexbash='kubectl exec -it -- /bin/bash'
alias kexsh='kubectl exec -it -- /bin/sh'
alias ktop='kubectl top pods'
alias ktopn='kubectl top nodes'
# ============================================
# 部署操作
# ============================================
alias kroll='kubectl rollout restart deployment'
alias kstatus='kubectl rollout status deployment'
alias kundo='kubectl rollout undo deployment'
alias kscale='kubectl scale deployment'
# ============================================
# 节点管理
# ============================================
alias kcordon='kubectl cordon'
alias kuncordon='kubectl uncordon'
alias kdrain='kubectl drain --ignore-daemonsets'
alias kdescnode='kubectl describe node'
# ============================================
# 事件与调试
# ============================================
alias kevents='kubectl get events --sort-by='\''.lastTimestamp'\'''
alias keventsw='kubectl get events --watch --sort-by='\''.lastTimestamp'\'''
alias kdescpod='kubectl describe pod'
# ============================================
# 健康检查
# ============================================
alias kbad='kubectl get pods --all-namespaces | grep -v Running | grep -v Completed'
alias kpending='kubectl get pods --all-namespaces | grep Pending'
alias kfail='kubectl get pods --all-namespaces | grep -E "Error|CrashLoop|ImagePull"'
# ============================================
# 资源排行
# ============================================
alias ktopcpu='kubectl top pods --all-namespaces --sort-by=cpu'
alias ktopmem='kubectl top pods --all-namespaces --sort-by=memory'
# ============================================
# 端口转发
# ============================================
alias kpf='kubectl port-forward'
# ============================================
# 辅助函数
# ============================================
# 查看指定服务的日志
klog() {
local namespace=$1
local service=$2
local lines=${3:-50}
local pod_name=$(kubectl get pods -n $namespace -l app=$service -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
if [ -n "$pod_name" ]; then
kubectl logs --tail=$lines -n $namespace $pod_name
else
echo "未找到服务: $service (命名空间: $namespace)"
fi
}
# 进入指定服务的容器
kexec() {
local namespace=$1
local service=$2
local shell=${3:-/bin/bash}
local pod_name=$(kubectl get pods -n $namespace -l app=$service -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
if [ -n "$pod_name" ]; then
kubectl exec -it -n $namespace $pod_name -- $shell
else
echo "未找到服务: $service (命名空间: $namespace)"
fi
}
# ============================================
# 提示信息
# ============================================
echo "✅ Kubernetes 公共别名已加载!"
echo ""
echo "📌 常用命令:"
echo " kgpod -n <namespace> # 查看 Pod"
echo " klf <pod> -n <namespace> # 查看日志"
echo " kbad # 查看异常 Pod"
echo " ktopcpu # CPU 排行"
echo " klog <ns> <service> # 查看服务日志"
echo " kexec <ns> <service> # 进入容器"