企业级运维之云原生与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
相关文章
|
运维 算法 机器人
阿里云AnalyticDB具身智能方案:破解机器人仿真数据、算力与运维之困
本文将介绍阿里云瑶池旗下的云原生数据仓库AnalyticDB MySQL推出的全托管云上仿真解决方案,方案采用云原生架构,为开发者提供从开发环境、仿真计算到数据管理的全链路支持。
|
存储 运维 监控
云服务运维智能时代:阿里云操作系统控制台
阿里云操作系统控制台是一款创新的云服务器运维工具,采用智能化和可视化方式简化运维工作。通过AI技术实时监控服务器状态,自动分析性能瓶颈和故障原因,生成详细的诊断报告与优化建议。用户无需复杂命令行操作,仅需通过图形化界面即可高效处理问题,降低技术门槛并提升故障处理效率。尤其在服务器宕机等紧急情况下,智能诊断工具能快速定位问题根源,确保业务稳定运行。此外,控制台还提供内存、存储、网络等专项诊断功能,帮助用户全面了解系统资源使用情况,进一步优化服务器性能。这种智能化运维方式不仅提升了工作效率,也让个人开发者和企业用户能够更专注于核心业务的发展。
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
1377 3
|
运维 监控 算法
阿里云 OS 控制台:让基础设施运维不再难
涵盖智能异常检测、智能根因分析、智能修复建议的全链路运维解决方案
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
1012 6
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
存储 人工智能 运维
阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台
本文详细评测了阿里云操作系统控制台,作为一款集运维管理、智能助手和系统诊断于一体的工具,它为企业提供了高效管理云资源的解决方案。文章涵盖登录与服务开通、系统管理与实例纳管、组件管理与扩展功能、系统诊断与问题排查以及实时热点分析与性能优化等内容。通过实际操作展示,该平台显著提升了运维效率,并借助AI智能助手简化了复杂操作。建议进一步完善组件库并增强第三方兼容性,以满足更多高级运维需求。
1134 3
|
存储 运维 监控
阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”
阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”
939 3
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。

热门文章

最新文章

推荐镜像

更多