kubernetes学习日志(八)

前言

本文介绍了控制器,临时任务与计划任务,Headless服务

一、控制器

控制器是k8s内置的管理工具,可以帮用户实现Pod的自动化部署,自维护,扩容,滚动更新等功能的自动化程序
使用控制器的原因:
1、有大量的Pod需要维护管理
2、需要维护Pod的健康状态
3、控制器可以像机器人一样替用户完成维护管理的工作

Deployment控制器

最常用的无状态服务控制器没有Deployment、ReplicaSet、Pod组成、支持集群扩容缩容、滚动、更新、自动维护Pod可用性及副本数量等功能。
ReplicaSet和Pod由Deployment自动管理,用户无需干预

Deployment控制器

Deployment 资源文件

---
kind : Deployment		# 资源对象类型
apiVersion : apps/v1		#版本
metadata :  		# 元数据
	name : myweb		# 名称
spec :     # 详细定义
	replicas : 2   #副本数量
	selector :      # 定义标签选择器
		matchLabels :   # 支持matchExpressions表达式语法
			app:httpd  # 通过标签来确定哪个Pod由它来管理
	template :  	# 定义用来创建Pod的模板
		metadata : 			# Pod元数据
			labels :  		# 名称由控制器生成
				app:httpd		# 这里只能定义标签
			spec : 				# Pod的详细定义
				restarPolicy : Always		# 重启策略
				containers : 		# 容器定于
				- name : webserver		# 容器名称
					image : myos:httpd		# 创建容器使用的镜像
					imagePullPolicy : Always   # 镜像下载策略

DaemonSet控制器

无法自定义副本数量
所创建的Pod与node节点绑定
每个node上都会运行一个Pod
当有新Node加入集群时,会为他新增Pod副本,当Node从集群移除时,这些Pod也会被回收,典型:kube-proxy

DaemonSet资源文件

---
kind : DaemonSet # 资源对象类型
apiVersion : apps/v1
metadata : 
	name : myds
spec : 
	# replicas : 2 # 删除副本参数
	selector  :
		matchLabels :
			app:httpd
	template : 
		metadata : 
			labels : 
				app:httpd
		spec : 
			restartPolicy : Always
			containers : 
			- name : webserver
				image : myos:httpd
				imagePullPolicy : Always

Job/CronJob控制器

Job是一个单任务控制器,负责执行一次任务,保证任务在一个或多个Pod上执行成功
CronJob像Job的升级版,他是基于时间管理的Job控制器

定义Job资源对象

---
kind : Job
apiVersion : batch/v1
metadata : 
	name : myjob		# 资源对象名称
spec : 			# Job的详细定义
	template :			# 创建Pod的模板
		spec : 		# Pod的详细定义
			restartPolicy : OnFailure # 只支持OnFailure,Never
			containers :			# 容器定义
			- name : myjob		# 容器名称
				image : myos:8.5			# 创建容器使用的镜像
				command : ["/bin/bash"] # 自定义任务,可使用脚本

创建CronJob资源对象

时间定义schedule:分、时、日、月、周

---
kind : CronJob
apiversion : batch/v1
metadata : 
	name : mycj
spec : 
	schedule : "* * * * 1-5"
	jobTemplate : 
		spec : 				# Job详细定义
			template:			# 创建Pod模板
				spec : 			# Pod详细定义
					restartPolicy : OnFailure		# 只支持OnFailure,Never
					containers: 			# 容器定义
					- name : myjob		# 容器名称
						image  :myos:8.5	# 创建容器时使用的镜像
						command  :["/bin/bash"]	# 自定义任务
						args : 
						- -c
						- |
							sleep 3	#  脚本
							exit $((RANDOM%2)) # 退出状态码,失败后会重新运行

二、高级控制器

StatefulSet控制器

StatefulSet旨在与有状态的应用及分布式系统一起使用,涉及了Headless服务、存储卷、DNS等相关知识点,是一个宽泛而复杂的话题

Headless服务

配置StatefulSet时首先要自定义一个Headless服务
创建Pod时会自动吧<Pod名称>注册为域名

创建StatefulSet资源对象

---
kind : StatefulSet
apiVersion : apps/v1
metadata : 
	name : mysts
spec  :
	serviceName: mysvc2
	replicas : 2
	selector : 
		matchLabels :
			app:httpd
	template  :
		metadata : 
			labels : 
				app:httpd
		spec : 
			restartPolicy  :Always
			containers :
			- name : webserver
				image : myos:httpd
				imagePullPolicy : Always 

HPA控制器

HorizontalPodAutoscaling简称HPA,可在k8s集群中基于CPU利用率或其他应用程序提供的度量指标实现水平自动伸缩功能,自动缩放Pod的数量
控制器会周期性的获取平均利用率
与目标值相比较后 来调整副本数量

创建Deployment

---
kind: Deployment
apiVersion : apps/v1
metadata : 
	name : myweb
spec : 
	replicas :1
	selector  :
		matchLabels : 
			app:httpd
	templates : 
		metadata : 
			labels :
				app:httpd
		spec  :
			restartPOlicy  : Always
			containers  :
			- name : webserver
				image : myos:httpd
				imagePullPolicy : Always
				resources : 
					requests :
						cpu:200m  

创建ClusterIP

---
kind : Service
apiversion : v1
metadata : 
	name : websvc
spec : 
	type : ClusterIP
	clusterIP : 10.245.1.80
	selector : 
		app:httpd
	ports : 
	- protocol : TCP
		port  :80
		targetPort : 80

创建HorizontalPodAutoscaling控制器

---
kind : HorizontalPodAutoscaler	# 资源对象类型
apiVersion : autoscaling/v1	# 版本
metadata : 		# 元数据
	name : myweb		# 资源对象名称
spec : 						# 详细定义
	minReplicas : 1		# 最小创建副本数
	maxReplicas : 5		#最大创建副本数
	targetCPUUtilizationPercentage : 50	# 警戒值,以百分比计算
	scaleTargetRef : 	# 监控的资源对象
		kind : Deployment		# 资源对象文件
		apiVersion : apps/v1		# 版本
		name : myweb  # 资源对象文件
	

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值