保持 pod 的健康
- 在实际的应用里,希望部署的pod能自动保持运行和健康,无需手动干预
 - 不要直接创建pod,而是创建RC或者Deployment这样的资源由他们来管理
 - 如何托管我们的pod,k8s如何自动重启pod,node节点失败pod如何被调度。
 - 即使进程崩溃,应用程序会停止工作,比如java进程的内存泄露
 
存活探针
1  | # k8s三种探测容器机制  | 
基于HTTP的存活探针
1  | # https://github.com/luksa/kubernetes-in-action/tree/master/Chapter04/kubia-unhealthy  | 
1  | # 大约1分半后容器会重启  | 
获取崩溃容器的应用日志
1  | # 当想知道前一个容器日志,而不是当前的容器时 加上 --previous  | 
查看事件
1  | [root@k8s-master1 demo]# kubectl describe pod kubia-liveness  | 
配置存活探针的附加属性
1  | # http-get http://:8080/ delay=0s timeout=1s period=10s #success=1 #failure=3  | 
1  | # initialDelaySeconds: 10 # 容器启动5秒后 开始健康检查  | 
1  | [root@k8s-master1 demo]# vim kubia-libeness-probe.yaml  | 
创建 ReplicationController
1  | # ReplicationController 三部分  | 
1  | [root@k8s-master1 demo]# vim kubia-rc.yaml  | 
断开 node2 节点测试
1  | [root@k8s-master1 demo]# kubectl get pods -o wide  | 
pod 迁移或迁出 rc 的作用域
1  | 1. 通过修改pod的标签 可以将它从rc的作用域中添加或者删除  | 
1  | # 更改已托管到rc中的pod标签  | 
kubectl edit 修改模板
1  | [root@k8s-master1 demo]# kubectl edit rc kubia  | 
kubectl sacle 水平扩容
1  | [root@k8s-master1 demo]# kubectl scale rc kubia --replicas=5  | 
删除 ReplicationController
1  | # 1. 删除rc的同时,它管理的pod也会被删除  | 
使用 ReplicatSet 替换 ReplicationController
1  | # 1. ReplicationController 是用于复制和在异常时重新调度节点的最早组件  | 
ReplicatSet 和 ReplicationController 的区别
1  | # 1. ReplicationController 只能匹配一组标签  | 
定义 ReplicatSet
1  | # 参考  | 
ReplicatSet 的标签选择器
1  | # ReplicatSet 对于 rc的主要改进就是标签选择器  | 
删除 ReplicatSet
1  | # 删除rs,则下面的pod同时删除  | 
DaemonSet 在每个 node节点上运行1个pod
1  | 1. 如果 node节点下线 DaemonSet不会再其他节点上重新部署pod  | 
创建 DaemonSet
1  | [root@k8s-master2 ssd]# vim Dockerfile  | 
1  | [root@k8s-master1 demo]# kubectl create -f kubia-ds.yaml  | 
1  | # 查看  | 
1  | # 删除 ds  | 
Job 运行单个任务的 pod
1  | 1. jod 一旦运行完成不会重启容器  | 
创建 Job
1  | [root@k8s-master2 job]# vim Dockerfile  | 
1  | [root@k8s-master1 demo]# kubectl explain job  | 
1  | • Always: 当容器终止退出后,总是重启容器,默认策略。  | 
查看 Job 运行
1  | [root@k8s-master1 demo]# kubectl get jobs  | 
计划任务 CronJob
创建 CronJob
1  | [root@k8s-master1 demo]# kubectl explain cronjob  | 
1  | [root@k8s-master1 demo]# vim cronjob.yaml  | 
