kubernetes学习-概念3

news2024/11/24 12:49:00

工作负载资源

Kubernetes 提供了几个内置的 API 来声明式管理工作负载及其组件。

最终,你的应用以容器的形式在 Pods 中运行; 但是,直接管理单个 Pod 的工作量将会非常繁琐。例如,如果一个 Pod 失败了,你可能希望运行一个新的 Pod 来替换它。Kubernetes 可以为你完成这些操作。

你可以使用 Kubernetes API 创建工作负载对象, 这些对象所表达的是比 Pod 更高级别的抽象概念,Kubernetes 控制平面根据你定义的工作负载对象规约自动管理 Pod 对象。

用于管理工作负载的内置 API 包括:

Deployment (也间接包括 ReplicaSet) 是在集群上运行应用的最常见方式。Deployment 适合在集群上管理无状态应用工作负载, 其中 Deployment 中的任何 Pod 都是可互换的,可以在需要时进行替换。

StatefulSet 允许你管理一个或多个运行相同应用代码、但具有不同身份标识的 Pod。 StatefulSet 与 Deployment 不同。Deployment 中的 Pod 预期是可互换的。 StatefulSet 最常见的用途是能够建立其 Pod 与其持久化存储之间的关联。 例如,你可以运行一个将每个 Pod 关联到 PersistentVolume 的 StatefulSet。如果该 StatefulSet 中的一个 Pod 失败了,Kubernetes 将创建一个新的 Pod, 并连接到相同的 PersistentVolume。

DaemonSet 定义了在特定节点上提供本地设施的 Pod, 例如允许该节点上的容器访问存储系统的驱动。当必须在合适的节点上运行某种驱动或其他节点级别的服务时, 你可以使用 DaemonSet。DaemonSet 中的每个 Pod 执行类似于经典 Unix / POSIX 服务器上的系统守护进程的角色。DaemonSet 可能对集群的操作至关重要, 例如作为插件让该节点访问集群网络, 也可能帮助你管理节点,或者提供增强正在运行的容器平台所需的、不太重要的设施。 你可以在集群的每个节点上运行 DaemonSets(及其 Pod),或者仅在某个子集上运行 (例如,只在安装了 GPU 的节点上安装 GPU 加速驱动)。

你可以使用 Job 和/或 CronJob 定义一次性任务和定时任务。 Job 表示一次性任务,而每个 CronJob 可以根据排期表重复执行。

Deployments

一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
 

在该例中:

  • 创建名为 nginx-deployment(由 .metadata.name 字段标明)的 Deployment。 该名称将成为后续创建 ReplicaSet 和 Pod 的命名基础。

  • 该 Deployment 创建一个 ReplicaSet,它创建三个(由 .spec.replicas 字段标明)Pod 副本。

  • .spec.selector 字段定义所创建的 ReplicaSet 如何查找要管理的 Pod。 在这里,你选择在 Pod 模板中定义的标签(app: nginx

  • template 字段包含以下子字段:
    • Pod 被使用 .metadata.labels 字段打上 app: nginx 标签。
    • Pod 模板规约(即 .template.spec 字段)指示 Pod 运行一个 nginx 容器, 该容器运行版本为 1.14.2 的 nginx Docker Hub 镜像。
    • 创建一个容器并使用 .spec.template.spec.containers[0].name 字段将其命名为 nginx

kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml

kubectl get deployments

在检查集群中的 Deployment 时,所显示的字段有:

  • NAME 列出了名字空间中 Deployment 的名称。
  • READY 显示应用程序的可用的“副本”数。显示的模式是“就绪个数/期望个数”。
  • UP-TO-DATE 显示为了达到期望状态已经更新的副本数。
  • AVAILABLE 显示应用可供用户使用的副本数。
  • AGE 显示应用程序运行的时间。

请注意期望副本数是根据 .spec.replicas 字段设置 3。

要查看 Deployment 上线状态

kubectl rollout status deployment/data-intellegence

kubectl rollout status 是 Kubernetes(K8s) 中的一个命令,用于查看资源的状态。这个命令通常用于查看特定部署(deployment)的状态。

要查看 Deployment 创建的 ReplicaSet(rs),运行 kubectl get rs

ReplicaSet 的名称格式始终为 [Deployment 名称]-[哈希]。 该名称将成为所创建的 Pod 的命名基础。 其中的哈希字符串与 ReplicaSet 上的 pod-template-hash 标签一致。

ReplicaSet是Kubernetes中的一种控制器,用于确保由其管控的Pod对象副本数在任一时刻都能精确满足期望的数量

ReplicaSet的工作原理是通过一组字段来定义的,包括一个用来识别可获得的Pod的集合的选择算符、一个用来标明应该维护的副本个数的数值、一个用来指定应该创建新Pod以满足副本个数条件时要使用的Pod模板等。当需要创建新的Pod时,ReplicaSet会使用所提供的Pod模板。ReplicaSet通过其选择算符来辨识要获得的Pod集合,当前活动对象的数量与期望的数量不吻合时,多则删除,少则通过Pod模板创建以补足,等Pod资源副本数量符合期望值后即进入下一轮和解循环。

要查看每个 Pod 自动生成的标签,运行 kubectl get pods --show-labels

kubectl get pods --show-labels

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中科创达:坚定看好未来十五年的大模型机遇

中科创达是一家成立于2008年的智能操作系统产品和技术提供商,15年前公司成立的时候正赶上了安卓操作系统将功能手机推向了智能手机,截至目前,已赋能超过近9亿台手机走向市场。2014年中科创达开始拓展智能汽车方向,2015年拓展物联网…

源码安装prometheus(普罗米修斯监控)

IP角色系统规格192.168.0.38Prometheus 服务端CentOS 74c8g192.168.0.25node_exporter 客户端CentOS 74c8g 普罗米修斯下载网址: Download | Prometheus 1.下载prometheus [rootprometheus opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.47.2…

Echarts -- 实现动态加载series

一、需求说明 1.1具体说明 根据每天的订单,查询出券码(title字段)的核销情况,如下单成功,已核销,取消订单,订单失败, title字段又分大概七八种,最后数据进行整合完毕之后,前端使用Echarts进行堆叠柱状图显示每天数据。 1.2 需求拆解 根据时间范围查询出每天的订单数据后,根据…

torch - FloatTensor标签(boolean)数值转换(1/0)

当我们数据集的标签为True/False的boolean型时,我们可以直接使用FloatTensor传入该标签。返回的数据为tensor([0.])或者tensor([1.]),这十分有利于二分类任务的预测标签对错判断。 这个用法是基于Python的布尔类型与整数之间的隐式类型转换。在Python中&…

【大话Presto 】- 核心概念

文章目录 前言Operator Model And Iterator Model系统组成Connector数据模型查询执行模型StatementStageTaskSplitDriverOperatorExchangePipeLine 总结 前言 Presto(PrestoDB)是一个FaceBook开源的分布式MPP SQL引擎,旨在处理大规模数据的查…

EMP.DLL是什么东西?怎么解决EMP.DLL文件缺失

在我们使用电脑的过程中,有时会遇到一些特定的错误提示,比如“emp.dll文件缺失”。这样的提示对许多用户来说可能一脸懵逼,不知道怎么处理,那么,究竟什么是emp.dll?它的缺失会产生什么影响?又应…

Linux 基础操作手记四

文章目录 环境变量生效配置python版本安装SSH关闭GUIvi 清空 环境变量生效 source ~/.bashrc # 或 source ~/.zshrc 配置python版本 sudo add-apt-repository ppa:deadsnakes/ppa sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 sudo upd…

Logrotate日志切割工具的应用与配置

Logrotate日志切割工具的应用与配置,以下是公司生产环境亲测,跳了不少的坑,最后已经部署到生产了,可放心使用 简介 Logrotate是一个在Unix和类Unix系统(如Linux)上用于管理日志文件的实用程序。它可以帮助…

html书本翻页效果,浪漫表白日记本(附源码)

文章目录 1.设计来源1.1 书本正面1.2 界面1-21.3 界面3-41.4 界面5-61.5 界面7-81.6 界面9-101.7 界面11-121.8 书本结尾 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/1…

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol 0. 版本0.1 AccessControlEnumerable.sol 1. 目标合约2. 代码精读2.1 supportsInterface(bytes4 interfaceId)2.2 _grantRole(bytes32 role, address account)2.3 _revokeRole(bytes32 role, addre…

系列一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新?

一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新? JVM是Java虚拟机的意思。它是建立在操作系统之上的,由类加载器子系统、本地方法栈、Java栈、程序计数器、方法区、堆、本地方法库、本地方法接口、执行引擎组成。 (1&#xff0…

UniPro提高集成能力 让客户专注于交付价值

一千个哈姆莱特就有一千个读者,一千个开发团队,也会有各不相同的软件工具和工作流程。工具与工具之间,功能上的割裂亦或重叠,都会给企业和团队的协作带来阻塞,结果就会导致团队之间各自为战、信息孤岛的形成以及资源的…

TikTok与未来城市:数字社交如何影响城市发展

在数字化时代的浪潮中,社交媒体的兴起不仅仅改变了我们的个人生活,还深刻地影响了城市的发展和演变。其中,TikTok作为一款备受欢迎的短视频平台,正悄然改变着城市文化、社交互动和城市规划。本文将深入探讨TikTok对未来城市的影响…

Web server failed to start. Port 8080 was already in use.

Windows 服务端口被占用,杀死进程命令: netstat -ano | findstr 8080taskkill -PID [xxx] -F

电子科技大学 分布式系统 期末复习笔记

第一章 为什么需要分布式系统:功能分离,固有的分布性,负载均衡,可靠性,经济性。 定义:分布式系统是这样一种系统,其中位于联网计算机上的组件仅通过传递消息来通信和协调它们的操作。 特点&am…

Smart Tomcat的使用

文章目录 Smart Tomcat的作用Smart Tomcat的安装Smart Tomcat的配置Smart Tomcat的启动 Smart Tomcat的作用 我们知道使用Servlet来完成一个项目一共需要七个步骤,即创建maven项目、添加依赖、创建目录结构、编写代码、打包程序、部署程序、验证程序。这样的确是完…

Mysql之多表查询下篇

Mysql之多表查询下篇 满外连接的实现UNION关键字UNIONUNION ALL操作符 7种SQL JOINS的实现语法格式小结自然连接USING连接表连接的约束条件 满外连接的实现 在上篇博客中,我们可以了解到在Mysql中是不支持FULL JOIN来实现 满外连接的,那么我们在Mysql采用…

Leetcode—2760.最长奇偶子数组【简单】

2023每日刷题&#xff08;三十一&#xff09; Leetcode—2760.最长奇偶子数组 实现代码 #define MAX(a, b) ((a > b) ? (a): (b)) int longestAlternatingSubarray(int* nums, int numsSize, int threshold){int ans 0;int i 0;while(i < numsSize) {if(nums[i] >…

Wi-Fi 网络管理的最佳实践

无论是机场、银行、医院、IT 组织还是 MSP&#xff0c;如今 Wi-Fi 网络都在随处部署和使用。由于其成本效益、灵活性和简化的可扩展性&#xff0c;无线网络现已作为其 IT 基础设施的一部分被整合到许多网络中。但是&#xff0c;设置和管理 Wi-Fi 网络的任务并不像最终用户访问它…

【EI会议征稿】第五届人工智能与机电自动化国际学术会议(AIEA 2024)

第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09; 2024 5th International Conference on Artificial Intelligence and Electromechanical Automation 第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09;将于2024年3月8-10…