一、kubernetes简介
kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。
kubernetes是可移植、可扩展、开源的容器管理平台,是谷歌 Borg 的开源版本,简称 k8s
。它可以创建应用、更新应用、回滚应用,也可实现应用的扩容缩容,做到故障自恢复
。
- 可移植:基于镜像可从一个环境迁移到另一个环境,支持公有云、私有云、混合云、多重云等多种平台。
- 可扩展:k8s集群可以横向扩展、根据流量实现自动扩缩容。
- 开源的:源代码托管在github上,任何人都可以下载、修改和使用。
kubernetes的特点:
- 自动装箱(Automatic bin packing):可以根据容器的资源需求和约束条件,将容器自动的调度到合适的位置上。
- 自我修复(Self-healing):当容器运行失败时,会自动的重启,替换,或者杀死容器。
- 水平扩展(Horizontal scaling):可以根据CPU或者内存的使用率,将容器进行扩展。
- 服务发现和负载均衡(Service discovery and load balancing):kubernetes可以自动的将容器添加到负载均衡器中,而且可以根据容器的标签,自动的进行服务发现。
- 自动发布和回滚(Automated rollouts and rollbacks):kubernetes可以根据应用的配置文件,自动的发布和回滚应用。
- 机密和配置管理(Secret and configuration management):kubernetes可以部署和更新机密和应用配置。
- 存储编排(Storage orchestration):kubernetes可以自动的挂载分布式存储系统,例如:local存储,公有云存储,网络存储,等等。
- 批量执行(Batch execution):除了管理长期运行的应用,kubernetes也可以管理批量执行的应用。
- 服务网格(Service mesh):kubernetes可以管理应用之间的网络通信。
1、kubernetes的起源
kubernetes 单词起源于希腊语,意为“舵手”或“飞行员”,它是Google基于Borg开源的容器编排调度引擎
,是Google多年大规模容器管理技术的开源版本,也是CNCF(Cloud Native Computing Foundation)最重要的项目之一,是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
2、kubernetes的架构
kubernetes的物理结构为master/node模式。架构分为master节点和node节点,master节点主要负责集群的管理,node节点主要负责容器的运行。
K8S集群至少需要一个Master节点和一个Node节点,Master节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露API、调度部署和对节点进行管理,Node节点主要负责容器的运行。
kubernetes的架构如下图所示: