前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

Kubernetes 是一种用于在一组主机上运行和协同容器化应用程序的系统,旨在提供可预测性、可扩展性与高可用性的方法来完全管理容器化应用程序和服务的生命周期的平台。

用户可以定义应用程序的运行方式,以及与其他应用程序或外部世界交互的途径,并能实现服务的扩容和缩容,执行平滑滚动更新,以及在不同版本的应用程序之间调度流量以测试功能或回滚有问题的部署。

Kubernetes 提供了接口和可组合的平台原语,使得用户能够以高度的灵活性和可靠性定义及管理应用程序。 简单总结起来,它具有以下几个重要特性。

1.自动装箱

建构于容器之上,基于资源依赖及其他约東自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用和非关键型应用的工作负载于同一节点以提升资源利用率。

2.自我修复(自愈)

支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检査失败后关闭容器并重新创建等自我修复机制。

3.水平扩展

支持通过简单命令或 UI 手动水平扩展,以及基于 CPU 等资源负载率的自动水平扩展机制。

4.服务发现和负载均衡

Kubernetes 通过其附加组件之一的 KubeDNS (或 CoreDNS )为系统内置了服务发现功能,它会为每个 Service 配置 DNS 名称,并允许集群内的客户端直接使用此名称发出访问请求,而 Service 则通过 iptables 或 ipvs 内建了负载均衡机制。

5.自动发布和回滚

Kubernetes 支持“灰度”更新应用程序或其配置信息,它会监控更新过程中应用程序的健康状态,以确保它不会在同一时刻杀掉所有实例,而此过程中一旦有故障发生,就会立即自动执行回滚操作。

6.密钥和配置管理

Kubernetes 的 ConfigMap 实现了配置数据与 Docker 镜像解耦,需要时,仅对配置做出变更而无须重新构建 Docker 镜像,这为应用开发部署带来了很大的灵活性。 此外,对于应用所依赖的一些敏感数据,如用户名和密码、令牌、密钥等信息, Kubernetes 专门提供了 Secret 对象为其解耦,既便利了应用的快速开发和交付,又提供了一定程度上的安全保障。

7.存储编排

Kubernetes 支持 Pod 对象按需自动挂载不同类型的存储系统,这包括节点本地存储、公有云服务商的云存储(如 AWS 和 GCP 等),以及网络存储系统(例如, NFS 、 ISCSI、GlusterFS 、 Ceph 、 Cinder 和 Flocker 等)。

8.批量处理执行

除了服务型应用, Kubernetes 还支持批处理作业及 CI (持续集成),如果需要,一样可以实现容器故障后恢复。

上一篇 下一篇