linux cpu占用率如何看
281
2022-09-10
K8S学习笔记之Kubernetes核心概念
0x00 Kubernetes简介
Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践。
K8S在Docker容器技术的基础之上,大大地提高了容器化部署应用简单高效。经过几年的快速发展,K8S已经成为建设容器云平台的首选方案。
2015年7月,Kubernetes v1.0正式发布,截止到2018年6月28日最新稳定版本是v1.11。
该版本发布主要增加了备受关注功能,分别为:基于IPVS的集群内负载均衡,与目前使用的工具相比,它更具可扩展性并且提供更好的网络吞吐量。以及CoreDNS作为集群DNS的附加选项,这就意味着生产应用的可扩展性和灵活性都将得到提升。
官方网站地址:API做某些事情,精细化权限分配。
0x02 常用资源对象概念
Kubernetes架构图:
上图是Kubernetes集群架构,下面看看Kubernetes功能实现的重要概念,这些功能是组成Kubernetes集群的基石。
Master
Master主要负责资源调度,控制副本,和提供统一访问集群的入口。
Node
Node由Master管理,并汇报容器状态给Master,同时根据Master要求管理容器生命周期。
Pod
Docker最小部署单元是容器,而Kubernetes最小部署单元是Pod,一个Pod有一个或多个容器组成,Pod中容器共享存储和网络,一个Pod在同一台Node上运行。
Service
Service一个应用服务抽象,定义了Pod逻辑集合和访问这个Pod集合的策略。Service代理Pod集合对外表现是为一个访问入口,分配一个集群IP地址,来自这个IP的请求将负载均衡转发到后端Pod中的容器。
用过负载均衡器的朋友可能很好理解,其实Service就是一个抽象的负载均衡器。
Service通过LableSelector选择一组Pod提供服务。
Lable
标签是一个key=value的键值对,附加在某个资源上,每个对象可以有多个标签,然后根据这个lable关联、查询和筛选。
就像Service与Pod,当多个Service、多个Pod情况下,访问某个Service怎么就知道转发到指定Pod呢?
Volume
数据卷,挂载宿主机文件、目录或者外部存储到Pod中,为应用服务提供存储,也可以Pod中容器之间共享数据。
Namespace
命名空间将资源对象逻辑上分配到不同Namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。命名空间也称为虚拟集群。
下面是更高层次抽象对象:
ReplicaSet
Deployment
官方建议使用Deployment管理ReplicaSets,而不是直接使用ReplicaSets,这就意味着可能永远不需要直接操作ReplicaSet对象,因此Deployment将会是使用最频繁的资源对象。
StatefulSet
StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署、扩展、删除和滚动更新。
典型场景:Zookeper集群
DaemonSet
DaemonSet确保所有节点运行同一个Pod。当节点加入Kubernetes集群中,Pod会被调度到该节点上运行,当节点从集群中移除时,DaemonSet的Pod会被删除。删除DaemonSet会清理它所有创建的Pod。
典型场景:在每个节点部署日志收集程序(如filebeat),监控程序(agent)
Job
一次性任务,运行完成后Pod销毁,不再重新启动新容器。还可以任务定时运行。
Cron Job定时任务,一个CronJob对象就像一个crontab文件的一行。给定时间定期运行,以Cron格式编写。
典型场景:数据库备份,发送邮件
0x03 系统架构及组件功能
Master组件
kube-apiserver
Kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。
kube-controller-manager
处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。
kube-scheduler
根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
Node组件
kubelet
kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。
kube-proxy
在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。
容器技术
docker或rocket
容器引擎,运行容器。
数据库
etcd
分布式键值存储系统。用于保存集群状态数据,比如Pod、Service等对象信息。
作者:李振良
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~