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

本文涉及的产品
资源编排,不限时长
简介: SREWorks云原生数智运维工程实践-

 

作者:周虚(应金挺

 

SREWorks的开源吸引了大量用户来尝试部署和使用我们的产品,其中不乏一些初次接触Kubernetes的朋友。随着SREWorks云原生运维平台使用的持续深入,部分用户对于其中的原理和概念还存在一些困惑。因此,我们特推出《Kubernetes资源编排系列》,从底层的Pod YAML开始,逐步递进地讲解相关内容,希望能够解答大家对于Kubernetes的一些疑问,让用户对于云原生相关技术有更深入的了解。

 

一、 Pod整体结构

 

Pod YAML的整体结构,可以初步分为Resource资源、Object元数据、Spec规范、Status状态。本文将会围绕这四部分一一展开。

 

Resource:定义资源类型与版本,作为从Rest API中获取资源必带的属性。

Object:资源的元数据属性,明确资源的基本标识。

Spec/Status:

 

Spec:定义资源的期望状态,包括用户提供的配置、系统扩展的默认值,以及周边系统初始化或者更改值(scheduler、hpa等)。

Status:定义资源的当前状态,从而基于Spec定义的申明式配置,使pod不断朝期望状态靠近。

 image.png

 

 

 

 

二、 Resource资源-Rest API

 

image.png

 

k8s资源按照Scope可以分为Namespace资源、Cluster资源,Namespace在k8s可以认为是软租户的效果,实现资源层面的隔离,Pod资源就是属于Namespace资源,而Namespace不光体现在YAML参数中,也表现在k8s Rest API中。

 

Rest API的整体结构,以Pod举例

 

 

apiVersion: v1

kind: Pod

metadata:

  name: test-pod

  namespace: default

 

 

基于上述YAML,可以明确出namespace为default,name为test-pod的Pod资源对象,也就是明确出Pod为Namespace资源,该Pod资源对象对应的apiVersion为v1,后续k8s自内联相关的Group为/API,自然而然,我们就将该对象的数据分离出来了:

 

group:API

apiVersion:v1

kind:Pod

name:test-pod

namespace:default

 

基于上述的数据展示,apiserver自然而然会相应的注册出下列Rest API

 

/api/{apiVersion}/{kind}:该kind下的所有资源列表

/api/{apiVersion}/namespace/{namespace}/{kind}/:该kind下当前namespace的所有资源列表

/api/{apiVersion}/namespace/{namespace}/{kind}/{name}:该kind下当前namespace且名为name的资源

/api/{apiVersion}/namespace/{namespace}/{kind}/{name}/{subresource}:该kind下当前namespace且名为name的资源下子资源操作

 

后续基于扩展,我们就需要明确出method,这样一个真正完整的Rest API就诞生了。

 


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Kubernetes 安全 Cloud Native
云原生|kubernetes|pod或容器的安全上下文配置解析
云原生|kubernetes|pod或容器的安全上下文配置解析
538 0
|
6月前
|
Kubernetes Cloud Native Docker
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
833 0
|
2月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
76 3
|
6月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
3月前
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
73 5
|
3月前
|
存储 Kubernetes 数据格式
精通Kubernetes:利用YAML轻松管理资源
精通Kubernetes:利用YAML轻松管理资源
|
3月前
|
Kubernetes API 容器
Kubernetes(K8S) yaml 介绍
Kubernetes(K8S) yaml 介绍
36 0
|
6月前
|
JSON Kubernetes Go
IDEA使用Kubernetes插件编写YAML
IDEA使用Kubernetes插件编写YAML
211 0
IDEA使用Kubernetes插件编写YAML
|
6月前
|
Kubernetes 关系型数据库 MySQL
云原生|kubernetes|静态pod和静态pod的应用
云原生|kubernetes|静态pod和静态pod的应用
70 0
下一篇
无影云桌面