重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播
自愈功能就好比是当一个容器在一个节点上不可用了,会迅速的迁移到另一个可用的node节点,保证业务的高可用
弹性伸缩也是水平扩展
弹性伸缩可以根据容器的负载自动的增加或者减少容器
弹性伸缩常用于SOA架构,SOA(把每一个功能都拆成一个独立的web服务,每一个独立的wbe服务都有一个集群)
通过监控容器的CPU的负载值,如果这个平均值高于80%,则会增加容器的数量,如果平均值低于10%则会减少容器的数量
弹性伸缩是监控的web服务器的CPU,当访问特别多的时候会增加web容器的数量并自动加入到负载均衡中保障业务的可用性,当容器压力恢复后自动把容器减少
kubernetes遵循master-slave,kubernetes的组件可以分为管理单个node组件控制平面的一部分组件
kubernetes master是集群的主要控制单元,用于管理其工作负载均衡并指导整个系统的通信。kubernetes控制平面由各自的进程组成,每个及组件都可以在单个主节点上运行,也可以在支持high-availability clusters的多个主节点上运行
kubernetes主要由以下几个核心组件组成
组件名称说明etcd保存了整个集群的状态apiserver提供了资源操作的唯一入口,任何k8s的操作都有apiserver来传递给各个node节点controller manager负责维护集群状态,比如故障检测、自动扩展,当某一个节点上发生了故障,controller会将docker自动迁移至正常的节点上保证业务的高可用scheduler负责资源调度,当需要创建容器时,scheduler会根据每个节点的负载情况,当负载一致时就会按着顺序来创建docker容器kubelet负责维护容器的生命周期,用来运行docker容器container runtime负责镜像管理以及pod和容器的真正运行kube-proxy负责为service提供端口映射除了核心组件,还有一些推荐的add-ons
组件名称说明kube-dns负责为整个集群提供dns服务ingress controller为服务提供外网入口heapster提供资源监控deshborard提供guifederation提供跨可用区的集群fluentd-elasticsearch提供日志采集、存储、查询(EFK)