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
相关文章
|
11月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
11月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
9月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
577 7
|
11月前
|
弹性计算 运维 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生Serverless实践
简介: 通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
240 1
|
10月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
494 8
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
672 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
11月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
本文内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
891 15
|
11月前
|
运维 监控 Cloud Native
从本土到全球,云原生架构护航灵犀互娱游戏出海
内容整理自「 2025 中企出海大会·游戏与互娱出海分论坛」,灵犀互娱基础架构负责人朱晓靖的演讲内容,从技术层面分享云原生架构护航灵犀互娱游戏出海经验。
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
683 59