k8s有哪些核心组件?Linux运维培训
老男孩IT教育
行业新闻
2021年8月27日 17:48
Linux作为一个安全性高、易用的操作系统,被广大开发者所使用,其代码也是开源的,可用性极高,在后期学习中,涉及到一些逻辑性较高、复杂的项目中时,我们会接触到其他技术,如Redis,docker,k8s,本篇文章介绍下k8s中的核心组件都有哪些,请看下文:
Linux作为一个安全性高、易用的操作系统,被广大开发者所使用,其代码也是开源的,可用性极高,在后期学习中,涉及到一些逻辑性较高、复杂的项目中时,我们会接触到其他技术,如Redis,docker,k8s,本篇文章介绍下k8s中的核心组件都有哪些,请看下文:
HPA:Deployment支持二级控制器HPA(HorizontalPodAutoscaler,水平pod自动伸缩控制器),当用户访问流量增加时,节点上的pod不足以承载这么多访问量了,此时我们应该增加pod资源,HPA控制器就可以自动监控pod来确定需要扩展多少个pod。
service:pod是由声明周期的,一个pod有可能随时被另外一个pod给替换掉,加入它们是同一种服务,客户端是无法通过固定的手段来访问这些pod得到,因为pod本身是不固定的,无论是主机名还是ip地址随时都可能在变换。
为了尽可能地降低客户端与pod之间协调的复杂度,k8s为每一组提供同类服务的pod和其客户端之间添加了一个中间层,这个中间层是固定的,中间层就叫service。
service只要不被删除,其地址与名称都是固定的,当客户端需要在其配置文件中写上访问某个服务时,它不再需要自动发现,只需要在配置文件中写明service的名称即可,而这个service是个调度器,其不但能提供稳定的访问入口,还能做方向代理和均衡负载。
当service接收到客户端的请求后,会将其代理到后端pod之上,一旦pod出现故障会立即新建立一个pod,这个新建的pod会立即被service关联上,作为service后端可用的pod之一。
客户端程序访问服务都是通过ip:端口或主机名:端口的方式来实现的。而service关联后端的pod不是靠它的ip和主机,而是靠pod的标签选择器。只要创建pod的label是统一的,无论ip和主机如何改变,其都能被service所识别。
如此一来,只要pod属于标签选择器,只要其在service的管理范围之内,则其就会被关联到service中,当这个动态的pod关联到service中后,再进行动态的探测此pod的ip地址、端口,将其作为自己后端可调度的服务器主机对象,因此,客户端得到请求发送到service,然后由service代理到后端真是的pod中的容器进行响应。
service不是一个程序,也不是一个组件,它只是一个iptables的dnat规则,service作为k8s的对象,有其自己的名称,而service的名称相当于服务名,而这个名称可以被解析。
AddOns附件:安装完k8s后第一件事就需要在k8s集群上部署一个dns pod,以确保个service的名称能够被解析。可以动态改变,包括动态创建、删除、修改。
比如把service名称改了,dns pod会自动触发,将dns解析记录中的名称也改掉,假如我们手动吧service的ip地址改了,同样会自动触发,将dns服务中的解析记录给改掉。如此一来,客户端去访问pod资源的时候可以直接访问service的名称,然后由集群中专用的dns服务来负责解析。
这种pod是k8s自身服务就需要用到的pod,所以我们把它称为基础性的系统架构级的pod对象,而且它们也被称为集群附件。
关于“k8s有哪些核心组件”介绍到这里就结束了,老男孩Linux课程项目多吗?当然,2021年我校课程全新升级,首创师傅带徒弟式教学,课程包括70+实战项目,课程体系领先同行业机构至少1年。
推荐阅读:
