Kubernetes——使用副本机制和控制器部署托管Pod

本文详细介绍了Kubernetes中如何使用副本机制和控制器(如ReplicationController、ReplicaSet、DaemonSet和Job)来管理和保持Pod的健康运行。重点讲解了存活探针的配置、水平缩放Pod以及不同控制器的特性与应用场景,强调了直接创建Pod的不可靠性,推荐使用控制器确保Pod的持久性和自我修复能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2、副本机制和控制器部署托管Pod

当需要pod能够自动保持运行,并且保持健康时,通常会创建ReplicationController或Deployment这样的资源来托管Pod,接着由它们来创建并管理实际的pod。

当创建未托管的pod时 ,会选择一个集群节点来运行pod, 然后在该节点上运行容器。Kubemetes会监控这些容器, 并且在它们失败的时候自动重新启动它们。 **但是如果整个节点失败,那么节点上的pod会丢失,并且不会被新节点替换。**除非这些pod被控制器托管。

2.1 保持Pod健康

在K8s中,只要将 pod 调度到某个节点, 该节点上的 Kubelet 就会运行 pod 的容器, 从此只要该 pod 存在, 就会保持运行。 如果容器的主进程崩溃, Kubelet 将重启容器。 如果应用程序中有一个导致它每隔一段时间就会崩溃的 bug, Kubemetes 会自动重启应用程序, 所以即使应用程序本身没有做任何特殊的事, 在 Kubemetes 中运行也能自动获得自我修复的能力。

但有时进程没有崩溃,仍需要停止工作,例如发生OOM时,JVM进程会一直运行,此时需要程序向k8s发出信号,告诉k8s运行异常并重新启动此程序。

2.1.1 存活探针

k8s可以通过存活探针来检查容器是否还在运行,可以为每个pod中的每个容器单独制定存货探针,如果探测失败,k8s会重新启动容器。

K8有以下三种探测容器的机制:

  • HTTP GET探针对容器的 IP 地址(你指定的端口和路径)执行 HTTP GET 请求。
    • 如果探测器收到响应,并且响应状态码不代表错误(换句话说,如果HTTP 响应状态码是2xx或3xx), 则认为探测成功。如果服务器返回错误响应状态 码或者根本没有响应,那么探测就被认为是失败的,容器将被重新启动。
  • TCP套接字探针尝试与容器指定端口建立TCP连接。如果连接成功建立则探测成功,否则重启容器。
  • Exec探针在容器内执行任意命令,并检查命令的退出状态码。如果状态码是0, 则探测成功。所有其他状态码都被认为失败。

2.1.2 创建HTTP存活探针

将存活探针添加到pod:

在这里插入图片描述

该pod的描述文件定义了一个httpGet存活探针,该探针告诉Kubernetes定期在端口8080路径上执行HTTPGET请求,以确定该容器是否健康。

可以通过kubectl describe的内容查看具体的内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ga89NyAN-1634119194570)(C:\Users\zilongliu\AppData\Roaming\Typora\typora-user-images\1634107928974.png)]

可以看到容器现在正在运行,但之前由于错误而终止。退出代码为137。数字137是两个数字的总和: 128+x, 其中x是终止进程的信号编号。在这个例子中,x等于9, 这是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值