在k8s集群使用和运维中,每天都需要输入大量 kubectl 常用命令,其实我们可以通过定义 alias 别名和函数简化 kubectl 命令,比如使用k代替kubectl,po代替pods,svc代替services,kgpon代替kubectl get po -n [命名空间+资源名](以参数传入),并且添加kubectl命令自动补全,将这些别名和函数添加到 Shell 配置文件(如 ~/.bashrc、~/.zshrc)中,方便日常使用。以下脚本可以登陆到linux shell环境执行,结合这些别名和函数,可以大幅提高操作 Kubernetes 的效率,以后就可以轻松愉快地使用 kubectl 命令啦
。
# 在 bash 中设置当前 shell 的自动补全
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# 在 zsh 中设置当前 shell 的自动补全
# source <(kubectl completion zsh)
# echo '[[ $commands[kubectl] ]] && source <(kubectl completion zsh)' >> ~/.zshrc
# zshrc添加将 .bashrc 改为 .zshrc
# 添加简化命令,单引号包裹 EOF,禁止所有变量解析
cat >> ~/.bashrc << 'EOF'
# 基础别名
alias k='kubectl' # 用 k 代替 kubectl
alias kg='kubectl get' # 快速 get 资源
alias kd='kubectl describe' # 快速 describe 资源
alias kdel='kubectl delete' # 快速 delete 资源
alias ka='kubectl apply -f' # 快速 apply 文件
alias ke='kubectl edit' # 快速 edit 资源
alias kex='kubectl explain' # 快速 explain 资源
alias kl='kubectl logs' # 快速查看日志
alias klf='kubectl logs -f' # 实时查看 Pod 日志
alias kx='kubectl exec -it' # 快速进入 Pod 的 Shell
alias kw='kubectl get --watch' # 实时监控资源变化
alias kt='kubectl top' # 查看资源使用情况
alias kr='kubectl rollout' # 更新资源
alias ks='kubectl scale' # 资源扩缩容
alias kcp='kubectl cp' # 快速 cp 文件
alias kco='kubectl config' # 快速 config 资源
alias kcd='kubectl cordon' # 节点不可调度
alias kucd='kubectl uncordon' # 节点可调度
alias kapi='kubectl api-resources' # 列出支持的资源类型
alias kcl='kubectl cluster-info' # 显示主控节点和服务的地址
alias kh='kubectl get --v=7' # 显示资源请求的HTTP信息
# 资源类型别名
alias kgpo='kubectl get pods' # pods
alias kgno='kubectl get nodes' # nodes
alias kgns='kubectl get namespaces' # namespaces
alias kgcs='kubectl get cs' # ComponentStatus
alias kgep='kubectl get ep' # endpoints
alias kgsvc='kubectl get services' # services
alias kgdep='kubectl get deployments' # deployments
alias kgrs='kubectl get replicasets' # replicasets
alias kging='kubectl get ingress' # ingress
alias kgcm='kubectl get configmaps' # configmaps
alias kgsec='kubectl get secrets' # secrets
alias kgsa='kubectl get sa' # serviceaccounts
alias kgpv='kubectl get pv' # persistentvolumes
alias kgpvc='kubectl get pvc' # persistentvolumeclaims
alias kgsc='kubectl get sc' # storageclasses
alias kgsts='kubectl get sts' # StatefulSet
alias kgds='kubectl get ds' # DaemonSet
alias kgev='kubectl get events' # events
alias kgjo='kubectl get jobs' # jobs
# 查看资源描述(需替换 <resource-name>)
alias kdpo='kubectl describe pod'
alias kdno='kubectl describe nodes'
alias kdde='kubectl describe deployment'
alias kdst='kubectl describe sts'
alias kdds='kubectl describe ds'
alias kdsv='kubectl describe svc'
alias kdcm='kubectl describe cm'
alias kdse='kubectl describe secrets'
alias kdsa='kubectl describe sa'
alias kdpv='kubectl describe pv'
alias kdpvc='kubectl describe pvc'
alias kdsc='kubectl describe sc'
alias kding='kubectl describe ingress'
alias kdjo='kubectl describe jobs'
# 常用组合别名
# 查看所有命名空间的 Pods
alias kgpoa='kubectl get pods -A'
# 查看 Pods 并显示附加信息(如 IP、节点)
alias kgpow='kubectl get pods -owide'
# 查看 Nodes 并显示附加信息(如 IP、节点)
alias kgnow='kubectl get nodes -owide'
# 资源操作:$1对应命名空间、$2对应资源名称;y → yaml,n → namespace,默认输出格式为yaml
OUTPUT="-oyaml"
# kubectl get resources
kgpon() { kubectl get po -n "$@"; }
kgpoy() { kgpon "$@" $OUTPUT; }
kgden() { kubectl get deploy -n "$@"; }
kgdey() { kgden "$@" $OUTPUT; }
kgstn() { kubectl get sts -n "$@"; }
kgsty() { kgstn "$@" $OUTPUT; }
kgsvn() { kubectl get svc -n "$@"; }
kgsvy() { kgsvn "$@" $OUTPUT; }
kgdsn() { kubectl get ds -n "$@"; }
kgdsy() { kgdsn "$@" $OUTPUT; }
kgcmn() { kubectl get ds -n "$@"; }
kgcmy() { kgcmn "$@" $OUTPUT; }
kgsen() { kubectl get secrets -n "$@"; }
kgsey() { kgsen "$@" $OUTPUT; }
kgsan() { kubectl get sa -n "$@"; }
kgsay() { kgsan "$@" $OUTPUT; }
kgpvn() { kubectl get pv -n "$@"; }
kgpvy() { kgpvn "$@" $OUTPUT; }
kgpvcn() { kubectl get pvc -n "$@"; }
kgpvcy() { kgpvcn "$@" $OUTPUT; }
kgscn() { kubectl get sc -n "$@"; }
kgscy() { kgscn "$@" $OUTPUT; }
kgingn() { kubectl get ingress -n "$@"; }
kgingy() { kgingn "$@" $OUTPUT; }
kgevn() { kubectl get events -n "$@"; }
kgevy() { kgevn "$@" $OUTPUT; }
kgjon() { kubectl get jobs -n "$@"; }
kgjoy() { kgjon "$@" $OUTPUT; }
# kubectl describe resources
kdpon() { kubectl describe po -n "$@"; }
kdden() { kubectl describe deploy -n "$@"; }
kdstn() { kubectl describe sts -n "$@"; }
kdsvn() { kubectl describe svc -n "$@"; }
kddsn() { kubectl describe ds -n "$@"; }
kdcmn() { kubectl describe cm -n "$@"; }
kdsen() { kubectl describe secrets -n "$@"; }
kdsan() { kubectl describe sa -n "$@"; }
kdpvn() { kubectl describe pv -n "$@"; }
kdpvcn() { kubectl describe pvc -n "$@"; }
kdscn() { kubectl describe sc -n "$@"; }
kdingn() { kubectl describe ingress -n "$@"; }
kdjon() { kubectl describe jobs -n "$@"; }
# kubectl edit resources
kepon() { kubectl edit po -n "$@"; }
keden() { kubectl edit deploy -n "$@"; }
kestn() { kubectl edit sts -n "$@"; }
kesvn() { kubectl edit svc -n "$@"; }
kedsn() { kubectl edit ds -n "$@"; }
kecmn() { kubectl edit cm -n "$@"; }
kesen() { kubectl edit secrets -n "$@"; }
kesan() { kubectl edit sa -n "$@"; }
kepvn() { kubectl edit pv -n "$@"; }
kepvcn() { kubectl edit pvc -n "$@"; }
kescn() { kubectl edit sc -n "$@"; }
keingn() { kubectl edit ingress -n "$@"; }
kejon() { kubectl edit jobs -n "$@"; }
# 进入 Pod 的 Shell
kxsh() { kubectl exec -it -n "$@" -- /bin/sh; }
kxbs() { kubectl exec -it -n "$@" -- /bin/bash; }
# 查看 Pod 的日志
klpn() { kubectl logs -n "$@"; }
klfpn() { klpn "$@" -f; }
klppn() { klpn "$@" -p; }
# 删除 Pod
kdelp() { kubectl delete po -n "$@"; }
# 强制删除 Pod
krmfp() { kubectl delete po -n "$@" --force --grace-period=0; }
# 上下文和命名空间切换
alias kuse='kubectl config use-context' # 切换集群
alias kns='kubectl config set-context --current --namespace' # 切换命名空间
# 生成 Pod 的临时调试副本(类似 docker exec)
alias kdebug='kubectl debug -it --image=busybox'
# 转发本地端口到 Pod(需替换参数)
alias kpf='kubectl port-forward pod/<pod-name>'
complete -o default -F __start_kubectl k
EOF
source ~/.bashrc使用示例:
# 输入参数:$@对应整个输入参数,$1对应命名空间、$2对应资源名称,其余缩写命令使用方法与示例(Pods)类似 # 查看所有命名空间的 Pods kgpoa → kubectl get pods -A kgpow -A → kubectl get pods -owide -A # 查看指定命名空间的 Pods k get po -n namespace → kubectl get pods -n namespace kg po -n namespace kgpo -n namespace kgpon namespace kgpon namespace -owide → kubectl get pods -n namespace -owide # 查看指定命名空间的 Pod kgpon namespace podname → kubectl get pods -n namespace podname kgpoy namespace podname → kubectl get pods -n namespace podname -oyaml kdpon namespace podname → kubectl describe pods -n namespace podname kepon namespace podname → kubectl edit pods -n namespace podname # 进入 Pod 的 Shell kxsh namespace podname → kubectl exec -it -n namespace podname -- /bin/sh kxbs namespace podname → kubectl exec -it -n namespace podname -- /bin/bash # 查看 Pod 的日志 klpn namespace podname → kubectl logs -n namespace podname klfpn namespace podname → kubectl logs -n namespace podname -f klppn namespace podname → kubectl logs -n namespace podname --previous # 删除 Pod kdelp namespace podname → kubectl delete pods -n namespace podname krmfp namespace podname → kubectl delete pods -n namespace podname --force --grace-period=0
注意事项
如果别名冲突(如 k 被其他工具占用),可替换为其他名称(如 kb)。
删除资源时务必确认资源名称,避免误操作。
编辑系统级配置文件前建议先备份:cp ~/.bashrc{,.bak}
检察语法错误:bash -n ~/.bashrc
检查别名或函数是否成功定义:type kg、type kgpon
参考: