Kubernetes是什么?
- kubernetes又称k8s 大家肯定听k8s比较多。叫k8s因为kubernetes中间有8个字母,被俗称k8s。k8s是由Google2014年开源,后吸取了大量了优质社区内容而演变的。
- 我们讲一下容器的优点:容器具有敏捷创建部署,超轻量级,以及持续集成、开发的优点。缺点:当业务量不断增长的时候,我们的容器可能从传统服务器的几十台机器扩展成为成千上万的容器,这时对于我们的管控和运维压力过大。
- k8s就是为此而生,k8s可以发现服务并负载均衡,支持容器编排,集中管控,自动部署和回滚,资源限制,自我修复等。
Kubernetes的组件
标准的kubernets是由多个节点组成的集群。至少一个master(大脑,控制节点)和一个node(工作节点)。
这是来自kubernetes的图表。
- api-server: apiserver只存在与master节点,apiserver用于控制,通过调用api组件进行命令执行和反馈,apiserver也是kubernetes的主要实现方式,在某些大流量的场景,我们可以通过创建多个apiserver实力来进行分流。
- etcd: etcd是兼具一致性和高可用性的键值k-v数据库,etcd保存了k8s后台的所有数据。
- kube-scheduler: 官方的回答是监视器,我更愿意把它理解为调度器,sched运行在master节点上,通过调度pod来为pod寻找合适的节点,保证pod以及集群的正常运行。
- kube-controller-manager: 顾名思义,kcm是主要控制器,实际上控制器的类型有很多:一个完整的高可用集群控制器的种类可超过20个。这里我列出几个具有代表意义的常用控制器。
- 节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应
- 任务控制器(Job controller): 监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
- 端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)
- 服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌
- cloud-controller-manager:用于链接公有云和混合云,一般用于链接云服务厂商提供的API连接。
Node节点的组件
- kubelet: kubelet是唯一直接管理pod的组件,kubelet用于创建、维护、缩扩、健康检查、通过各类机制确保pod健康。kubelet直接与apiserver取得联系进行执行。
- kube-proxy: proxy是网络代理工具,用于时间pod的流量转发。
- container runtime: container runtime是容器化的核心组件,用来负责容器运行时的环境,kubernetes支持多个容器运行环境:Docker、containerd、CRI-O以及实现Kubernetes CRI(容器运行环境接口)【容器化学的不好的建议补习一些容器化的架构知识】
通信方式:
user com 将命令移交给apis—>请求scheduler调度–sched调度后向etcd apis 与该节点各个组件互相联系,由node节点的kubelet发现任务(apis不发送请求,由各个节点控制器自己发现),apis返回node节点(kubelet)的回应(例如创建pod),kubelet将数据返回etcd -->etcd 储存元数据,kubelet创建pod–工作,返回元数据给apis apis再向etcd提交元数据。(需要注意的是,etcd始终只与apis通信。)
明日内容,使用kubernetes 对象。
|