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"
1313CACHEFILE=" "
1414# 资源名称
1515resource=$1
@@ -30,19 +30,17 @@ param03=$5
3030param04=$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
4846k=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 _ _ _
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分钟更新一次
313311func_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,
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
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