网站快速开发平台,郁金香导航 汕头大学网址大全,wordpress分类下文章置顶,jsp页面模板背景#xff1a;项目deploy需要依赖svc启动#xff0c;但是k8s启动deploy是无序的#xff0c;就需要人为控制
Init Container 应用场景
讲解了 Init Container 的使用#xff0c;接下来介绍 Init Container 有哪些应用场景。
在很多的应用场景中#xff0c;应用在启动之…背景项目deploy需要依赖svc启动但是k8s启动deploy是无序的就需要人为控制
Init Container 应用场景
讲解了 Init Container 的使用接下来介绍 Init Container 有哪些应用场景。
在很多的应用场景中应用在启动之前都需要执行如下初始化操作 • 等待其他关联组件运行例如数据库或某个后台服务。 • 基于环境变量env或者配置模板生成配置文件。 • 从远程数据库获取本地所需的配置信息类似配置中心或者将自身注册到某个中央数据库中类似服务注册。 • 下载相关依赖包或者对系统进行一些预配置操作。 • 应用 Init Container 对集群环境进行故障排查。与其他几种应用场景相比较特殊。
举个例子:
apiVersion: v1
kind: Pod
metadata:name: myapp-podlabels:app.kubernetes.io/name: MyApp
spec:containers:- name: myapp-containerimage: busybox:1.28command: [sh, -c, echo The app is running! sleep 3600]initContainers:- name: init-myserviceimage: busybox:1.28command: [sh, -c, until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done]- name: init-mydbimage: busybox:1.28command: [sh, -c, until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done]
接下来就要实现检测svc是否正常使用的脚本 server_check.sh
addr$1
port$2
while true; dotelnet_output$( sleep 1; echo $\e;telnet $addr $port 21)result$(echo $telnet_output | grep refused)echo $resultif [[ $result ! ]]thenecho connection refused, sleep 2 seconds, retrysleep 2elseecho sucessexit 0fi
done
sh server_check.sh svc_name svc_port
结论将检测svc的脚本挂在到上面的initcontainers中在conmmand中执行即可