在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
参考: