服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 服务器知识 - K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作

2024-01-08 15:50架构成长指南 服务器知识

这些 kubectl 别名提供了一种简化 Kubernetes命令的便捷方法。通过使用这些别名,我们可以在使用 kubectl 命令时节省大量时间。无论你是检索特定信息、对 Pod 进行故障排除还是管理资源,这些别名都可以满足需求。

大家好,我是蜗牛,今天介绍一款Kubernetes的别名工具,可以让你高效管理k8s 集群,下面是相关介绍

介绍

我们在管理 Kubernetes集群和执行指定任务是比较复杂和费时的。但是如果使用正确的kubectl别名集,可以大幅简化Kubernetes管理并提高我们的工作效率。在本文中,我们将分享一些有用的 kubectl 别名,它们可以帮助我们更快、更轻松地执行常见任务。从查询资源信息到对 Pod 进行故障排除和管理节点,这些别名将成为 Kubernetes 工具包中的宝贵工具。因此,让我们深入研究并发现简化 Kubernetes 管理所需的 kubectl 别名!

前置依赖

在开始使用这些实用的 kubectl 别名之前,需要确保我们的电脑满足以下前置条件:

  • 安装Kubectl
  • 安装Krew plugins manager,它是命令行工具的插件管理器,目前 Krew 上分布着230 个kubectl 插件
  • 安装Kubectl-neat Krew plugin插件,这个插件的作用是,消除 Kubernetes 清单中的混乱,使其更具可读性,比如下图,用红色标记的行被认为是多余的,将被此插件从输出中删除

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

  • 在用户目录,创建 mkdir ~/.kube 文件夹

别名设置

把以下别名命令添加到环境变量中,并执行source 命令进行生效

# autocomplete kubectl & helm
source <(kubectl completion zsh)
source <(helm completion zsh)

alias k=kubectl

# when using below aliases, print kubectl command and then execute it
function kctl() { echo "+ kubectl $@" && command kubectl $@ }

# add aliases collection like 'kgpo' for 'kubectl get pods` from https://github.com/ahmetb/kubectl-aliases
[ ! -f ~/.kube/aliases.sh ] && curl -fsSL "https://raw.githubusercontent.com/ahmetb/kubectl-aliases/master/.kubectl_aliases" > ~/.kube/aliases.sh && sed -i -e 's/kubectl/kctl/g' ~/.kube/aliases.sh
source ~/.kube/aliases.sh

# set default namespace
alias kn='kctl config set-context --current --namespace'
# get events sorted by last timestamp
alias kgel='kctl get events --sort-by=.lastTimestamp'
# get events sorted by creation timestamp
alias kgec='kctl get events --sort-by=.metadata.creationTimestamp'
# get pod's descending events
function kger() { kctl get events --sort-by=.lastTimestamp --field-selector involvedObject.name="$@" }
# get 'real' all
alias kgworld='kctl get $(kubectl api-resources --verbs=list --namespaced -o name | paste -sd ",")'
# display all nodes resources request and limits
alias kgnr="k get nodes --no-headers | awk '{print \$1}' | xargs -I {} sh -c 'echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '"
# start a debug pod (including lots of troubleshooting tools)
alias kdebug="kctl -n default run debug-pod --rm -it --tty --image leodotcloud/swiss-army-knife:v0.12 --image-pull-policy=IfNotPresent -- bash"
# get pod's containers list
function kgpc() { kctl get pod -o jsnotallow="{.spec.containers[*].name}" "$@" && echo "" }
# ping a service, ex: 'kping whoami:8080'
alias kping='kctl run httping -it --image bretfisher/httping --image-pull-policy=IfNotPresent --rm=true --'
# get existing pod's yaml without forbidden fields, ex: 'kyaml pod whoami'
function kyaml() { kubectl get "$@" -o yaml | kubectl-neat }
# display and delete failed pods in current namespace
alias krmfailed='kctl delete pods --field-selector=status.phase=Failed'

添加完以后执行kgpo命令进行验证,如下图,通过此命令可以查询到pod列表,是不是很方便

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

示例说明

下面让我们研究下这些别名的一些用例和解释。

1. 更快地执行基本命令

kubectl -aliases Github 存储库包含一个生成数百个基本别名的脚本,这些别名包含在上面的列表中。

下面是一些关键命令概览

alias k='kubectl'
alias kg='kubectl get'
alias kgpo='kubectl get pod'

alias ksysgpo='kubectl --namespace=kube-system get pod'

alias krm='kubectl delete'
alias krmf='kubectl delete -f'
alias krming='kubectl delete ingress'
alias krmingl='kubectl delete ingress -l'
alias krmingall='kubectl delete ingress --all-namespaces'

alias kgsvcoyaml='kubectl get service -o=yaml'
alias kgsvcwn='kubectl get service --watch --namespace'
alias kgsvcslwn='kubectl get service --show-labels --watch --namespace'

alias kgwf='kubectl get --watch -f'
...

为了表示每个命令的作用,每次执行简写命令时,都会显示完整的命令

ksysgpo

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

2. 获取排序和过滤的事件

对 Kubernetes 集群中的事件进行排序是比较麻烦。通用别名来按上次查看日期和创建时间戳对事件进行排序就非常方便

kgel -A
kgec -A

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

另外,您可以使用别名过滤特定资源的事件kger

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

3. 查询节点资源请求和限制

要查看集群中节点的资源请求和限制,可以使用别名kgnr。此别名提供了每个节点的 CPU 和内存分配信息

kgnr

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

4.启动调试pod

由于pod的容器镜像只安装了必要的软件,所以当出现故障时,必须在线安装相关工具进行问故障排除,而pod 重启又得重新安装,而这里提供了kdebug命令,可以快速启动一个Swiss Army Knife Pod,这个pod预装所有基本工具的来解决问题。

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

下面是一些内置的工具列表arping, arptables, bridge-utils, ca-certificates, conntrack, curl, docker, dnsutils, ethtool, iperf, iperf3, iproute2, ipsec-tools, ipset, iptables, iputils-ping, jq, kmod, kubectl, ldap-utils, less, libpcap-dev, man, manpages-posix, mtr, net-tools, netcat, netcat-openbsd, openssl, openssh-client, psmisc, socat, tcpdump, telnet, tmux, traceroute, tcptraceroute, tree, ngrep, vim, wget, yq

5. 获取pod的容器列表

要检索 pod 内的容器列表,可以使用别名kgpc。当需要访问Pod 中的特定容器时,非常有用

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

6. Service可用性检测

测试 Kubernetes Service的可用性是比较麻烦的。而kping别名使用HTTP Ping Docker 映像来 ping 服务并检查其可用性,就方便很多:

kgsvc

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

执行kping dp-manager-backend:80进行测试

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

7. 获取pod的yaml 内容

在使用kubectl get pod -o=yaml查看pod资源的 YAML 时,某些字段是不必要的,并且可能会在重新部署 YAML 时导致问题。别名kyaml通过提供排除不必要字段的可运行清单来解决此问题,注意此插件依赖前置条件的kubectl-neat插件

执行kyaml pod pod 名称查询,结果如下图,是不是很清爽。

K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作图片

8. 删除失败(和驱逐)的 Pod

失败的 Pod 可能会使集群混乱并影响性能。该krmfailed别名允许您轻松删除当前命名空间中失败的 Pod。

总结

这些 kubectl 别名提供了一种简化 Kubernetes命令的便捷方法。通过使用这些别名,我们可以在使用 kubectl 命令时节省大量时间。无论你是检索特定信息、对 Pod 进行故障排除还是管理资源,这些别名都可以满足需求。

原文地址:https://mp.weixin.qq.com/s/mmBi9tDxKrDSEuuCkuJweQ

延伸 · 阅读

精彩推荐