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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
资源编排,不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 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搭建和管理企业级网站应用
相关文章
|
13天前
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
48 6
|
1天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
8天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
13天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
13天前
|
存储 Kubernetes Perl
K8S中Pod启动异常
【10月更文挑战第3天】
28 2
|
13天前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。
|
19天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
46 4
|
10天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
32 4
|
6天前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
17 1
|
8天前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
24 1