1.什么是kubernetes
- kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
- Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
- 在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
简单来说,主要是以下三个特点:
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化,插件化,可挂载,可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
2.为什么使用kubernetes
使用K8S的原因很多,最主要的还是时代的进步,技术的更替,K8S是时代的产物。
3.使用kubernetes的好处
- 容易学习:轻量级,入门简单,容易理解,方便练习
- 使用便捷:支持公有云,私有云,混合云,多重云
- 自我修复:自动重调度,自动重启,自动复制
- 灵活扩展:自动部署,自动重启,自动复制,自动伸缩/扩展
4.kubernetes的组件有什么
- Master节点
Master组件提供集群的管理控制中心。
Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。请参考构建高可用群集以来构建multi-master-VM。
master | 备注 |
---|---|
kube-apiserver | 用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。请参阅构建高可用集群 |
ETCD | 提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划 |
kube-controller-manager | 运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行(节点 副本 单点 Service Account和Token控制器) |
cloud-controller-manager | 云控制器管理器负责与底层云提供商的平台交互。仅运行云提供商特定的(controller loops)控制器循环。可以通过将–cloud-providerflag设置为external启动kube-controller-manager ,来禁用控制器循环。(节点控制器 路由控制器 Service控制器 卷(Volume)控制器 ) |
kube-scheduler | 监视新创建没有分配到Node的Pod,为Pod选择一个Nod。 |
addons(插件) | 实现集群pod和Services功能的。Pod由Deployments,ReplicationController等进行管理。Namespace 插件对象是在kube-system Namespace中创建 |
DNS | 虽然不严格要求使用插件,但Kubernetes集群都应该具有集群 DNS,群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录,由Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中 |
用户界面 | kube-ui提供集群状态基础信息查看 |
容器资源监测 | 容器资源监控提供一个UI浏览监控数据 |
Cluster-level Logging | 负责保存容器日志,搜索/查看日志 |
- Node节点
节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。
Node | 备注 |
---|---|
kubelet | 主要的节点代理,它会监视已分配给节点的pod,具体功能:安装Pod所需的卷 ,下载Pod的Secret(volume),Pod中运行的 docker(或experimentally,rkt)容器,定期执行容器健康检查 |
kube-proxy | 通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象 |
docker | 运行容器 |
RKT | 运行容器,作为docker工具的替代方案 |
supervisord | 是一个轻量级的监控系统,用于保障kubelet和docker运行(守护) |
fluentd | 一个守护进程,可提供cluster-level logging |