认识 k8s

157 阅读3分钟

什么是 k8s

Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,用来管理云平台中多主机上的容器化应用。k8s 提供了应用部署,规划,更新,维护的一种机制。

应用部署的演变

  1. 传统部署:将应用打包手动上传到服务器运行,这种方法需要大量的时间和精力,并且容易出现错误。最大的问题是同一服务器上的多应用环境不隔离。
  2. 虚拟化部署:将一台物理服务器划分为多个虚拟机,每个虚拟机都可以独立运行不同的操作系统和应用程序。虚拟化技术可以提高服务器的利用率、灵活性和可伸缩性,从而降低IT成本和管理复杂度。对于每个应用实现了环境隔离,不存在资源竞争的问题。但虚拟化部署资源占用过重,操作繁琐,效率不高。
  3. 容器化部署:容器化部署是指将应用程序和依赖项打包成一个可移植的容器,并在任何地方部署和运行。容器化部署也实现了资源的隔离,并且占用资源远低于虚拟机,可移植性高,效率高。

为什么需要 k8s

随着应用部署方式的演变,容器化部署带来了许多好处的同时也带来了一些问题,对于一个大型分布式系统,可能会有成千上百个容器,这时管理容器就是一个很大的问题。现实生产环境的复杂程度实在是太高了,除了最基本的安装,还会有各式各样的需求,比如服务发现、负载均衡、状态监控、健康检查、扩容缩容、应用迁移、高可用等等。k8s 便可以完美解决这一问题。

k8s 特点

自动化上线和回滚

Kubernetes 会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。如果出现问题,Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统。

服务发现与负载均衡

无需修改你的应用程序去使用陌生的服务发现机制。Kubernetes 为容器提供了自己的 IP 地址和一个 DNS 名称,并且可以在它们之间实现负载均衡。

自我修复

重新启动失败的容器,在节点死亡时替换并重新调度容器, 杀死不响应用户定义的健康检查的容器, 并且在它们准备好服务之前不会将它们公布给客户端。

存储编排

自动挂载所选存储系统,包括本地存储、诸如 AWSGCP 之类公有云提供商所提供的存储或者诸如 NFS、iSCSI、Ceph、Cinder 这类网络存储系统。

Secret 和配置管理

部署和更新 Secret 和应用程序的配置而不必重新构建容器镜像, 且不必将软件堆栈配置中的秘密信息暴露出来。

自动装箱

根据资源需求和其他限制自动放置容器,同时避免影响可用性。 将关键性的和尽力而为性质的工作负载进行混合放置,以提高资源利用率并节省更多资源。

批量执行

除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器。

IPv4/IPv6 双协议栈

为 Pod 和 Service 分配 IPv4 和 IPv6 地址

水平扩缩

使用一个简单的命令、一个 UI 或基于 CPU 使用情况自动对应用程序进行扩缩。

为扩展性设计

无需更改上游源码即可扩展你的 Kubernetes 集群。