k8s功能特性(二)
k8s功能特性
1.k8s的核心功能
1.1.自愈
-
重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播
-
自愈功能就好比是当一个容器在一个节点上不可用了,会迅速的迁移到另一个可用的node节点,保证业务的高可用
1.2.弹性伸缩
-
弹性伸缩也是水平扩展
-
弹性伸缩可以根据容器的负载自动的增加或者减少容器
-
弹性伸缩常用于SOA架构,SOA(把每一个功能都拆成一个独立的web服务,每一个独立的wbe服务都有一个集群)
-
通过监控容器的CPU的负载值,如果这个平均值高于80%,则会增加容器的数量,如果平均值低于10%则会减少容器的数量
-
弹性伸缩是监控的web服务器的CPU,当访问特别多的时候会增加web容器的数量并自动加入到负载均衡中保障业务的可用性,当容器压力恢复后自动把容器减少
1.3.服务的自动发现和负载均衡
- 不需要修改应用程序来使用不熟悉的发现机制,k8s为容器提供了自己的ip地址和一组容器的单个dns名称,并可以在他们之间自动的负载均衡
- 比如nginx负载均衡,当有一个节点起来了,我们需要手动更改配置文件才能生效,但是k8s就不用去修改配置文件会自动的将节点加入到集群中
1.4.滚动升级和一键回滚
- k8s逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例,如果有问题会恢复所有的更改
- 滚动升级就类似于一批一批的升级,如果这一批用户使用过程中没有bug的存在,会接着升级,最后达到全范围的升级
- 一键回滚表示当这批用户觉得有不好的体验,k8s会自动的回滚的上一个版本
2.k8s核心组件
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 | 提供gui |
federation | 提供跨可用区的集群 |
fluentd-elasticsearch | 提供日志采集、存储、查询(EFK) |
目录 返回
首页