什么是Kubernetes?
Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。
为什么需要Kubernetes?
Kubernetes为你提供了一个可弹性运行分布式系统的框架。Kubernetes 会满足你的扩展要求、故障转移、部署模式等。
Kubernetes为你提供:
- 服务发现和负载均衡
- 存储编排
- 自动部署和回滚
- 自动装箱计算
- 自我修复
- 密钥与配置管理
Borg
Borg是Google内部的大型集群管理系统,该系统是Kubernetes的前身。
Kubernetes
上图是Kubernetes的组件图,组件的主要作用如下:
- API-Server(APIS):所有资源的操作的唯一入口,提供认证、授权、访问控制等机制
- Scheduler:资源的调度器,负责按照预定的策略将Pod调度到相应的Node上
- ControllerManager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- ETCD:键值对数据库,存储了整个集群的状态
- Kubelet:负责容器的生命周期管理,负责Volume(CSI)和网络(CNI)的管理
- Kube-Proxy:负责为Service提供集群内部的负载均衡和服务发现等
除了上述核心组件以外,以下组件在Kubernetes中也具有至关重要的作用:
- CoreDNS:负责为整个集群提供DNS服务,这样我们外部访问的时候可以通过域名,而不是一个固定的IP
- Ingress Controller:提供了7层代理,为服务提供基于Http或者Https的外网入口
- Dashboard:提供GUI
- Prometheus:提供Kubernetes集群的监控
- Federation:提供跨可用区的集群
下图是Kubernets的Master组件图:
下图是Kubernetes的Node组件图:
本期Kubernetes就到这