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
相关文章
|
12月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
存储 运维 安全
运维知识沉淀工具深度解析:从结构设计到落地实践全拆解
运维知识沉淀工具助力团队将零散经验结构化存储,实现问题处理路径标准化、知识复用化。通过标签、模板与自动化调取机制,让每次处理都留下可复用资产,提升团队协同效率与系统稳定性。
|
12月前
|
机器学习/深度学习 人工智能 运维
三重Reward驱动的运维智能体进化:多智能体、上下文工程与强化学习的融合实践
这篇文章系统性地阐述了 AI 原生时代下,面向技术风险领域的智能体系统(DeRisk)的架构设计、核心理念、关键技术演进路径与实践落地案例。
三重Reward驱动的运维智能体进化:多智能体、上下文工程与强化学习的融合实践
|
运维 监控 负载均衡
高效运维实践:常见问题的应对策略与实践经验
本文探讨了运维工作中的五大核心挑战及应对策略,涵盖负载均衡优化、数据库性能提升、系统监控预警、容器化与微服务运维等方面,旨在帮助企业提升系统稳定性与运维效率。
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
应用服务中间件 调度 nginx
Kubernetes-项目中pod调度使用法则
前言kubernetes中部署的pod默认根据资源使用情况自动调度到某个节点。可在实际项目的使用场景中都会有更细粒度的调度需求,比如:某些pod调度到指定主机、某几个相关的服务的pod最好调度到一个节点上、Master节点不允许某些pod调度等。
2342 0
|
Kubernetes 应用服务中间件 调度
Kubernetes之Pod调度
Kubernetes调度器根据特定的算法与策略将pod调度到工作节点上。在默认情况下,Kubernetes调度器可以满足绝大多数需求,例如调度pod到资源充足的节点上运行,或调度pod分散到不同节点使集群节点资源均衡等。
1721 0
|
Kubernetes 应用服务中间件 调度
Kubernetes之Pod调度
本文讲的是Kubernetes之Pod调度【编者的话】Kubernetes调度器根据特定的算法与策略将pod调度到工作节点上。在默认情况下,Kubernetes调度器可以满足绝大多数需求,例如调度pod到资源充足的节点上运行,或调度pod分散到不同节点使集群节点资源均衡等。
3056 0
|
11月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
809 1
|
11月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
567 89

热门文章

最新文章