【云原生_K8S系列】Kubernetes 控制器简介

概述

Kubernetes是一个开源的容器编排平台,旨在自动化部署、扩展和管理容器化应用。Kubernetes 的核心组件之一是控制器(Controller),它负责确保集群中的实际状态与用户定义的期望状态一致。控制器是 Kubernetes 控制平面的一个重要组成部分,通过持续监控集群的状态并执行必要的操作来维护集群的健康和稳定。

控制器的工作原理

控制器基于控制循环(Control Loop)工作,这是一种反馈机制,用于持续对比当前状态和期望状态,并采取措施将两者保持一致。控制器的基本流程如下:

  1. 观察:控制器通过 API 服务器获取集群的当前状态。
  2. 分析:将当前状态与期望状态进行对比。
  3. 行动:如果当前状态与期望状态不符,控制器会执行必要的操作(如创建、更新或删除资源)以达到期望状态。

常见的 Kubernetes 控制器

Deployment 控制器

Deployment 控制器是一种用于管理应用部署的高级工具。它提供滚动更新、回滚和扩展等功能,使用户能够轻松地更新应用版本,并在更新过程中保持服务的高可用性。通过 Deployment,用户只需声明目标状态,Deployment 控制器会自动对 ReplicaSet 进行操作,以确保集群达到期望的状态。

相比于传统的 ReplicationController,Deployment 提供了一种更为便捷的声明式定义方法。这意味着用户只需描述 Deployment 中的目标状态,而不必手动调整 ReplicaSet,Deployment 控制器会自动进行必要的调整,从而实现更高效、更易管理的应用部署。

典型的应用场景
  • 定义 Deployment 来创建 ReplicaSet 和 Pod
  • 滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续 Deployment

Deployment 创建 RS 流程图

Deployment 并不是直接管理或创建 Pod,而是通过创建和管理 ReplicaSet 来实现这一目标。当创建一个名为 nginx-Deploy 的 Deployment 时,系统会同时创建一个 ReplicaSet,其名称形式为 nginx-Deploy-xxx,其中xxx 是一个随机码。这个 ReplicaSet 再进一步创建和管理相应的 Pod

DaemonSet 控制器

DaemonSet 确保在所有(或部分)节点上运行一个 Pod 副本。当有新节点加入集群时,DaemonSet 会在这些节点上新增一个 Pod;当节点从集群中移除时,相应的 Pod 也会被删除。删除 DaemonSet 会移除它所创建的所有 Pod。

如果需要在每个节点上运行多个 Pod,可以通过定义多个 DaemonSet 来实现。

通常情况下,一个 DaemonSet 将覆盖所有的节点。复杂一点儿的用法,可能会为某一类守护进程设置多个 DaemonSets,每一个 DaemonSet 针对不同类硬件类型设定不同的内存、cpu请求。

典型的应用场景
  • 日志收集:比如 fluentdlogstash
  • 系统监控:比如 Prometheus Node ExportercollectdNew Relic agentGanglia gmond
  • 系统程序:比如 kube-proxykube-dns, glusterd, ceph

StatefulSet 控制器

StatefulSet 控制器用于管理有状态应用,例如数据库或需要稳定网络标识的应用。与 ReplicaSet 不同,StatefulSet 确保每个 Pod 都有唯一的标识和持久存储,从而支持应用的有序部署和扩展。

典型的使用场景

对于有如下要求的应用程序,StatefulSet 非常适用:

  • 稳定、唯一的网络标识(dnsname)
  • 每个Pod始终对应各自的存储路径(PersistantVolumeClaimTemplate)
  • 按顺序地增加副本、减少副本,并在减少副本时执行清理
  • 按顺序自动地执行滚动更新

Job 控制器

Job 控制器用于批处理任务,确保一组 Pod 在成功完成其工作后终止。Job 控制器适用于一次性任务或周期性任务,如数据处理和分析。

CronJob 控制器

CronJob 控制器用于定时执行 Job,类似于 Linux 的 cron 调度。它允许用户按照预定的时间表执行任务,适用于定期备份、报告生成等场景。

结论

Kubernetes 控制器在维护集群稳定性和实现自动化运维方面起着至关重要的作用。通过控制循环机制,控制器能够确保集群的实际状态始终符合用户的期望,从而实现高效的资源管理和应用部署。了解和善用各种控制器,可以帮助我们更好地管理和扩展 Kubernetes 集群,提升整体系统的可靠性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681123.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB的数种形态

GaussDB作为一种新兴的关系型数据库产品,似乎有点让人摸不着头脑。有朋友问我GaussDB单机版怎么样,有人说GaussDB是分布式数据库,还有人说它是云数据库,还有人会把GaussDB和华为的数据仓库GaussDB DWS混为一谈。确实,公…

密码学基本概念(补充)

BiBa模型的*特性规则:主体不能修改更高完整级的客体(主题不能向上写) Diffie-Hellman密钥交换协议的安全性基于求解离散对数的困难性,既对于C^d M mod P,在已知C和P的前提下,由d求M很容易,但是…

取代Windows的系统复制粘贴等文件处理

TeraCopy 可以到官网下载也可以通过应用商店下载 主要作用 : 取代Windows的系统复制粘贴等文件处理 常规窗口 点击第一排最左侧的按钮会显示这个窗口, 显示所以文件操作记录 , 这个也是我装这个软件的原因之一, 框选的是当前正在进行的 当执行复制粘贴时会自动出现, 让自行…

从零开始:如何通过美颜SDK构建自己的直播美颜工具

今天,我将详细介绍如何通过美颜SDK从零开始构建自己的直播美颜工具。 一、了解美颜SDK 什么是美颜SDK 开发者可以通过集成SDK,快速在应用中实现这些功能,而无需从头编写复杂的图像处理算法。 选择合适的美颜SDK 选择时可以根据以下几个方…

RAG 高效应用指南 :Query 理解

前言 构建一个检索增强生成 (Retrieval-Augmented Generation, RAG) 应用的 PoC(概念验证,Proof of Concept)过程相对简单,但要将其推广到生产环境中则会面临多方面的挑战。这主要是因为 RAG 系统涉及多个不同的组件,…

使用Nginx正向代理让内网主机通过外网主机访问互联网

目录 环境概述 流程说明 在外网服务器上安装部署nginx 安装前准备 下载nginx 编译安装nginx 开始配置正向代理 创建systemd服务单元文件,用于管理Nginx服务的启动、停止和重新加载 启动nginx 代理服务器本地验证 内网服务器验证 将代理地址添加到环境变量中…

38. 【Java教程】日期和时间处理

本小节我们将学习 Java 中的日期和时间,日期和时间在我们的实际开发中非常常用,例如用户的注册、数据的增删改、对敏感信息的操作等等都需要记录下日期和时间。通过本小节的学习,你将了解到什么是日期、什么是时间、什么是时区,Ja…

查看云是基于openstack是哪一个版本开发的?

进入版本发行网站: OpenStack Releases: OpenStack Releases 进入云的后台,查看例如nova的版本号 rpm -qa | grep nova 查看到nova的版本号是21版本,点开releases中例如Ussuri查看nova的版本号,是21,则该云是基于U…

数据分析技术---对比K-means,密度分析和层次聚类性能

一、数据集选择: Iris数据集。 二、实验代码: #对比k-means、密度聚类和层次聚类性能import matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.cluster import KMeans, DBSCAN, AgglomerativeClusteringfrom sklearn.preprocessing i…

STM32自己从零开始实操04:显示电路原理图

一、TFT-LCD 屏接口 1.1指路 以下是该部分的设计出来后的实物图,我觉得看到实物图可能更方便理解这部分的设计。 图1 实物图 这部分设计的是一个屏幕的接口,很简单。使用的屏幕是:2.8inch 16BIT Module MRB2801。 1.2数据手册 &#xff0…

metasploit上线之后可以使用的命令

1. 通用控制命令 meterpreter > essions -k 1 # 通过ID号杀死一个会话 meterpreter > background # 将会话放入后台 meterpreter > getuid/getpid # 查询用户权限与PID meterpreter > sysinfo # 查看目标…

智慧校园教学模式的崛起:优化学习体验

在当今数字化时代,智慧校园教学模式正在成为教育界的热门话题。随着科技的不断发展,传统的教学方式已经无法满足现代学生的需求。智慧校园教学模式以其灵活性、互动性和个性化的特点,正逐渐改变着教育的面貌。 首先,智慧校园教学模…

R_AARCH64_ADR_PREL_PG_HI21问题说明

目录 问题现象: 问题原因 问题机理 问题现象: 客户现场加载out文件出现如下问题: 打印“Relocation of type ‘R_AARCH64_ADR_PREL_PG_HI22…..’”,明确是ARDP指令引起的问题 问题原因 ARDP的寻址范围是4GB范围,加载的位置…

Tomcat概述及部署

目录 一、Tomcat概述 1.Tomcat的简介 2.Tomcat 核心的三个组件 3.应用场景 4.Tomcat 请求过程 二、部署安装Tomcat 三、Tomcat 虚拟主机配置 四、Tomcat多实例部署 一、Tomcat概述 1.Tomcat的简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开…

经验分享,超声波车位引导系统和视频车位引导系统有哪些区别

随着城市化进程的加速和汽车保有量的持续增长,停车难已成为城市交通管理的一大挑战。车位引导系统作为解决这一问题的有效工具,其重要性日益凸显。它不仅能够提升停车场的运营效率,还能显著改善驾驶者的停车体验。目前市场上主要有两种车位引…

颠沛流离学二叉树(完结撒花篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

mac M1下安装PySide2

在M1下装不了PySide2, 是因为PySide2没有arm架构的包 1 先在M1上装qt5 安装qt主要是为了能用里面的Desinger, uic, rcc brew install qt5 我装完的路径在/opt/homebrew/opt/qt5 其中Designer就是用来设计界面的 rcc用resource compiler, 编绎rc资源文件的, 生成对应的py文件…

使用pexpect检查SSH上的文件是否存在

使用 pexpect 模块可以在 Python 中执行命令并检查其输出。你可以使用 ssh 命令连接到远程服务器,并执行 ls 命令检查文件是否存在。下面我就列举几个我经常遇到的几个错误并做个详细的解决方案。 1、问题背景 用户需要编写一个 Python 脚本,以检查一个…

编制教师违约金一般是多少钱

老师们,你们在签订合同时,对合同中提到的违约金条款感到疑惑?那么,编制教师的违约金一般是多少呢?可能很多老师在签订合同时都没有一个明确的答案。 违约金的设定是为了保障双方的权益,当一方违反合同约定时…

有极性电容器的引脚极性怎么判别?

由于有极性电容器有正、负之分,在电路中又不能乱接,所以在使用有极性电容器前需要先判别出正、负极。有极性电容器的正、负极判别方法如图2—9~图2—11所示。 方法一:对于未使用过的新电容,可以根据引脚长短来判别。引…