Kubernetes
Kubernetes(常缩写为“K8s:),是一个开源的容器编排平台,最初由Google开发,现在由云原生计算基金会(CNCF)维护。
Kubernetes主要解决:在自动化应用的部署、扩展、和管理…等问题。

1、自动化部署与管理
比如:自动部署、扩展、和管理容器化应用。
以及,自动重启失败的容器,替换或重调度当节点失效时的容器。
2、服务发现与负载均衡
自动分配IP地址和DNS名称,负载均衡Pod间的流量。
3、存储编排
自动挂载所需的存储系统,如本地存储、云供应商存储、网络存储等。
4、自动伸缩
基于CPU使用情况、或其他自定义指标,自动扩展、或缩减应用实例的数量。
Kubernetes工作原理
Kubernetes通过以下组件和流程来实现其功能:
1、集群结构
如下图所示:

Master节点:负责管理和控制整个集群,主要组件包括:API Server、Scheduler、Controller Manager和etcd。
Worker节点:负责运行应用容器,主要组件包括:Kubelet、Kube-proxy和容器运行时(如Docker)。
2、核心组件
API Server
API Server是Kubernetes集群的前端组件,它提供了一个RESTful API,用于管理集群的各种资源。它是Kubernetes中的中央控制点,所有的操作都通过API Server进行。
功能:
- 提供集群管理的统一入口;
- 处理来自客户端的API请求,包括创建、删除、更新和查询各种资源;
- 实现了认证、授权、准入控制、资源验证和默认值等功能;
- 提供了一种基于插件的机制,允许用户扩展API Server的功能。
etcd
etcd是一个高可用的分布式键值存储系统,用于存储Kubernetes集群的所有数据。
它是Kubernetes的后端数据库,用于存储集群的配置信息、状态信息和元数据等。
Scheduler
Scheduler是Kubernetes集群的调度器组件,负责为新创建的Pod选择合适的节点进行调度,以保证集群中的各种资源得到合理利用。
功能:
- 监视集群中未分配节点的Pod;
- 根据Pod的资源需求和调度策略选择合适的节点进行调度;
- 考虑节点的负载情况和亲和性/反亲和性规则等因素进行调度;
- 支持扩展和自定义的调度器插件。
Controller Manager
Controller Manager是Kubernetes集群的控制器管理器组件,负责管理集群中的各种控制器。
比如:ReplicaSet Controller、Deployment Controller。。。。。。等。

Kubernetes和Docker关系

Docker:是一种容器技术,用于创建和管理容器。它提供了构建、运行和分发容器的工具。
Kubernetes:是一个容器编排平台,用于管理多个Docker容器,它并不是替代Docker,而是构建在Docker之上的更高层次的管理工具。
在Kubernetes中,Docker通常作为容器运行时使用,负责启动、和管理容器。
Kubernetes提供了调度、扩展和管理这些容器的功能,从而将单个容器转变为一个可伸缩、和自我修复的集群应用程序。