Skip to content

Commit 8fb5c53

Browse files
author
wangzl
committed
feature: k1s cache
1 parent 819fba3 commit 8fb5c53

1 file changed

Lines changed: 29 additions & 18 deletions

File tree

k1s

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
# 创建时间:2022/11/24
77
# 最后修改时间:2025/06/17
88
#################################
9-
version=2.2.5
9+
version=2.2.6
1010
############参数###########
1111
# 定义一个缓存目录
12-
CACHEDIR=${K1S_CACHE_DIR:="$HOME/.k1s"}
12+
CACHEDIR="/var/log/k1s"
1313
CACHEFILE=""
1414
# 资源名称
1515
resource=$1
@@ -30,19 +30,17 @@ param03=$5
3030
param04=$6
3131

3232
# 命名空间
33-
nameSpace=${K1S_NS:="default"}
34-
[ -n "${K1N}" ] || [ -n "${k1n}" ] && nameSpace="${K1N}"
33+
nameSpace=${K1S_NS:=${K1N:=${k1n:="default"}}}
3534

3635
#####################################
3736
# 镜像名称
38-
base_image=${K1S_IMAGE:="alpine:latest"}
39-
[ -n "${K1I}" ] || [ -n "${k1i}" ] && base_image="${K1I}"
37+
baseImage=${K1S_IMAGE:=${K1I:=${k1i:="alpine:latest"}}}
4038

4139
# 存储yaml路径
42-
savePath=${K1S_PATH:=$PWD}
40+
savePath=${K1S_PATH:=${K1P:=${k1p:="$PWD"}}}
4341
# 判断是否以 / 结尾,自动补全
4442
[[ ${savePath: -1} != "/" ]] && savePath="${savePath}/"
45-
[ -n "${K1P}" ] || [ -n "${k1p}" ] && savePath="${K1P}"
43+
4644

4745
# kubectl
4846
k=kubectl
@@ -206,19 +204,19 @@ help() {
206204
"删除 pod: ${scriptName} po kube-pod-xxx del"
207205
"强制删除 pod: ${scriptName} po kube-pod-xxx rm"
208206
"调试 node: ${scriptName} x node-xxx"
207+
"更新cache: ${scriptName} cache"
209208
"--------------- ↓ ❤ 帮助(Help) ↓ ---------------"
210209
"查看帮助: ${scriptName} help|h"
211210
)
212211
local set_env=(
213212
"1. 设置YAML路径的环境变量方式: export K1P=/home/ or export k1p=/home/, 默认为 当前目录"
214213
"2. 设置命名空间的环境变量方式: export K1N=default or export k1n=default, 默认为 default"
215214
"3. 设置基础镜像: export K1I=alpine:latest or export k1i=alpine:latest, 默认为 alpine:latest"
216-
"4. 设置缓存目录: export K1S_CACHE_DIR=\"$HOME/.k1s\" or export k1s_cache_dir=\"$HOME/.k1s\", 默认为 $HOME/.k1s"
217215
)
218-
local envs=(
216+
local envs_list=(
219217
"1. 当前操作的路径:${savePath}"
220218
"2. 当前操作的空间名:${nameSpace}"
221-
"3. 当前基础镜像:${base_image}"
219+
"3. 当前基础镜像:${baseImage}"
222220
)
223221
cat <<EOF
224222
_ _ _
@@ -251,8 +249,8 @@ EOF
251249
green "${name}"
252250
done
253251
echo "CURRENT:"
254-
for name in "${envs[@]}"; do
255-
yello "${name}"
252+
for envstr in "${envs_list[@]}"; do
253+
yello "${envstr}"
256254
done
257255
}
258256

@@ -261,7 +259,7 @@ tip() {
261259
"1. 当前操作的路径:${savePath}"
262260
"2. 当前操作的空间名:${nameSpace}"
263261
)
264-
for name in "${set_env[@]}"; do
262+
for name in "${envs[@]}"; do
265263
green "${name}"
266264
done
267265
}
@@ -311,6 +309,11 @@ func_cache_resource() {
311309

312310
# 获取当前集群ID,然后缓存整个集群资源信息,5分钟更新一次
313311
func_cache() {
312+
is_update=${1:-0}
313+
314+
if ! kubectl config view >/dev/null 2>&1;then
315+
return
316+
fi
314317
# local cluster_id,last_update,current_time,time_diff
315318
cluster_id=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'|md5sum|awk '{print $1}')
316319

@@ -336,7 +339,11 @@ func_cache() {
336339
# 第1列是空间名,第2列是资源名称
337340
func_cache_resource "${CACHEFILE}"
338341
fi
342+
if [ "$is_update" -eq 1 ];then
343+
func_cache_resource "${CACHEFILE}"
344+
fi
339345
fi
346+
340347
}
341348

342349
# 根据关键字,在缓存里查找,自动搜索空间名或资源名称,第1列是空间名,第2列是资源名称,可能存在多行
@@ -373,7 +380,7 @@ execTemporaryPod() {
373380
"securityContext": {
374381
"privileged": true
375382
},
376-
"image": "${base_image}",
383+
"image": "${baseImage}",
377384
"name": "nsenter",
378385
"stdin": true,
379386
"stdinOnce": true,
@@ -394,7 +401,7 @@ EOT
394401
pod="kube-nodeshell-$(uuidgen)"
395402
yello "Pod: ${pod}"
396403
green "Connecting $node ..."
397-
$k run --image="${base_image}" --restart=Never --rm --overrides="$overrides" -it "${pod}"
404+
$k run --image="${baseImage}" --restart=Never --rm --overrides="$overrides" -it "${pod}"
398405
if [ $? -ne 0 ];then
399406
# 判断 pod 是否存在
400407
if $k get pod "${pod}" >/dev/null 2>&1; then
@@ -404,7 +411,7 @@ EOT
404411
echo "${events_msg}"
405412
error_msg=$(echo "$events_msg" | grep -iE 'rpc error|i/o timeout')
406413
if [ -n "$error_msg" ]; then
407-
yello "如果出现 pull image <${base_image}>: rpc error,说明 node:${node} 没有外网导致的"
414+
yello "如果出现 pull image <${baseImage}>: rpc error,说明 node:${node} 没有外网导致的"
408415
green "++++++++++++++ TIP +++++++++++++++"
409416
cyan "可以设置内网镜像: export K1S_IMAGE=hub.local.io/alpine:latest"
410417
fi
@@ -579,7 +586,6 @@ k1s_resource_action() {
579586
is_ai=1
580587
fi
581588
fi
582-
583589
yello "######## namespace:${nameSpace} # resouce-name:${resouce_name} # action:${action_name} # param_name:${param_name} # ai:$is_ai ########"
584590
# 检查 Action 是否有效
585591
check_action "${action_name}"
@@ -912,6 +918,11 @@ main() {
912918
"Xclean" | "Xc")
913919
clean
914920
;;
921+
"Xcache")
922+
func_cache 1
923+
echo "cache updated"
924+
exit 0
925+
;;
915926
*)
916927
help
917928
;;

0 commit comments

Comments
 (0)