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格式

 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
Cloud Native 安全 Java
铭师堂的云原生升级实践
铭师堂完整经历了云计算应用的四个关键阶段:从”启动上云”到”全量上云”,再到”全栈用云”,最终达到”精益用云”。通过 MSE 云原生网关的落地,为我们的组织带来了诸多收益,SLA 提升至100%,财务成本降低67%,算力成本降低75%,每次请求 RT 减少5ms。
铭师堂的云原生升级实践
|
14天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
8天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
8天前
|
Cloud Native 安全 Java
杭州铭师堂的云原生升级实践
在短短 2-3 年间,杭州铭师堂完整经历了云计算应用的四个关键阶段:从“启动上云”到“全量上云”,再到“全栈用云”,最终达到“精益用云”。也从云计算的第一次浪潮,迈过了第二次浪潮,顺利的进入到了 第三次浪潮 AI + 云。
|
14天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
19天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
35 0
|
2天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
16 2
|
14天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
1月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
72 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景