关于Kubernetes的一点简单记录
可用性问题
Pod如何做健康检测(liveness探针)
k8s提供了liveness probe功能,用于检测pod情况。
- 通过命令检测
- 通过HTTP请求检测(200 < code < 400即是成功)
- 通过TCP检测(端口建立连接成功,即被认为健康)
如何知道Pod已就绪(readiness探针)
readiness探针与liveness探针一样,只是配置名字不同而已。
两者可以搭配一起使用,确保Pod容器是正常可以访问的。
Pod一直重启不起来会如何
需要分几种情况讨论:
Pod挂掉重启
新Pod启动不起来,此时Deployment有可能处于Unavailable状态,但只要旧Pod还在,就可以继续服务。滚动部署(更改image版本)
新的Pod无法启动成功,Deployment会使用旧的版本,可以回滚到原先正常的版本,或者部署新的正常版本新的Deployment
deployment会一直处在不可用状态,因为Pod并没有启动起来
Pod挂掉会怎么样
首先说明,这种情况是Pod挂掉,而不是Pod里面的进程无法正常服务(比如服务并不正常,但是进程没有异常退出)。
k8s会启动新的Pod进行服务,移除旧的Pod。
集群Node挂掉,服务受到什么影响
目前来看,node挂掉,k8s检测到之后,需要持续一段时间不可用,才会把pod杀掉(此时请求并不能实际在node上生效,因为它已经挂掉),在其他node启动一个新的pod进行服务。
Traefik采用daemonset的形式部署,此时外部流量从nginx进来,nginx直接指向群集的traefik几个daemonset,会存在不可用的情况,这时候需要nginx的upsteam配置好对应策略,比如proxy_connect_timeout,默认为60s,那么在60s超时后才会尝试下一个upstream,此时会存在比较长时间不可用。
Node重启后,k8s控制器要求删除的pod会生效被删除,已经启动在其他node的pod照样运行,不会迁移回来。
Master挂掉,整个服务会怎么样
(Master单点情况下挂掉)现有服务不受影响,新调度无法进行。
Pod频繁挂掉,要怎么处理比较合适
服务k8s化
Pod挂掉,怎么查阅程序异常日志
参考
- 本文链接:https://keepmoving.ren/kubernetes/something-record/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!