连云港网站建设连云港,合江县住房和城乡规划建设局网站,做网站有好创意想法,邢台中高风险地区查询pod控制器的作用
1、动态pv和pvc
deployment是控制器
pod空气器:工作负载#xff0c;workload用于管理pod的中间层#xff0c;确保podi资源符合预期的状态
预期状态
1、副本数
2、容器重启策略
3、镜像拉取策略
pod、出现故障时重启等等
pod的控制器类型
1、replic…pod控制器的作用
1、动态pv和pvc
deployment是控制器
pod空气器:工作负载workload用于管理pod的中间层确保podi资源符合预期的状态
预期状态
1、·副本数
2、容器重启策略
3、镜像拉取策略
pod、出现故障时重启等等
pod的控制器类型
1、replicaset:指定pod的副本数量
三个组件
pod的副本数
标签的选择器判断哪个pod归自己管理
扩缩容
2deployment控制器他是工作在repalicaset之上管理无状态应用目前是最好的控制器支持滚动更新和回滚
提供声明式配置
3、statefulSet:也是控制器的一种管理有状态的应用也可以设置副本数可以扩缩容pod之间的序号是固定的重启之后pod的名称也不会发生变化有状态
4、DaemonSet:可以在所有节点部署一个pod他没有副本数可以限制部署的节点。也是无状态应用服务必须是守护进程
ingress logstash flannel
5、job:工作pod控制器执行完成即可退出不要重启不需要构建
6、cronjob:周期性的定时任务控制器不需要再后台持续运行 pod与控制器之间的关系:
1、controllers管理控制器。
pod通过label-----selector进行关联。 startegy:rollingUpdata: maxSurge:25% maxUnavailable:25%这是Deployment的默认更细策略rollingUpdate:滚动更新 maxSurge:25%升级过程中新启动的pod数量不能超过期望pod数的25%不能超过25%maxUnavailable:25%:升级过程中新的pod启动好之后销毁的旧的pod数量不能超过期望pod25% 2、无状态应用pod名称是无序的认为所有pod都是一体的包括共享存储NFS,
所有deployment下的pod都共享一个存储。
statfulSet:有状态的应用。pod名称有序的所有pod都是独立的存储卷也是独立的
顺序0-ndelete删除也不会改变pod的序号扩缩容也是有序的扩缩容
headless-service:无头服务没有clusterIp必须要有动态pvc
apiVersion: v1
kind: Service
metadata:name: nginx-web
spec:ports:- port: 80targetPort: 80clusterIP: selector:app: nginx1---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: weblabels:app: nginx2
spec:replicas: 3selector:matchLabels:app: nginc-stsserviceName: nginx-webtemplate:metadata:labels:app: nginx2spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: htmlmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: htmlspec:accessModes: [ReadWriteMany]storageClassName: nfs-client-storageclassresources:requests:storage: 2Giheadless service:k8s集群当中一种特殊的服务类型不分配Cluseter给service:也不会负载均衡到后端的pod,DNS来提供服务的发现和访问
由于Clusterip的是空k8s集群会给每个headless service中的pod创建一个dns记录
格式:pod-name.headless-service-name.namespace.svc.cluster.local.
记录了 web-0 nginx-web defaults 本地地址(pod的ip地址)
通过dns直接解析访问pod的IP地址
web-0 10.244.10 做一个地址映射
为什么要用healdless:
有序独立个体
deployment的pod是没有名称的随机字符串无序他需要一个集中的clusterip来集中统一为pod提供网络
statefulset是有序的pod的名称是固定的重建之后pod的标识符也不变pod的名称是唯一的标识符
系统直接通过pod名称直接解析ip地址。 ip会不会变
为什么要有volumeClaimTemplates:
有状态的副本集群都会涉及持久化存储每个pod的都是独立个体每个pod都有一个自己的专用的存储点
statefulset在定义的时候就规定了每个pod是不能使用同一个存储卷所以才需要动态pv 不是是固定节点的应用不是固定ip的一个用
更新发布比较频繁
支持自动伸缩节点的资源不过可以自动扩容 4、job:分为两类 job普通任务 cronjob定时任务
常用于运行那些仅需要执行一次的任务
应用场景:数据库迁移、批处理脚本执行、视频解码业务
对于k8s系统来说既然定义了job只需要执行一次或者指定次数即可不能一直运行。
第一点:必须要指定容器的重启策略 onfailure和Never
第二点:执行失败的次数也是受限的默认是6次但是可以指定用backoffLimit:
backoffLimit: 4 #允许失败的次数是4次4次之后restartPolicy策略来进行容器的重启或者不重启。
第三点:更新yaml文件。必须要先删除任务再更新不能动态更新的。
容器化部署部署过数据库吗
数据库是核心资产不会容器化部署 5、cronjob:周期性任务像linux的crontab一样语法一样:分 时 日 月 周
应用场景:如通知、定时备份 定时检测(结合探针一块做) 总结
这五个都是控制器创建的pod都是依赖于控制器
deployment:典型的无状态的应用最好用的也是最多的
statefulSet:有状态应用有序的独立的pod
daemonSet:无状态应用不能定义副本数每个节点都运行一个pod也可以指定节点
job:执行一次性的任务必须要有重启策略同时注意默认失败次数为6次。只有失败次数达到了重启策略才会生效
cronjob:定时任务 写一个yaml用cronjob定期检测80端口是否存活 ,在加上存活探针检测80端口用到tcpSocker
apiVersion: batch/v1beta1
kind: CronJob
metadata:name: hello
spec:schedule: */1 * * * *jobTemplate:spec:template:metadata:labels:app: hellospec:containers:- name: helloimage: nginx:1.22command: [/bin/bash, -c, date; echo hello is ok]livenessProbe: #定义存活探针tcpSocket:port: 80restartPolicy: NeverbackoffLimit: 4 #允许任务失败的4次4次后restartPolicy策略。来进行容器的重启或
不重启
~
~
~