对于kubernetes 资源可以使用加载 yaml 标记语言的方式,进行自定义:

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言[1],另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者[2]。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)[3],但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

使用YAML用于k8s的定义将给你一些好处,包括:

  • 便捷性:你将不再需要添加大量的参数到命令行中执行命令
  • 可维护性:YAML文件可以通过源头控制,可以跟踪每次的操作
  • 灵活性:通过YAML你将可以创建比命令行更加复杂的结构

YAML是一个JSON的超集,意味着任何有效JSON文件也都是一个有效的YAML文件。所以一方面,如果你知道JSON,你只是要去写自己的YAML(而不是阅读别人的)也就可以了。另一方面,不太可能,不幸的是,尽管你尝试去网上找到例子,但是他们通常都不是JSON,所以我们可能需要去习惯它。不过,有JSON的情况下可能会更方便,这样你将会很开心你懂得JSON。

幸运的是,YAML只有两种结构类型你需要知道:

  • Lists
  • YAML lists 是一个序列的对象
  • Maps
  • Maps让你将键值组合,你就可以更加方便的去设置配置信息

  

查看pod 资源清单

[root@kube ~]# kubectl get pod nginx-app-7756966bc9-qrksb -o yaml    //这是一个通过 kubectl run 方式运行的 pod ,那么我们可以手动定义一个 和这个类似的 yaml 配置文件进行加载然后生成pod
apiVersion: v1
kind: Pod
metadata:creationTimestamp: "2019-07-16T06:39:02Z"generateName: nginx-app-7756966bc9-labels:pod-template-hash: 7756966bc9run: nginx-appname: nginx-app-7756966bc9-qrksbnamespace: defaultownerReferences:- apiVersion: apps/v1blockOwnerDeletion: truecontroller: truekind: ReplicaSetname: nginx-app-7756966bc9uid: 51997507-0ad5-4f71-86db-3ad6eff70171resourceVersion: "603662"selfLink: /api/v1/namespaces/default/pods/nginx-app-7756966bc9-qrksbuid: 7035cfbd-a8f3-45a9-933c-4ce1cef45183
spec:containers:- image: nginx:alpineimagePullPolicy: IfNotPresentname: nginx-appports:- containerPort: 80protocol: TCPresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /var/run/secrets/kubernetes.io/serviceaccountname: default-token-bsthb readOnly: truednsPolicy: ClusterFirstenableServiceLinks: truenodeName: kube.node1priority: 0restartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}serviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30tolerations:- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 300- effect: NoExecutekey: node.kubernetes.io/unreachableoperator: ExiststolerationSeconds: 300volumes:- name: default-token-bsthbsecret:defaultMode: 420secretName: default-token-bsthb
status:conditions:- lastProbeTime: nulllastTransitionTime: "2019-07-16T06:39:02Z"status: "True"type: Initialized- lastProbeTime: nulllastTransitionTime: "2019-07-16T06:39:36Z"status: "True"type: Ready- lastProbeTime: nulllastTransitionTime: "2019-07-16T06:39:36Z"status: "True"type: ContainersReady- lastProbeTime: nulllastTransitionTime: "2019-07-16T06:39:02Z"status: "True"type: PodScheduledcontainerStatuses:- containerID: docker://6f50a8038d1f9b484c3af46fa21ef0bdce963b95c4f7f5980302bc70ca46eea6image: nginx:alpineimageID: docker-pullable://nginx@sha256:17bd1698318e9c0f9ba2c5ed49f53d690684dab7fe3e8019b855c352528d57belastState: {}name: nginx-appready: truerestartCount: 0state:running:startedAt: "2019-07-16T06:39:36Z"hostIP: 10.2.61.22phase: RunningpodIP: 10.244.2.7qosClass: BestEffortstartTime: "2019-07-16T06:39:02Z"
[root@kube ~]#

  

针对yaml 格式我们对如下进行分析:

#maps 是key|value 的组合,list 是key[args,args ,多个项的组合]用破折号(-)开头apiVersion: v1  //maps
kind: Pod     //maps
metadata:      name: rss-site  //mapslabels:app: web    /maps
spec:            //mapscontainers:    //list name - name: front-end  //list参数子项是mapsimage: nginx    //list 参数子项是mapsports:             - containerPort: 80   //list 参数子项maps- name: rss-readerimage: nickchase/rss-php-nginx:v1ports:- containerPort: 88

  

创建一个简单的yaml 文件

root@kube test]# cat pod-demo.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-testnamespace: defaultlabels:app: myapptier: frontend
spec:containers:- name: mytestimage: nginx:latest[root@kube test]#

[root@kube test]# kubectl create -f pod-demo.yaml
pod/pod-test created
[root@kube test]# kubectl get pods
NAME                         READY   STATUS              RESTARTS   AGE
busy1-78c9f4b47-pm2qx        0/1     CrashLoopBackOff    22         100m
busy2-7f9dbf96d6-2d778       1/1     Running             0          2d23h
busy3-9877c76bf-ts5rl        1/1     Running             0          2d23h
nginx-7bb7cd8db5-6sgvp       1/1     Running             0          3d
nginx-app-54c844949f-6zlmr   0/1     ContainerCreating   0          41h
nginx-app-54c844949f-n82d6   1/1     Running             0          2d
nginx-app-54c844949f-xmkb8   1/1     Running             0          2d
nginx-app-7756966bc9-qrksb   1/1     Running             0          2d2h
pod-test                     0/1     ContainerCreating   0          1s
[root@kube test]#

  

[root@kube test]# kubectl describe pod pod-test
Name:         pod-test
Namespace:    default
Priority:     0
Node:         kube.node1/10.2.61.22
Start Time:   Thu, 18 Jul 2019 16:44:23 +0800
Labels:       app=myapptier=frontend
Annotations:  <none>
Status:       Running
IP:           10.244.2.12
Containers:mytest:Container ID:   docker://4e40fc5b6cae440881cea707b79c2d17692c47d75df69a571fa0e7d57dff5e3aImage:          nginx:latestImage ID:       docker-pullable://nginx@sha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbbPort:           <none>Host Port:      <none>State:          RunningStarted:      Thu, 18 Jul 2019 16:44:46 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-bsthb (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True
Volumes:default-token-bsthb:Type:        Secret (a volume populated by a Secret)SecretName:  default-token-bsthbOptional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s
Events:Type    Reason     Age   From                 Message----    ------     ----  ----                 -------Normal  Scheduled  62s   default-scheduler    Successfully assigned default/pod-test to kube.node1Normal  Pulling    61s   kubelet, kube.node1  Pulling image "nginx:latest"Normal  Pulled     40s   kubelet, kube.node1  Successfully pulled image "nginx:latest"Normal  Created    40s   kubelet, kube.node1  Created container mytestNormal  Started    39s   kubelet, kube.node1  Started container mytest
[root@kube test]#

  

 

[root@kube ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
[root@kube ~]# kubectl explain pods
KIND:     Pod
VERSION:  v1DESCRIPTION:Pod is a collection of containers that can run on a host. This resource iscreated by clients and scheduled onto hosts.FIELDS:apiVersion <string>APIVersion defines the versioned schema of this representation of anobject. Servers should convert recognized schemas to the latest internalvalue, and may reject unrecognized values. More info:https://git.k8s.io/community/contributors/devel/api-conventions.md#resourceskind <string>Kind is a string value representing the REST resource this objectrepresents. Servers may infer this from the endpoint the client submitsrequests to. Cannot be updated. In CamelCase. More info:https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kindsmetadata    <Object>Standard object's metadata. More info:https://git.k8s.io/community/contributors/devel/api-conventions.md#metadataspec    <Object>Specification of the desired behavior of the pod. More info:https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-statusstatus  <Object>Most recently observed status of the pod. This data may not be up to date.Populated by the system. Read-only. More info:https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status[root@kube ~]#

  

 

转载于:https://www.cnblogs.com/zy09/p/11208338.html

Kubernetes 第五章 YAML相关推荐

  1. KCNA考试 第五章:kubernetes学习实践

    文章目录 1. 简介 2. 学习目标 3. Kubernetes对象 4. 与Kubernetes交互 4.1 Demo: kubectl 5. Pod 概念 5.1 Demo: Pods 6. 负载 ...

  2. 《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes

    <深入理解 Spring Cloud 与微服务构建>第五章 Kubernetes 文章目录 <深入理解 Spring Cloud 与微服务构建>第五章 Kubernetes 一 ...

  3. python第五章课后题答案_python程序设计基础(嵩天)第五章课后习题部分答案

    原博文 2019-10-13 13:50 − 第五章p1515.2:实现isodd()函数,参数为整数,如果参数为奇数,返回true,否则返回false.def isodd(s): x=eval(s) ...

  4. 第五章: 用角色合成可重用Ansible内容

    用角色合成可重用Ansible内容 对于很多项目来说,简单单独的ansible剧本就满足了.随着时间的变化以及项目的增长,就需要添加额外剧本.变量文件.任务文件的分隔.组织中的其他项目可能需要复用一些 ...

  5. 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. 王道考研 计算机网络笔记 第五章:传输层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  7. 数字图像处理——第五章 图像复原与重建

    数字图像处理--第五章 图像复原与重建 文章目录 数字图像处理--第五章 图像复原与重建 写在前面 1 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...

  8. c语言逐步搜索法求有根区间,[C语言第五章.ppt

    [C语言第五章 算法举例 基本思想是,根据提出的问题,列举所有可能的情况,并 用问题中给定的条件检验哪些是需要的,哪些是不需要的. 教学进程 列举与试探 列举法常用于解决"是否存在" ...

  9. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

最新文章

  1. Serverless无服务应用架构纵横谈
  2. OKR和KPI有什么区别?
  3. python需要学多久才能找到工作-为什么Python适合初学者,一般要学习多久
  4. Leetcode 剑指 Offer 03. 数组中重复的数字 (每日一题 20210614)
  5. URAL 1047 Simple Calculations
  6. SpringMVC-注解@RequestParam
  7. linux系统下开机启动流程
  8. linux开机自动挂载硬盘指定权限,Linux开机自动挂载硬盘
  9. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码
  10. 1×pbs缓冲液配方_【应用】蒸渗仪与氧化还原电位的测量1
  11. Helm 3 完整教程(六):在模板中使用 Helm 函数
  12. HDU 5934 2016CCPC杭州 B: Bomb(Trajan强连通)
  13. 傅里叶光学MATLAB编程系列【1】基本函数
  14. 最简单DIY基于STM32F407探索者开发板的MPU6050陀螺仪姿态控制舵机程序
  15. 基因分型分析之全外显子组分析
  16. 代码审计系列:审计思路学习笔记
  17. linux sed -i 命令
  18. Steam一直显示断开服务器,为什么吃鸡老于steam服务器断开连接 | 手游网游页游攻略大全...
  19. 【图像修复】基于matlab损坏图像修复【含Matlab源码 731期】
  20. python json dump时,中文乱码问题

热门文章

  1. c语言变量在头文件定义变量吗,在头文件C中声明变量
  2. 线程池每次用都创建吗_跳槽涨薪季面试题之多线程(三)
  3. 关系型数据库和mysql教材_关系型数据库(MySQL)
  4. cs224n上完后会会获得证书吗_斯坦福NLP组-CS224n: NLP与深度学习-2019春全套资料分享...
  5. mysql备份操作_mysql-数据备份操作
  6. 微信小程序刷新webview页面问题
  7. Android模块化面向接口编程,讲的明明白白!
  8. debian php redis,debian7.7环境下 源码安装redis以及phpredis扩展
  9. linux+平均磁盘请求数量_SUSE LINUX下磁盘IO性能监测分析
  10. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!