kubernetes快速入门-基础概念

网友投稿 231 2022-10-27

kubernetes快速入门-基础概念

kubernetes基础概念

概述

kubernetes是一个开源的容器编排系统,可实现容器化应用程序的自动部署、水平扩展和管理。kubernetes集群是master/nodes的架构,master是管理节点,一般由3个节点组成,nodes节点称为工作节点,节点要多至上千个。

组件

更详细的请参考官方文档: API Server,Scheduler,Controller-Manager

API Server: 它提供了各类资源的增、删、改、查以及watch等的接口,是整个kubernetes系统的中心。如Pod、Replication Controller、Service等资源。 Scheduler: 调度器,默认调度器为kube-scheduler,调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod,调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 Controller-Manager: 控制管理器,Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。k8s中有许多Controller,如:Replication Controller,Node Controller, Namespace Controller, Token Controller, Service Controller等,这些控制器保证集群内的资源保持预期状态,而Controller Manager则管理这些Controller的状态。

node节点上的组件: kubelet, 容器运行时(一般指docker引擎),kube-proxy

kubelet: kubelet是在每个Node节点上运行的主要 “节点代理” kube-proxy: kube-proxy是每个Node节点上运行的网络代理,它作为附件(addons)运行,自托管在kubernets上,帮忙负责生成iptabels或ipvs规则,kubenetes1.11版本后(包含1.11)默认使用ipvs,之前的版本默认使用iptables。 容器运行时:负责运行容器的软件,一般是docker引擎

Pod

kubernetes管理和调度的最小单位是Pod,这只是一个逻辑上的概念,一个pod是运行一个或多个应用容器,Pod中的每个容器共享网络名字空间。

在node节点上把关系比较紧密的容器打上标签归成一类pod,然后通过Label Selector对打上的标签进行过滤,这样node节点就能利用标签选择器来选择出我们需要的一类容器。

Pod分类:

Service

Pod是有生命周期的,一个Pod随时都有可能被杀掉,也随时可能有Pod被创建,所以客户端程序要想访问Pod中容器提供的服务,kubernetes引入了一个中间层service,工作在Pod之上,客户端程序直接访问service,只要service不被删除,那IP地址就固定,service作为服务访问的入口。

service是靠标签选择器来关联Pod的,只要标签相同就被关联。service不是什么应用程序,也不是实体组件,它只是一个iptables的一个DNAT规则,如果service后端的Pod是个时,iptables的DNAT就是多目标的负载均衡转发,在kubernetes的1.11版中此种功能已使用ipvs(LVS)来实现。

网络

kubernetes集群需要三个网络,物理主机网卡所在网络称为主机节点网络,service上有个IP地址,此IP地址是虚拟的,只存在于iptables或ipvs中,此网络称为service网络,Pod所在网络称为pod网络

通信

同一个Pod内的多个容器共享网络名称空间,可以使用lo回环地址通信

各Pod之间通信通过隧道转发报文来实现叠加网络(Overlay Network) 来通信

Pod与Service之间通信是通过iptables或ipvs规则调度

CNI

Container Network Interface,容器网络接口API。

实现CNI的组件:

flannel:支持网络配置,不支持网络策略 calico: 支持网络配置,也支持网络策略 canel: 是flannel与calico的结合体,支持网络配置和网络策略

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:往DAO类中注入@PersistenceContext和@Resource的区别详解
下一篇:【EASY EAI Nano开源套件试用体验】5AI功能测试之多人脸识别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~