认识Kubernetes
1)简介
https://landscape.cncf.io
1.2)云原生生态系统:
http://dockone.io/article/3006
1.3)CNCF元原生主要框架简介:
https://www.kubernetes.org.cn/5482.html
1.4)K8s核心优势
基于yaml文件实现容器的自动创建、删除
更快速实现业务的弹性横向扩容
动态发现新扩容的容器并对自动用户提供访问
更简单、更快速的实现业务代码升级和回滚
1.5)k8s组件介绍
https://kubernetes.io/zh/#官方网址
-
kube-apiserver:
https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-apiserver/
kube-apiserver: Kubernetes APl server为 api对象验证并配置数据,包括pods、services、replicationcontrollers和其它 api对象,APIServer提供REST操作,并为集群的共享状态提供前端访问入口,kubernetes中的所有其他组件都通过该前端进行交互。
-
kube-scheduler:
https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/
kube-scheduler是Kubernetes的pod调度器,负责将Pods指派到合法的节点上,kube-scheduler调度器基于约束和可用资源为调度队列中每个Pod确定其可合法放置的节点,kube-scheduler一个拥有丰富策略、能够感知拓扑变化、支持特定负载的功能组件,kube-scheduler需要考虑独立的和集体的资源需求、服务质量需求、硬件/软件/策略限制、亲和与反亲和规范等需求。
-
kube-controller-manager:
https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-controller-manager/
kube-controller-manager: Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群中的pod副本始终处于预期的工作状态。
-
kube-proxy:
https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-proxy/
kube-proxy: Kubernetes网络代理运行在node上,它反映了node上 Kubernetes APl中定义的服务,并可以通过一组后端进行简单的TCP、UDP和SCTP流转发或者在一组后端进行循环TCP、UDP和SCTP转发,用户必须使用apiserver APl创建一个服务来配置代理,其实就是kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务访问。
-
kubelet:
https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kubelet/
kubelet:是运行在每个worker节点的代理组件,它会监视已分配给节点的pod,具体功能如下:
-
向master汇报node节点的状态信息
-
接受指令并在Pod中创建docker容器
-
准备Pod所需的数据卷
-
返回pod的运行状态
-
在node节点执行容器健康检查
-
-
etcd:
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd/
etcd 是Coreos公司开发目前是Kubernetes默认使用的key-value数据存储系统,用于保存所有集群数据,支持分布式集群功能,生产环境使用时需要为etcd数据提供定期备份机制。
https://kubernetes.io/zh/docs/concepts/overview/components/#组件预览
#核心组件:
apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet:负责维护容器的生命周期,同时也负责Volume (CVI)和网络(CNI)的管理;
container runtime:负责镜像管理以及Pod和容器的真正运行(CRI) ;
kube-proxy:负责为service提供cluster内部的服务发现和负载均衡;
etcd:保存了整个集群的状态
#可选组件:
kube-dns/coredns:负责为整个集群提供DNS服务
Ingress controller:为服务提供外网入口
Heapster:提供资源监控
Dashboard:提供GUI
Federation:提供跨可用区的集群
Fluentd-elasticsearch:提供集群日志采集、存储与查询

