SREWorks云原生数智运维工程实践-Kubernetes资源编排之一:Pod YAML篇(中)

简介: SREWorks云原生数智运维工程实践-

三、 Object元数据

 

在Rest API中明确了Resource的kind、apiVersion,也确定了Object的namespace、name,作为凡是k8s资源对象都会引用的公共结构,自然也存在很多公共机制供使用。

 

 

metadata:

  annotations:

    alibabacloud.com/owner: testdemo

    k8s.aliyun.com/pod-eni: "true"

  creationTimestamp: "2022-06-02T07:21:36Z"

  deleteTimestamp: "2022-06-02T07:22:51Z"

  labels:

    app: taihao-app-cn-shanghai-pre-cloud-resource

    pod-template-hash: 5bbb759f78

  name: testdemo-5bbb759f78-27v88

  namespace: default

  ownerReferences:

  - apiVersion: apps/v1

    blockOwnerDeletion: true

    controller: true

    kind: ReplicaSet

    name: testdemo-5bbb759f78

    uid: 9c3f268a-c0d1-4038-bb2b-b92928f45e3d

  resourceVersion: "60166035"

  uid: e4236960-8be2-41bf-ac44-e7460378afb

 

 

观察上述YAML,将其整理

 

namespace:常规来说,Namespace资源才会使用该资源对象

name:代表资源实例名称

uid:是资源的唯一标识,可以区别已删除与重新创建的同名资源实例

resourceVersion:是k8s的内部版本,具备时间属性,基于此就能明确该资源对是什么时候发生改变的,也是保证k8s list-watch核心机制

creationTimestamp资源实例创建时间

deleteTimestamp资源实例删除时间,后续会在pod的生命周期内讲到对该字段应用

ownerReferences资源从属对象,从上面yaml可知,该Pod资源从属于名为testdemo-5bb759f78,ownerReferences内部是没有namespace参数,也就是ownerReferences不允许跨namespace,将资源由下到上能够建立起来

labels标签,k8s内的服务发现以及相应的软关联,都是围绕label运作的,比如testdemo-5bb759f78 replicaset的labelselector(标签筛选器)能够筛选到当前Pod的label,保证两者关联由上到下的建立

annotations注释,通常来说会是作为额外字段供应给周边系统使用,比如当前k8s.aliyun.com/pod-eni="true"是提供网络系统使用

 

label&labelSelector

 

image.png

 

Deployment会根据自己的labelseletor:app=taihao-app-cluster以及计算出podtemplate的hash lable:pod-template-hash:5b8b879786筛选出出符合的replicaset,replicaset再根据自己的labelselector去筛选出符合的pods,相应的服务发现service,也是通过labelselector去筛选出符合的Pod

 

Owner&GC垃圾回收

 

基于Pod的metadata.ownerReferences找寻到对应的replicaset,replicaset基于自身的metadata.ownerReferences找寻到deploy;当deployment被删除后,基于原有owner构建的树状,回收原有的rs与pod。

 

image.png

 

Deploy&Replicaset

 

基于label&labelselector,明确了从上到下的筛选归纳;基于owner&GC,明确了关联资源的回收流程。

 

 

apiVersion: apps/v1

kind: ReplicaSet

metadata:

  generation: 1

  labels:

    app: testdemo

    pod-template-hash: bcd889947

  name: testdemo-bcd889947

  namespace: taihao

  ownerReferences:

  - apiVersion: apps/v1

    blockOwnerDeletion: true

    controller: true

    kind: Deployment

    name: testdemo

    uid: 1dddc849-c254-4cf5-aec8-9e1c2b5e65af

spec:

  replicas: 1

  selector:

    matchLabels:

      app: testdemo

      pod-template-hash: bcd889947

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: testdemo

        pod-template-hash: bcd889947

    spec:

      containers:

      - args:

        - -c

        - sleep 1000000

        command:

        - sh

        image: centos:7

        imagePullPolicy: IfNotPresent

name: testdemo

status:

  fullyLabeledReplicas: 1

  observedGeneration: 1

  replicas: 1

 

 

replicaset.spec.replicas实例数,rs控制下的Pod个数

replicaset.spec.selector基于label筛选出对应的Pod

replicaset.spec.templatereplicaset创建的Pod会基于podtemplate

replicaset.statusreplicaset当前管理Pod的状态

 

 

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: testdemo

  name: testdemo

spec:

  replicas: 1

  revisionHistoryLimit: 10

  selector:

    matchLabels:

      app: testdemo

  strategy:

    rollingUpdate:

      maxSurge: 25%

      maxUnavailable: 25%

    type: RollingUpdate

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: testdemo

    spec:

      containers:

      - args:

        - -c

        - sleep 1000000

        command:

        - sh

        image: centos:7

        imagePullPolicy: IfNotPresent

        name: testdemo

status:

  availableReplicas: 1

  observedGeneration: 2

  readyReplicas: 1

  replicas: 2

  unavailableReplicas: 1

  updatedReplicas: 1

 

 

deploy.spec.replicasdeploy期望的pod实例格式

deploy.spec.revisionHistoryLimitdeploy管理replicaset的保留三个月

deploy.spec.selectordeploy筛选符合标签

deploy.spec.strategydeploy的升级策略

deploy.templatedeploy基于此模版要创建的pod格式

 

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
6月前
|
存储 运维 安全
运维知识沉淀工具深度解析:从结构设计到落地实践全拆解
运维知识沉淀工具助力团队将零散经验结构化存储,实现问题处理路径标准化、知识复用化。通过标签、模板与自动化调取机制,让每次处理都留下可复用资产,提升团队协同效率与系统稳定性。
|
5月前
|
机器学习/深度学习 人工智能 运维
三重Reward驱动的运维智能体进化:多智能体、上下文工程与强化学习的融合实践
这篇文章系统性地阐述了 AI 原生时代下,面向技术风险领域的智能体系统(DeRisk)的架构设计、核心理念、关键技术演进路径与实践落地案例。
三重Reward驱动的运维智能体进化:多智能体、上下文工程与强化学习的融合实践
|
7月前
|
运维 监控 负载均衡
高效运维实践:常见问题的应对策略与实践经验
本文探讨了运维工作中的五大核心挑战及应对策略,涵盖负载均衡优化、数据库性能提升、系统监控预警、容器化与微服务运维等方面,旨在帮助企业提升系统稳定性与运维效率。
|
7月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
454 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
6月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
本文内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
602 15
|
6月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
|
10月前
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
4月前
|
人工智能 Kubernetes Cloud Native
Higress(云原生AI网关) 架构学习指南
Higress 架构学习指南 🚀写在前面: 嘿,欢迎你来到 Higress 的学习之旅!
1303 0

热门文章

最新文章

推荐镜像

更多