【赵渝强老师】Kubernetes的体系架构

简介: 本文介绍了Kubernetes的体系架构及其核心组件。Kubernetes采用主从分布式架构,由master主节点和多个node工作节点组成。master节点负责集群管理和调度,运行API Server、scheduler、controller-manager等服务组件;node节点运行kubelet、kube-proxy和Docker容器守护进程,负责实际业务应用的运行。文章还简要介绍了Kubernetes的附加组件及其作用。

b004.png

在学习Kubernetes之前,有必要了解一下它的体系架构及其组件。这对于后续部署Kubernetes集群及使用它都非常的重要。下图展示了Kubernetes的体系架构。


Kubernetes属于主从分布式架构的体系架构,主要包括master的主节点和node的工作节点。实际的生产环境中,node的工作节点至少两个。


视频讲解如下:


下面对master和node做一个简单的介绍。


  • master


master作为集群的主节点,它控制着整个集群并对集群进行管理和调度。master节点上运行着API Server、scheduler、controll-manager各个具体的服务组件,并master还管理着集群的持久化存储etcd。


  • node


node节点是Kubernetes集群真正的工作节点,它是实际运行业务应用容器的节点。node节点上运行着kubelet、kube-proxy和Docker容器的守护进程。node节点通过kubelet与master节点上的API Server进行交互,从而实现在集群中进行各种资源的增删改查等操作。



除了master的主节点和node的工作节点外,Kubernetes体系架构中还包括客户端命令行工具kubectl和其它一些附加组件。下面讨论一下Kubernetes集群中的组件。


一、Kubernetes的核心组件


在了解了Kubernetes的体系架构后,下面对其中涉及到的核心组件及其它们的作用进行了详细说明。


  • API Server


API Server提供了操作Kubernetes集群的唯一入口,通过它可以访问到集群中的所有资源。API Server提供了用户的认证及授权功能;支持访问控制的管理和服务的注册发现等机制。API Server同时也与etcd的存储进行交互,从而将集群的信息进行持久化保存。


  • scheduler


负责管理和调度集群的资源。Kubernetes允许用户预先定义资源的调度策略,通过scheduler的调度器将Pod调度到相应的node节点上。


  • controll-manager

负责维护集群的状态,例如:故障检测、自动扩展、滚动更新等。


  • kubelet


负责管理node节点上运行的pod,包括:pod的创建、修改、删除、重启以及健康状态的监控等操作。kubelet同时还负责与master节点上的API Server进行交互通信,定时将本node节点的状态发送给API Server;并接收API Server 下发的指令信息。


  • kube-proxy

kube-proxy会根据etcd中存储的应用配置信息在node节点上启动一个监听进程,从而实现将外部请求路由转发到后端正确的容器中。同时kube-proxy还解决了同一服务端口冲突的问题,并为部署在Kubernetes集群中的应用提供访问外部网络的能力。kube-porxy支持随机和轮询这两种负载均衡的路由算法。


  • Docker容器的守护进程

负责Docker的镜像管理以及pod和容器的真正运行,是Kubernetes真正的执行引擎。


Docker是Kubernetes的执行引擎,但Kubernetes也可以使用其他的容器技术作为执行引擎。


二、Kubernetes的附加组件


下表列举了在Kubernetes中一些常用的附加组件以及它们的作用,这些附加组件不是必须的。只是利用这些组件可以增强Kubernetes的功能。




相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
17天前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】K8s中Pod探针的TCPSocketAction
在K8s集群中,kubelet通过探针(如livenessProbe、readinessProbe和startupProbe)检查容器健康状态。探针支持HTTPGetAction、ExecAction和TCPSocketAction三种检查方法。本文重点介绍TCPSocketAction,它通过尝试建立TCP连接来检测容器的健康状况。示例中创建了一个Nginx Pod,并配置了两个探针(readinessProbe和livenessProbe),它们每隔5秒检查一次容器的8080端口,首次检查在启动后10秒进行。若连接失败,容器将重启。视频讲解和命令演示进一步详细说明了这一过程。
151 83
|
3月前
|
Kubernetes 监控 调度
【赵渝强老师】K8s的DaemonSet控制器
DaemonSet控制器确保每个节点上运行一个Pod副本,适用于监控、日志收集等场景。通过示例创建DaemonSet并查看Pod信息,展示了其自动扩展和回收的能力。视频讲解和代码示例详细说明了DaemonSet的使用方法和调度机制。
|
3月前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Job控制器单工作队列的串行方式
Kubernetes中的Job控制器用于管理一次性任务,确保任务完成后不再重启。本文介绍了Job的工作原理、运行方式及示例,包括创建Job、查看Job和Pod信息等步骤,并附有视频讲解。
|
3月前
|
Kubernetes 双11 容器
【赵渝强老师】Kubernetes中的控制器
Kubernetes通过控制器管理Pod的生命周期,以应对不同场景需求,如Deployment、DaemonSet、Job等。控制器可自动调整Pod数量和重启故障Pod,确保系统稳定运行。视频讲解和详细内容见下文。
|
3月前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
29天前
|
Kubernetes 容器 Perl
【赵渝强老师】Kubernetes中Pod的探针
在K8s集群中,kubelet通过三种探针(存活、就绪、启动)检查Pod容器的健康状态。存活探针确保容器运行,失败则重启;就绪探针确保容器准备好服务,失败则从Service中剔除;启动探针确保应用已启动,失败则重启容器。视频讲解和图片详细介绍了这三种探针及其检查方法(HTTPGet、Exec、TCPSocket)。
【赵渝强老师】Kubernetes中Pod的探针
|
20天前
|
Kubernetes 网络协议 Shell
【赵渝强老师】K8s中Pod探针的ExecAction
在K8s集群中,kubelet通过三种探针(存活、就绪、启动)检查容器健康状态,支持HTTPGet、Exec和TCP检查方式。本文重点介绍ExecAction探针,通过在容器内执行Shell命令返回码判断健康状态,并附带视频讲解和实例演示,展示如何配置和使用ExecAction探针进行健康检查。
56 10
|
25天前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】K8s中Pod探针的HTTPGetAction
在K8s集群中,kubelet通过探针(如livenessProbe、readinessProbe和startupProbe)检查容器健康状态。HTTPGetAction通过HTTP请求检查容器健康,返回状态码在200-400区间视为成功。示例中创建了基于Nginx镜像的Pod,并配置存活探针,每5秒检测一次。通过命令操作验证探针功能,展示了Pod的健康检查机制。 视频讲解:[Bilibili](https://www.bilibili.com/video/BV1DTtueTEMM)
47 15
|
3月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
76 1
|
3月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?