面试题答案
一键面试资源调度
- 特性:
- 多层次调度:Kubernetes支持多层次的资源调度,它有节点选择器、亲和性与反亲和性等机制。节点选择器可基于简单标签将Pod调度到特定节点;亲和性与反亲和性则允许更复杂的调度规则定义,例如指定某些Pod必须或不能在同一节点运行。
- 资源精细化管理:能够对CPU和内存等资源进行精细化的请求(requests)和限制(limits)设置。可以精确控制每个Pod所需和所能使用的资源量,避免资源浪费与过度使用。
- 弹性伸缩:具备HPA(Horizontal Pod Autoscaler)和VPA(Vertical Pod Autoscaler)两种自动伸缩机制。HPA可基于CPU使用率、内存使用率等指标自动调整Pod副本数量;VPA则能动态调整Pod的资源请求和限制。
- 优势:
- 灵活的调度策略:相比Docker Swarm,Kubernetes的多层次调度策略更加灵活,适用于复杂的生产环境,例如混合云场景下不同硬件资源特性的节点调度。
- 适应复杂业务场景:资源精细化管理和弹性伸缩机制,使得Kubernetes更能适应业务负载动态变化的复杂场景,如电商的促销活动期间,能灵活调整资源以应对流量高峰。
服务发现
- 特性:
- 基于DNS的服务发现:Kubernetes为每个Service自动创建一个DNS记录,Pod内的应用程序可以通过该DNS名称直接访问服务,无需额外的配置。例如,一个名为“my - service”的服务,在默认命名空间下,其DNS名称为“my - service.default.svc.cluster.local”。
- 标签选择器关联:通过标签选择器将Pods与Services关联,动态地发现后端提供服务的Pods。只要Pod的标签匹配Service的选择器,就会自动加入到该服务的负载均衡池中。
- 优势:
- 简洁易用:基于DNS的服务发现方式,使得服务发现对应用程序透明,开发人员无需编写复杂的服务发现逻辑,降低了开发成本。
- 动态更新:标签选择器关联方式,当有新的Pod加入或现有Pod退出时,服务发现机制能自动更新,确保服务始终可达,相比Docker Swarm,在服务发现的动态性和自动化方面表现更优。
负载均衡
- 特性:
- 多种负载均衡模式:支持四层(TCP/UDP)和七层(HTTP/HTTPS)负载均衡。对于四层负载均衡,通过kube - proxy实现;对于七层负载均衡,可借助Ingress Controller(如Nginx Ingress Controller)来实现。
- 内置负载均衡器:Kubernetes集群内部有内置的负载均衡机制,能将流量均匀分配到各个Pod上。并且可以根据Pod的健康状态动态调整负载,当某个Pod出现故障时,自动停止向其发送流量。
- 优势:
- 丰富的负载均衡选项:相比Docker Swarm,Kubernetes提供了更多的负载均衡模式选择,能满足不同应用层协议的负载均衡需求,如对HTTP应用可以实现更细粒度的七层负载均衡策略。
- 健康检查与动态调整:内置负载均衡器结合健康检查机制,确保流量始终流向健康的Pod,提高了服务的稳定性和可用性,这是Docker Swarm所不具备的全面的负载均衡与健康管理能力。