企业级运维之云原生与Kubernetes实战课程 第三章第4讲 阿里云ACK集群控制器

简介: 控制器列表kube-controller-managercloud-controller-managerkube-proxy最佳实践

企业级运维之云原生与Kubernetes实战课程

第三章第4讲 阿里云ACK集群控制器

 

 

视频地址:https://developer.aliyun.com/learning/course/913/detail/14605

 

目录

 

  • 控制器列表
  • kube-controller-manager
  • cloud-controller-manager
  • kube-proxy
  • 最佳实践

 

 

一、控制器列表

 

控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如:当不满足部署的replicas字段时,启动新的Pod)。

 

1. 控制器列表

 image.png

 

2. 控制器分类

 image.png

 

3. Kube-scheduler

 

Kube-scheduler是比较常用的控制器组件,负责监听Kube API server,比如新创建的、未指定运行节点(Node)的 Pods,并基于其约束和可用资源为这些Pods选择适合的节点。

 

调度决策需要考虑的因素:

 

  • 如何保障每个节点都会被分配,使资源得以高效利用;
  • 调度性能高,可尽快完成大批量调度工作;
  • 允许用户根据自身需求设定调度策略。

 

二、Kube Controller Manager(KCM)

 

Kube Controller Manager是Kubernetes集群内部资源的管理器,通过API服务器监控集群的状态,确保集群处于预期的工作状态。

 

Kube Controller Manager由负责不同资源的多个控制器构成,包含:Node Controller、ReplicaSet、Endpoints Controller、Deployment Controller、ServiceAccount&TokenController等。

 

1.  Node Controller

 

Node Controller负责在节点出现故障时进行通知和响应。

 

2.  ReplicaSet Controller

 

ReplicaSet Controller负责为系统中的每个副本控制器对象维护正确数量的Pod。

 

3.  Endpoints Controller

 

Endpoints Controller负责填充端点(Endpoints)对象(即加入Service与Pod),比如:如果监测到Pod事件(新建或更新),则更新它对应的Service Endpoints对象。

 

4.  Deployment Controller

 

Deployment Controller负责管理Deployment资源。

 

5.  ServiceAccount&TokenController

 

ServiceAccount&TokenController负责为新的命名空间创建默认账户和API访问令牌。

 

三、Cloud Controller Manager(CCM)

 

Cloud Controller Manager提供Kubernetes与阿里云基础产品的对接能力,例如CLB(原SLB)、VPC等。

 

1. CCM主要功能

 

CCM主要提供以下两方面功能:

 

  • 管理负载均衡

 

当Service的类型设置为Type=LoadBalancer时,CCM组件会为该Service创建或配置阿里云负载均衡CLB,包括含CLB、监听、后端服务器组等资源。当Service对应的后端Endpoint或者集群节点发生变化时,CCM会自动更新CLB的后端虚拟服务器组;

 

  • 实现跨节点通信

 

当集群网络组件为Flannel时,CCM组件负责打通容器与节点间网络,实现容器跨节点通信。CCM会将节点的Pod网段信息写入VPC的路由表中,从而实现跨节点的容器通信。该功能无需配置,安装即可使用。

 

2. CCM组件

 

a.  Node Controller

 

Node Controller用于在节点发生变化时自动更新CLB的后端。

 

b.  Route Controller

 

Route Controller用于在底层云基础架构中设置路由。

 

c.  Service Controller

 

Service Controller用于创建、更新和删除云提供商负载均衡器。

 

四、kube-proxy

 

kube-proxy是Node上的网络代理组件,以DamonSet的形式工作在每一个节点,是实现Service负载均衡的控制器。

 image.png

 

kube-proxy支持iptables和ipvs两种模式,Kube-proxy的作用是管理Service的endpoint,更新endpoint到iptables或ipvs中。

 

ipvs模式和iptables模式之间的差异如下:

 

  • ipvs为大型集群提供了更好的可扩展性和性能,当服务大于1000时,ipvs的性能明显优于iptables;
  • ipvs支持比iptables更复杂的负载平衡算法(最小负载,最少连接,位置,加权等);
  • ipvs支持服务器健康检查和连接重试等;

 

因此,目前更推荐使用ipvs模式。

 

五、最佳实践

 

1. 实践场景描述

 

SLB设置了externalTrafficPolicy:Local类型,这种类型的SLB地址只有在Node中部署了对应的后端Pod,才能被访问。因为 SLB的地址是集群外使用,如果集群节点和Pod不能直接访问,请求不会到SLB,会被当作Service的扩展IP地址,被kube-proxy的iptables或ipvs转发。

 

2. 解决方案

 

方案一:

在Kubernetes集群内通过ClusterIP或者服务名访问。

 

方案二:

将LoadBalancer的Service中的externalTrafficPolicy修改为cluster,但是在应用中会丢失源IP,Ingress的服务修改命令如下:

 

kubectl edit svc nginx-ingress-b-nkube-system

 

  • 如果要保留原IP,Pod需要用hostnetwork方式,在Pod的spec里加上: dnspolicy: ClusterFirstWithHostNet

hostNetwork: true

service的metadata里加上:

annotations:

servicebeta.kubenetes.io/bACKend-type: eni

 

  • 如果是terway集群,除了将LoadBalancer的Service中的externalTrafficPolicy修改为Cluster之外,还要直挂eni:添加service.beta.kubernetes.io/bACKend-type: eni

 

 

本讲小结

 

1.  集群中核心控制器的基本作用。

2.  Kube-proxy负载均衡的原理。

image.png

 

思考:

 

1.  为什么集群内无法访问service的externalIP,该怎么解决?

2.  添加新的节点,Pod网络不通,该怎么排查?

3.  service的几种类型,kube-proxy如何实现负载均衡的?

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
消息中间件 人工智能 监控
【云故事探索 | NO.15】:阿里云云原生加速鸣鸣很忙数字化
【云故事探索 | NO.15】:阿里云云原生加速鸣鸣很忙数字化
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
|
消息中间件 人工智能 监控
【云故事探索】NO.15:阿里云云原生加速鸣鸣很忙数字化
鸣鸣很忙集团作为中国最大休闲食品饮料连锁零售商,通过数字化与云原生技术实现快速扩张,4年完成其他企业10年的数字化进程。其采用阿里云全栈云原生方案,实现弹性扩容、智能补货、模块化开店等创新实践,支撑日均超430万交易数据稳定运行。未来将深化AI应用,推动供应链智能化与业务全面升级。
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
915 6
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
941 12
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
1424 0
|
人工智能 运维 监控
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
404 17
|
机器学习/深度学习 人工智能 运维
运维不背锅,从“自动修锅”开始:AI自动化运维是怎么回事?
运维不背锅,从“自动修锅”开始:AI自动化运维是怎么回事?
844 49