网站设计初步规划,建筑业企业资质证书多少钱,应用中心安装,贵州省建设厅报名网站Probe.png 今天进入 kubernetes 的运维部分#xff08;并不是运维 kubernetes#xff0c;而是运维应用#xff09;#xff0c;其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作#xff0c;现在云原生将运维和研发关系变得更紧密了。 今天主要讲解 Probe 探针相… Probe.png 今天进入 kubernetes 的运维部分并不是运维 kubernetes而是运维应用其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作现在云原生将运维和研发关系变得更紧密了。 今天主要讲解 Probe 探针相关的功能探针最实用的功能就是可以控制应用优雅上线。 就绪探针 举个例子当我们的 service 关联了多个 Pod 的时候其中一个 Pod 正在重启但还没达到可以对外提供服务的状态这时候如果有流量进入。 那这个请求肯定就会出现异常从而导致问题所以我们需要一个和 kubernetes 沟通的渠道告诉它什么时候可以将流量放进来。比如如图所示的情况红色 Pod 在未就绪的时候就不会有流量。 使用就绪探针就可以达到类似的效果 readnessProbe: failureThreshold: 3 httpGet: path: /ping port: 8081 scheme: HTTP periodSeconds: 3 successThreshold: 1 timeoutSeconds: 1 这个配置也很直接 配置一个 HTTP 的 ping 接口每三秒检测一次失败 3 次则认为检测失败成功一次就认为检测成功 但没有配置就绪探针时一旦 Pod 的 Endpoint 加入到 service 中(Pod 进入 Running 状态)请求就有可能被转发过来所以配置就绪探针是非常有必要的。 启动探针 而启动探针往往是和就绪探针搭配干活的如果我们一个 Pod 启动时间过长比如超过上面配置的失败检测次数此时 Pod 就会被 kubernetes 重启这样可能会进入无限重启的循环。 所以启动探针可以先检测一次是否已经启动直到启动成功后才会做后续的检测。 startupProbe: failureThreshold: 30 httpGet: path: /ping port: 8081 scheme: HTTP periodSeconds: 5 successThreshold: 1 timeoutSeconds: 1 我这里两个检测接口是同一个具体得根据自己是实际业务进行配置比如应用端口启动之后并不代表业务已经就绪了可能某些基础数据还没加载到内存中这个时候就需要自己写其他的接口来配置就绪探针了。 image.png 所有关于探针相关的日志都可以在 Pod 的事件中查看比如如果一个应用在启动的过程中频繁重启那就可以看看是不是某个探针检测失败了。 存活探针 存活探针往往是用于保证应用高可用的虽然 kubernetes 可以在 Pod 退出后自动重启比如 Pod OOM但应用假死他是检测不出来的。 为了保证这种情况下 Pod 也能被自动重启就可以配合存活探针使用 livenessProbe: failureThreshold: 3 httpGet: path: /ping port: 8081 scheme: HTTP periodSeconds: 3 successThreshold: 1 timeoutSeconds: 1 一旦接口响应失败kubernetes 就会尝试重启。 image.png 总结 image.png 以上探针配置最好是可以在研效平台可视化配置这样维护起来也比较简单。 探针是维护应用健康的必要手段强烈推荐大家都进行配置。 PS最近也在更新视频号也会有一些技术干货动动小手帮主播点播关注 往期推荐 升级到 Pulsar3.0 后深入了解 JWT 鉴权 五分钟k8s实战-Istio 网关 k8s-服务网格实战-配置 Mesh灰度发布 k8s-服务网格实战-入门Istio 如何优雅重启 kubernetes 的 Pod 点分享 点收藏 点点赞 点在看