【K8S in Action】副本机制与控制器:部署托管的Pod

通过控制器来运行托管的 pod,Pod失败的时候自动重新启动它们。

1. 保持pod健康

从外部检查应用程序的运行状况:

  1. HTTPGET探针对容器的 IP 地址
  2. TCP套接字探针尝试与容器指定端口建立TCP连接
  3. Exec探针在容器内执行任意命令,并检查命令的退出状态码。如果状态码是 0, 则探测成功。

务必记得设置一个初始延迟未说明应用程序的启动时间。

livenessProbe:     
	httpGet: 		 		 HTTPGET探针
		path: /      		 请求路径
		port: 8080  		 请求端口
	initialDelaySeconds: 15  初始延迟,应用启动后15s开始探测请求

在这里插入图片描述

# 获取崩溃容器的应用日志, 即上一个容器的日志
kubectl logs mypod --previous 

# describe的内容来了解为什么必须重启容器
kubectl describe po kubia-liveness

1.1 describe 结果解释

退出代码为137, 这有特殊的含义 —-表示该进程由外部信号终止。数字137是两个数字的总和:128+x, 其中x是终止进程的信号编号。
在这个例子中,x等于9, 这是SIGKILL 的信号编号,意味着这个进程被强行终止。

  • delay(延迟)delay=0s部分显示在容器启动后立即开始探测
  • timeout(超时)设置为1秒,因此容器必须在1秒内进行响应, 不然这次
    探测记作失败
  • period(周期)等。在探测连续三次失败(#failure= 3)后重启容器。
    在这里插入图片描述

2 了解ReplicationController

ReplicationController旨在创建和管理一个pod的多个副本。确保pod的数量始终与其标签选择器匹配。
ReplicationController有三个主要部分:

  1. label selector ( 标签选择器), 用于确定ReplicationController作用域中有哪些Pod
  2. replica count (副本个数), 指定应运行的pod 数量
  3. pod template (pod模板), 用于创建新的pod 副本

一些命令缺少命名空间,补上即可使用

kubectl create -f kubia-rc.yaml		 创建了ReplicationController

kubectl get pods -A			RC 根据Pod 模板启动3个kubia 的Pod,查看Pod
#NAME 		READY STATUS	 RESTARTS AGE 
#kubia-53thy	 0/1 ContainerCreating 0  2s

kubectl delete pod kubia-53thy    删除一个Pod,观察将会创建出一个

kubectl get re   # 获取RC的信息 re作为rep让ca巨oncontroller的简写
# NAME DESIRED CURRENT READY AGE 
# kubia 3		3		3		3m

kubectl describe rc kubia

在这里插入图片描述
通过更改pod的标签, 可以将它 从ReplicationController的作用域中添加或删除。
pod 在metadata.ownerReferences 中引用RC 控制器,可以找到属于哪个RC控制器。

将 pod 移入或移出RC的作用域

kubectl label pod kubia - dmdck type=special   给一个Pod增加type=sp ecial的标签,对原控制器无影响

kubectl label pod kubia-dmdck app=foo --overwrite   对Pod修改现有标签app=kubi,脱落RC 的管理

kubectl get pods -L app      使用-L app 选项在列中显示app的标签列

修改RC 中的 pod模板

更改 pod 模板后,会影响你之后创建的Pod,并且不会影响你已经创建的Pod。

kubectl edit rc kubia   # 编辑RC kubia 的Yaml
修改模板中的容器图像, 删除现有的容器, 并让它们替换为新模板中的新容器, 可用来升级pod(后续有更好方法)

kubectl scale re kubia --replicas=3    也可修改副本数量实现水平缩放

kubectl delete rc kubia --cascade=false  删除 RC 时,使用--cascade=false保持 pod 的运行

3 使用ReplicaSet而不是ReplicationController

ReplicaSet 的选择器比RC强,RC已经被弃用。
在这里插入图片描述

kubectl create -f kubia-replicaset.yaml
kubectl get rs                    rs 是ReplicaSet的简写
kubectl describe rs    

selector: 
	matchExpressions: 
		- key: app 
			operator: In
			values:
			- kubia 

每个表达式都必须 包含一个key、一个operator (运算符),并且可能还有一个values的列表(取决于运算符),四个有效的运算符。如果同时指定matchLabels和matchExpressions, 则所有标签都必须匹配,并且所有表达式必须计算为true以使该pod与选择器匹配

• In : Label的值 必须与其中 一个指定的values 匹配。
• Notln : Label的值与任何指定的values 不匹配。
• Exists : pod 必须包含一个指定名称的标签(值不重要)。使用此运算符时,
不应指定 values字段。
• DoesNotExist : pod不得包含有指定名称的标签。values属性不得指定

使用 DaemonSet在每个节点上运行一个pod

在这里插入图片描述

Job 执行单个任务或定时运行

在这里插入图片描述

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
K8s中的Pod控制器是用来管理和控制Pod的一种机制Pod控制器负责创建、启动、停止、重启和删除Pod,以及监控和调节Pod的状态。Pod和Controller之间是通过label标签来建立关系,Controller又被称为控制器工作负载。Pod控制器可以根据需要创建多个Pod实例,以满足应用程序的需求。 常见的Pod控制器包括Deployment、ReplicaSet、StatefulSet和DaemonSet等。Deployment控制器K8s中最常用和最重要的Pod控制器之一。它通过创建和管理ReplicaSet来实现对Pod的控制。Deployment控制器可以定义应用的副本数、升级和回滚策略,以及弹性伸缩等功能。通过使用Deployment控制器,可以方便地部署和管理应用程序。 在使用K8s时,可以使用yaml文件来定义Pod控制器的配置和参数。通过指定不同的字段和数值,可以实现对Pod控制器的定制化配置。例如,可以在yaml文件中指定应用程序的镜像、资源需求、副本数等信息。 总结来说,K8s中的Pod控制器是用来管理和控制Pod机制,通过label标签与Pod建立关系。常见的Pod控制器包括Deployment、ReplicaSet、StatefulSet和DaemonSet。使用yaml文件可以对Pod控制器进行配置和定制化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [k8s技术交流,包括Pod概念和特点Pod种类Pod镜像拉取策略Pod重启策略Pod控制器Pod探针、Pod调度](https://download.csdn.net/download/lingmeng447/85358750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【k8s】6、pod控制器](https://blog.csdn.net/hancoder/article/details/118064163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值