资源-控制器
SharedInformer 作为控制器的代理,可以缓解入口压力
一,控制器作用
管理pod对象
使用标签与pod关联
控制器实现了pod运维,例如滚动更新、伸缩副本管理,维护pod状态等
二,控制器类型
2.1,Deployment:无状态应用部署
功能:管理pod和replicas
应用场景: 网站、API、微服务
2.2,DaemonSet:确保所有Node运行同一个pod
功能:在每一个node上运行一个pod
新加入的node也同样会自动运行一个pod
应用场景:网络插件(kube-proxy、calico)、其他agent应用
2.3,StatefulSet:有状态应用部署
结合headless service使用
功能特性:
- 稳定的、唯一的网络标识符
- 稳定的、持久化的存储
- 有序的、优雅的部署和伸缩
- 有序的、优雅的删除和终止
- 有序的、自动滚动更新
Headless Service 特性:
未配置 ClusterIP,不通过 SVC 分配的 VIP 负载均衡访问 Pod
直接以 DNS 记录方式解析到 Pod 对应的IP地址
应用场景:
- 稳定的持久化存储,即 Pod 重新调度后,还能够访问到相同的持久化数据,基于PVC来实现
- 稳定的网络标识,即 Pod 重新调度后其 PodName 和 HostName 不变,基于 Headless Service (即没有Cluster IP的Service)来实现
- 有序部署、有序扩展,即Pod是有序的,在部署和扩展时,要按照定义的顺序依次进行 (即从 0 到N - 1, 在下一个Pod 运行前,所有 Pod 必须是 Running 和 Ready 状态),基于 Init Containers 来实现
- 有序收缩、有序删除(即从 N-1 到 0)
2.4,Job:一次性任务
功能:一次性执行
应用场景:离线数据处理
2.5,CronJob:定时任务
功能:定时任务
应用场景:通知、备份类任务
2.6,pod
Kubernetes应用程序的最小化部署和管理单元。
可以是一个容器也可以是多个容器组成
2.7,service
2.8,replicaset
维持一组pod副本的运行,保证运行数量
监听pod运行状态,pod增加或者故障减少时维持副本数量
2.9,endpoints
代理集群外部服务到kubernetes内部访问
三,控制器yaml应用
3.1,Deployment
Deployment进行pod升级时,采用滚动更新方式
更新策略:
-
maxSurge:滚动更新过程中最大pod副本数,确保在更新时启动的pod数量比期望(replicas)pod数量最大多出25%
-
maxUnavailable:滚动更新过程中最大不可用pod副本数,确保在更新时最大25%pod数量不可用,即确保75%pod是可用状态
yaml例:
apiVersion: apps/v1 ##版本
kind: Deployment ##类型
metadata: ##Deployment的元数据
name: httpd ##Deployment的名字
labels: ##标签
app: httpd ##标签app=httpd
spec: ##Pod的信息
replicas: 3 ##Pod的副本数
selector: ##标签选择器
matchLabels: ##查找匹配的