新聞中心
大家好,我是蝸牛,今天介紹一款Kubernetes的別名工具,可以讓你高效管理k8s 集群,下面是相關(guān)介紹

介紹
我們?cè)诠芾?Kubernetes集群和執(zhí)行指定任務(wù)是比較復(fù)雜和費(fèi)時(shí)的。但是如果使用正確的kubectl別名集,可以大幅簡(jiǎn)化Kubernetes管理并提高我們的工作效率。在本文中,我們將分享一些有用的 kubectl 別名,它們可以幫助我們更快、更輕松地執(zhí)行常見任務(wù)。從查詢資源信息到對(duì) Pod 進(jìn)行故障排除和管理節(jié)點(diǎn),這些別名將成為 Kubernetes 工具包中的寶貴工具。因此,讓我們深入研究并發(fā)現(xiàn)簡(jiǎn)化 Kubernetes 管理所需的 kubectl 別名!
前置依賴
在開始使用這些實(shí)用的 kubectl 別名之前,需要確保我們的電腦滿足以下前置條件:
- 安裝Kubectl
- 安裝Krew plugins manager,它是命令行工具的插件管理器,目前 Krew 上分布著230 個(gè)kubectl 插件
- 安裝Kubectl-neat Krew plugin插件,這個(gè)插件的作用是,消除 Kubernetes 清單中的混亂,使其更具可讀性,比如下圖,用紅色標(biāo)記的行被認(rèn)為是多余的,將被此插件從輸出中刪除
圖片
- 在用戶目錄,創(chuàng)建 mkdir ~/.kube 文件夾
別名設(shè)置
把以下別名命令添加到環(huán)境變量中,并執(zhí)行source 命令進(jìn)行生效
# 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'添加完以后執(zhí)行kgpo命令進(jìn)行驗(yàn)證,如下圖,通過此命令可以查詢到pod列表,是不是很方便
圖片
示例說明
下面讓我們研究下這些別名的一些用例和解釋。
1. 更快地執(zhí)行基本命令
kubectl -aliases Github 存儲(chǔ)庫包含一個(gè)生成數(shù)百個(gè)基本別名的腳本,這些別名包含在上面的列表中。
下面是一些關(guān)鍵命令概覽
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'
...為了表示每個(gè)命令的作用,每次執(zhí)行簡(jiǎn)寫命令時(shí),都會(huì)顯示完整的命令
ksysgpo圖片
2. 獲取排序和過濾的事件
對(duì) Kubernetes 集群中的事件進(jìn)行排序是比較麻煩。通用別名來按上次查看日期和創(chuàng)建時(shí)間戳對(duì)事件進(jìn)行排序就非常方便
kgel -Akgec -A圖片
另外,您可以使用別名過濾特定資源的事件kger
圖片
3. 查詢節(jié)點(diǎn)資源請(qǐng)求和限制
要查看集群中節(jié)點(diǎn)的資源請(qǐng)求和限制,可以使用別名kgnr。此別名提供了每個(gè)節(jié)點(diǎn)的 CPU 和內(nèi)存分配信息
kgnr圖片
4.啟動(dòng)調(diào)試pod
由于pod的容器鏡像只安裝了必要的軟件,所以當(dāng)出現(xiàn)故障時(shí),必須在線安裝相關(guān)工具進(jìn)行問故障排除,而pod 重啟又得重新安裝,而這里提供了kdebug命令,可以快速啟動(dòng)一個(gè)Swiss Army Knife Pod,這個(gè)pod預(yù)裝所有基本工具的來解決問題。
圖片
下面是一些內(nèi)置的工具列表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 內(nèi)的容器列表,可以使用別名kgpc。當(dāng)需要訪問Pod 中的特定容器時(shí),非常有用
圖片
6. Service可用性檢測(cè)
測(cè)試 Kubernetes Service的可用性是比較麻煩的。而kping別名使用HTTP Ping Docker 映像來 ping 服務(wù)并檢查其可用性,就方便很多:
kgsvc圖片
執(zhí)行kping dp-manager-backend:80進(jìn)行測(cè)試
圖片
7. 獲取pod的yaml 內(nèi)容
在使用kubectl get pod -o=yaml查看pod資源的 YAML 時(shí),某些字段是不必要的,并且可能會(huì)在重新部署 YAML 時(shí)導(dǎo)致問題。別名kyaml通過提供排除不必要字段的可運(yùn)行清單來解決此問題,注意此插件依賴前置條件的kubectl-neat插件
執(zhí)行kyaml pod pod 名稱查詢,結(jié)果如下圖,是不是很清爽。
圖片
8. 刪除失?。ê万?qū)逐)的 Pod
失敗的 Pod 可能會(huì)使集群混亂并影響性能。該krmfailed別名允許您輕松刪除當(dāng)前命名空間中失敗的 Pod。
總結(jié)
這些 kubectl 別名提供了一種簡(jiǎn)化 Kubernetes命令的便捷方法。通過使用這些別名,我們可以在使用 kubectl 命令時(shí)節(jié)省大量時(shí)間。無論你是檢索特定信息、對(duì) Pod 進(jìn)行故障排除還是管理資源,這些別名都可以滿足需求。
當(dāng)前題目:K8S實(shí)踐:非常實(shí)用Kubectl的別名工具推薦,助您高效工作
分享URL:http://fisionsoft.com.cn/article/dpcecho.html


咨詢
建站咨詢
