大家好,我是蜗牛,今天介绍一款Kubernetes的别名工具,可以让你高效管理k8s 集群,下面是相关介绍
我们在管理 Kubernetes集群和执行指定任务是比较复杂和费时的。但是如果使用正确的kubectl别名集,可以大幅简化Kubernetes管理并提高我们的工作效率。在本文中,我们将分享一些有用的 kubectl 别名,它们可以帮助我们更快、更轻松地执行常见任务。从查询资源信息到对 Pod 进行故障排除和管理节点,这些别名将成为 Kubernetes 工具包中的宝贵工具。因此,让我们深入研究并发现简化 Kubernetes 管理所需的 kubectl 别名!
在开始使用这些实用的 kubectl 别名之前,需要确保我们的电脑满足以下前置条件:
图片
把以下别名命令添加到环境变量中,并执行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列表,是不是很方便
图片
下面让我们研究下这些别名的一些用例和解释。
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
图片
对 Kubernetes 集群中的事件进行排序是比较麻烦。通用别名来按上次查看日期和创建时间戳对事件进行排序就非常方便
kgel -A
kgec -A
图片
另外,您可以使用别名过滤特定资源的事件kger
图片
要查看集群中节点的资源请求和限制,可以使用别名kgnr。此别名提供了每个节点的 CPU 和内存分配信息
kgnr
图片
由于pod的容器镜像只安装了必要的软件,所以当出现故障时,必须在线安装相关工具进行问故障排除,而pod 重启又得重新安装,而这里提供了kdebug命令,可以快速启动一个Swiss Army Knife Pod,这个pod预装所有基本工具的来解决问题。
图片
下面是一些内置的工具列表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
要检索 pod 内的容器列表,可以使用别名kgpc。当需要访问Pod 中的特定容器时,非常有用
图片
测试 Kubernetes Service的可用性是比较麻烦的。而kping别名使用HTTP Ping Docker 映像来 ping 服务并检查其可用性,就方便很多:
kgsvc
图片
执行kping dp-manager-backend:80进行测试
图片
在使用kubectl get pod -o=yaml查看pod资源的 YAML 时,某些字段是不必要的,并且可能会在重新部署 YAML 时导致问题。别名kyaml通过提供排除不必要字段的可运行清单来解决此问题,注意此插件依赖前置条件的kubectl-neat插件
执行kyaml pod pod 名称查询,结果如下图,是不是很清爽。
图片
失败的 Pod 可能会使集群混乱并影响性能。该krmfailed别名允许您轻松删除当前命名空间中失败的 Pod。
这些 kubectl 别名提供了一种简化 Kubernetes命令的便捷方法。通过使用这些别名,我们可以在使用 kubectl 命令时节省大量时间。无论你是检索特定信息、对 Pod 进行故障排除还是管理资源,这些别名都可以满足需求。
文章标题:K8S实践:非常实用Kubectl的别名工具推荐,助您高效工作
本文网址:http://www.shufengxianlan.com/qtweb/news6/341406.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联