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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 控制器列表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 ManagerKCM

 

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

 

Kube Controller Manager由负责不同资源的多个控制器构成,包含:Node ControllerReplicaSetEndpoints ControllerDeployment ControllerServiceAccount&TokenController等。

 

1.  Node Controller

 

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

 

2.  ReplicaSet Controller

 

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

 

3.  Endpoints Controller

 

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

 

4.  Deployment Controller

 

Deployment Controller负责管理Deployment资源。

 

5.  ServiceAccount&TokenController

 

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

 

三、Cloud Controller ManagerCCM

 

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-proxyNode上的网络代理组件,以DamonSet的形式工作在每一个节点,是实现Service负载均衡的控制器。

 image.png

 

kube-proxy支持iptablesipvs两种模式,Kube-proxy的作用是管理Serviceendpoint,更新endpointiptablesipvs中。

 

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

 

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

 

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

 

五、最佳实践

 

1. 实践场景描述

 

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

 

2. 解决方案

 

方案一:

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

 

方案二:

LoadBalancerService中的externalTrafficPolicy修改为cluster,但是在应用中会丢失源IPIngress的服务修改命令如下:

 

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

 

  • 如果要保留原IPPod需要用hostnetwork方式,在Podspec里加上: dnspolicy: ClusterFirstWithHostNet

hostNetwork: true

servicemetadata里加上:

annotations:

servicebeta.kubenetes.io/bACKend-type: eni

 

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

 

 

本讲小结

 

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

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

image.png

 

思考:

 

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

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
相关文章
|
3月前
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
|
2月前
|
缓存 运维 安全
7天精通电商API:从接入到运维的完整实战手册
本文全面解析电商API接口技术,从基础概念到高阶应用,涵盖商品、订单、支付与营销等核心模块,并深入探讨性能优化、安全防护与智能化发展方向,助你掌握驱动数字商业的核心技术。
|
5月前
|
消息中间件 存储 NoSQL
RocketMQ实战—6.生产优化及运维方案
本文围绕RocketMQ集群的使用与优化,详细探讨了六个关键问题。首先,介绍了如何通过ACL配置实现RocketMQ集群的权限控制,防止不同团队间误用Topic。其次,讲解了消息轨迹功能的开启与追踪流程,帮助定位和排查问题。接着,分析了百万消息积压的处理方法,包括直接丢弃、扩容消费者或通过新Topic间接扩容等策略。此外,提出了针对RocketMQ集群崩溃的金融级高可用方案,确保消息不丢失。同时,讨论了为RocketMQ增加限流功能的重要性及实现方式,以提升系统稳定性。最后,分享了从Kafka迁移到RocketMQ的双写双读方案,确保数据一致性与平稳过渡。
|
6月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
538 33
|
6月前
|
运维 安全 网络安全
【运维实战分享】轻松搞定 SSL 证书管理,告别证书繁琐操作
Spug证书平台的最大亮点之一就是其极为简化的证书申请流程,无论是新手还是经验丰富的运维专家,都可以在几分钟内轻松完成证书的申请,通过微信扫码直接登录申请,无需复杂注册,整个过程既方便又快捷。
168 17
|
7月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
339 5
|
6月前
|
Prometheus 运维 监控
运维实战来了!如何构建适用于YashanDB的Prometheus Exporter
今天分享的是构建YashanDB Exporter的核心设计理念和关键方法,希望也能为你的运维实战加分!
|
5月前
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
4月前
|
人工智能 Cloud Native 容灾
深圳农商银行三代核心系统全面投产 以云原生架构筑牢数字化转型基石
深圳农商银行完成第三代核心系统全面上云,日均交易超3000万笔,峰值处理效率提升2倍以上。扎根深圳70余年,与阿里云共建“两地三中心”分布式云平台,实现高可用体系及全栈护航。此次云原生转型为行业提供可复制样本,未来将深化云计算与AI合作,推动普惠金融服务升级。
305 17

热门文章

最新文章

推荐镜像

更多