今天让我们一起来体验一下K8S中的探针:ReadinessProbe。

本文所用的示例代码,有一部分已放到码云上:

k8s-readiness-probe: 学习使用Kubenetes中的ReadinessProbe1)使用JDK 8 包括出jar。2)制件镜像,上传到harbor镜像私服3)制K8S资源的yaml文件4)部署到K8S集群中验证效果。https://gitee.com/wqhn2020/k8s-readiness-probe.git

操作步骤:

第1步:编写JAR包程序。

这是一个SpringBoot程序中,通过Controller,提供一个/readinessProbe的访问地址,供kubelet组件访问。这个URL只能被探测20次,之后就会抛异常,即:前20次返回http 200, 第21次开始,返回http 500。

这个工程的JAVA源码可以在我的gitee上找到。

 

第2步:打JAR包。

把上面的工程,打成一个jar包,执行:mvn package,名称:hello-springboot-1.0.0.jar

 第3步:准备打包的材料。

图中jdk 目录,请自行到oracle官网中下载。

第4步:编写一份dockerfile。

这个文件在gitee上没有,只有几行代码,自己写吧。

第5步:制作镜像。

运行下图中绿框中的命令,注意后面的点。

 第5步:把镜像上传到harbor镜像仓库。

运行下图中绿框中的命令。

注意:图中的hb.cn是我用Harbo搭的镜像私服,大家也可以使用Docker Hub。

第6步:编写Deployment/Service的yaml文件。

 第7步:在k8s中应用上述yaml文件,执行:kubectl apply -f 1-all.yaml

 然后,使用kubectl get ep 查看EndPoint的状态。

如果一切正常,EndPoints中有3个Pod的IP和端口。

验证步骤:

第1步:查看其中一个pod的日志,在约100秒后(kubelet组件每5秒调用一轮Pod的/readinessProbe接口,前面20轮是正常的),探针检查不通过。

 

第2步:约146秒后,K8S感知3个pod都是不健康的,把它们的ip从endpoint中移除。

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐