简化kubectl常用命令

k8s集群使用和运维中,每天都需要输入大量 kubectl 常用命令,其实我们可以通过定义 alias 别名和函数简化 kubectl 命令,比如使用k代替kubectl,po代替pods,svc代替services,kgpon代替kubectl get po -n [命名空间+资源名](以参数传入),并且添加kubectl命令自动补全,将这些别名和函数添加到 Shell 配置文件(如 ~/.bashrc、~/.zshrc)中,方便日常使用。以下脚本可以登陆到linux shell环境执行,结合这些别名和函数,可以大幅提高操作 Kubernetes 的效率,以后就可以轻松愉快地使用 kubectl 命令啦简化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


参考:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/6309.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注