Deployment
用于部署无状态的服务,这个最常用的控制器,比如管理无状态的服务,比如configserver,zuul,springboot。 可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复,一键回滚等功能。
1、K8s调度原理
Pod只存在某一个物理节点上,可以运行多个Container
2、Pod的生命周期
暂停Pod,可以暂停deployment
kubectl get depolyment -owide
kubectl scale --replicas=0 deployment/xxx
NAME: Deploment名称
READY : Pod的状态,已经Ready的个数
UP-TO-DATA: 已经达到期望状态的被更新的副本数
AVAILABLE:可以用的副本数
AGE:显示应用程序运行时间
CONTAINERS: 容器名称
IMAGES: 容器的镜像
SELECTOR: 管理的Pod的标签
删除Pod。删除之后,状态变成Succeed
kubectl delete pod podname
3、资源限制
资源标签 kubectl label
资源限制: nodeSelector
查看有哪些label
kubectl get node --show-labels
打标签: 给node2打上标签
kubectl labels node node2 disktype=ssd
修改xxx.yaml文件
kubectl apply -f xxx.yaml
这样pod就会在node2节点上。
4、调度约束
Pod标签: metadata:labels:XXX:YYYY
调度约束:spec:selector:XXX:YYYY
//给Pod打标签,然去找这个Pod
调度约束: spec:podSelector:matchLabels:XXX:YYYY
5、健康检查
LivenessProbe(容器级别) //查询容器出问题,尝试进行重启。在高可用场景下使用。
ReadinessProbe(容器级别) //查询容器出问题,停止容器对外的服务。适用于滚动升级、新应用上线,这时候可能代码有问题。
restartPolicy(pod级别) ,当这个Pod出现问题时,是restart,还是非restart。
实例1:
如下图所示,对容器readiness-httpget, 设置健康检查ReadinessProbe, 使用http的方式对index.html 进行查询。
如果正常拿到,则认为容器是正常启动的。inititalDelaySeconds表示停止多少秒再进行检查检查。
peripdSeconds: 表示查询成功后,每隔多少秒进行反复查询
如果index.html 获取不到,则认为容器异常,立刻停止容器对外的访问,由其它Pod提供服务。
实例2
启动过程中,传递一个命令。该命令创建一个文件。每隔3秒检查这个文件是否存在。检查到没有这个文件,则进行容器重启。
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!