Kubernetes 笔记 05 yaml 配置文件详解
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。
Hi,大家好,欢迎大家和我一起学 K8S,这是系列第 5 篇。
生活中,随处可见,几乎每一款产品都会附带一份说明书,说明书可以记录产品的使用方法,也可以记录产品的配方。有了说明书,我们完全可以窥探一款产品的全貌。
在 K8S 中,yaml
配置文件就是 K8S 资源对象的说明书,定义了对象包含的元素及采取的动作,每种对象都可以通过 yaml 配置文件来创建。
yaml 是什么
yaml 是一种用来写配置文件的语言,没错,它是一门语言。如果你用过 json,那么对它就不会陌生,yaml 又被称为是 json 的超集,使用起来比 json 更方便。
结构上它有两种可选的类型:Lists 和 Maps。
List 用 -(破折号) 来定义每一项,Map 则是一个 key:value 的键值对来表示。如下是一个 json 文件到 yaml 文件的转换:
json:
{"apiVersion": "v1","kind": "Pod","metadata": {"name": "xx"}"spec": {"containers": [{"name": "front-end","image": "nginx","ports": [{"containerPort": "80"}]}, {"name": "flaskapp-demo","image": "jcdemo/flaskapp","ports": [{"containerPort": "5000"}]}]}
}
yaml:
---
apiVersion: v1
kind: Pod
metadata:name: xx
spec:containers:- name: front-endimage: nginxports:- containerPort: 80- name: flaskapp-demoimage: jcdemo/flaskappports: 8080
这个文件简单地定义了一个 Pod 对象,包含两个容器,我们可以很清晰地看到两者是如何转换的。
K8S 创建资源的两种方式
在 K8S 中,有两种创建资源的方式:kubectl 命令和 yaml 配置文件。
两种方式各有各的好处。命令行的方式最为简单,一条命令就万事大吉,但缺点也很明显,你并不知道这条命令背后到底做了哪些事,配置文件就提供了一种让你知其然更知其所以然的方式。总的来说,它有以下好处:
- 完整性:配置文件描述了一个资源的完整状态,可以很清楚地知道一个资源的创建背后究竟做了哪些事;
- 灵活性:配置文件可以创建比命令行更复杂的结构;
- 可维护性:配置文件提供了创建资源对象的模板,能够重复使用;
- 可扩展性:适合跨环境、规模化的部署。
- ......
当然,复杂的东西对用户就难以做到友好,我们需要熟悉它的配置文件的语法,有一定难度。下面举几个例子,让你对 yaml 配置文件有一个基本的认识。
几个例子
下面,我们分别来看看 deployment
、pod
、service
这三种资源的说明书都长啥样。
由于 K8S 对每种资源的定义非常庞杂,限于篇幅,我们只看一些必选的参数,目的是通过这几个例子,读懂 yaml 配置文件。
deployment
定义 deployment 配置文件,命名为:nginx-deployment.yaml
apiVersion: apps/v1 # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
kind: Deployment #指定创建资源的角色/类型
metadata: #资源的元数据/属性name: nginx-deployment #资源的名字,在同一个namespace中必须唯一
spec:replicas: 2 #副本数量2selector: #定义标签选择器matchLabels:app: web-servertemplate: #这里Pod的定义metadata:labels: #Pod的labelapp: web-serverspec: # 指定该资源的内容 containers: - name: nginx #容器的名字 image: nginx:1.12.1 #容器的镜像地址 ports: - containerPort: 80 #容器对外的端口
执行kubectl create -f nginx.yaml
创建 deployment 资源:
pod
定义 pod 配置文件,命名为 redis-pod.yaml
apiVersion: v1
kind: Pod
metadata: name: pod-redislabels:name: redis
spec: containers:- name: pod-redisimage: docker.io/redis ports:- containerPort: 80 #容器对外的端口
执行kubectl create -f pod-redis.yaml
创建 pod 资源:
可以看到,成功创建一个 Pod,ContainerCreating
表示 Pod 中的容器正在执行镜像的下载和安装过程,过一会儿,就显示Running
了,表明 Pod 应用部署完成。
service
定义 service 配置文件,命名为 httpd-svc.yaml
apiVersion: v1
kind: Service # 指明资源类型是 service
metadata: name: httpd-svc # service 的名字是 httpd-svclabels: name: httpd-svc
spec: ports: # 将 service 8080 端口映射到 pod 的 80 端口,使用 TCP 协议- port: 8080targetPort: 80 protocol: TCP selector: run: httpd # 指明哪些 label 的 pod 作为 service 的后端
执行kubectl create -f httpd-svc.yaml
创建 service 资源:
可以看到,service httpd-svc 分配到一个 Cluster-IP 10.96.0.1,我们可以通过该 IP 访问 service 所维护的后端 Pod。
另外,还有一个 service kubernetes,这个是 Kubernetes API Server 的 service,Cluster 内部的各组件就是通过这个 service 来访问 API Server。
总结
yaml 是 K8S 资源对象的说明书,每个对象拥有哪些属性都可以在 yaml 中找到详尽的说明,初学者建议多写 yaml 文件,少用命令行。
以上三个例子只是对 yaml 文件做个简单说明,更详细的信息还是参考官网。
OK,本文就到此为止,下文我们开始进入豌豆荚之旅。觉得不错,别忘了转发分享给你的朋友哦。
参考:
https://www.kubernetes.org.cn/1414.html
我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。
转载于:https://www.cnblogs.com/bakari/p/10509484.html
Kubernetes 笔记 05 yaml 配置文件详解相关推荐
- MyBatis复习笔记2:配置文件详解
配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...
- 【删】【Kubernetes视频学习笔记】Kubernetes集群YAML文件详解
文章目录 概述 YAML文件介绍 YAML概述 YAML 基本语法 YAML 支持的数据结构 对象 数组 YAML文件组成部分 控制器的定义 被控制的对象 属性说明 如何快速编写YAML文件 使用ku ...
- 5、kubernetes 集群 YAML 文件详解
文章目录 一.概述 二.YAML文件介绍 2.1 YAML概述 2.2 YAML 基本语法 2.3 YAML 支持的数据结构 2.3.1 对象 2.3.2 数组 2.3.3 纯量(scalars) 三 ...
- Spring Boot的Properties和YAML配置文件详解:
一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...
- 三、kubernetes 集群 YAML 文件详解
1. 简单说明 是一个可读性高,用来表大数据列的格式.Yaml的意思其实是:仍是一种标记语言,但是为了强调这种语言以数据为中心.而不是以标记语言为重点. 2. 基本语法 缩进时不允许使用Tab键,只允 ...
- hibernate框架学习笔记2:配置文件详解
实体类: package domain;public class Customer {private Long cust_id;private String cust_name;private Str ...
- k8s学习笔记(10)--- kubernetes核心组件之controller manager详解
kubernetes核心组件之controller manager详解 一.Controller Manager简介 1.1 Replication Controller 1.2 Node Contr ...
- spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)
spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...
- [原创]Saltstack学习笔记:命令参数详解以及配置文件说明
很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...
最新文章
- mongodb使用常用语法,持续更新
- 浅述numpy中argsort()函数的用法
- H - Hello Ms. Ze(树状数组套主席树,线段树上二分)
- 具体描述GGI和API技术的特点并比较它们优劣势
- 关于win7启动看不到桌面的解决方法
- C程序设计--指针(对 “ 多维数组 ” 进行输出操作)
- pycharm看php文件是乱码,Jetbrains-PhpStorm2019.2中文乱码问题
- Windows下安装Tp6.0框架,图文。Thinkphp6.0安装教程
- hsql转换oracle,Hive系列之HSQL转换成MapReduce过程
- oracle表空间不足影响,oracle表空间不足
- SpringCloud(13)之微服务的现状和未来
- mysql 1032 1062_MySQL 主从复制 ERROR-1032
- python打卡提醒机器人(企业微信)
- 接口测试面试题汇总(含答案)
- EI | 北大温东辉组发现确定性过程驱动工业废水处理系统细菌群落构建
- Network - 计算机网络复习总结
- 数学实验:Matlab代码 用动画展示一拱摆线的构造过程
- 如何快速对接淘宝开放平台API接口(淘宝店铺订单明文接口,淘宝店铺商品上传接口,淘宝店铺订单交易接口)
- python3 爬虫技巧_用 python 爬虫抓站的一些技巧总结
- Python 生成随机经纬度数据
热门文章
- Photoshop剪切路径模式做什么?
- 从电竞练习生到B站UP主,年轻一代的AI生活
- ❤️❌ 如何用vue制作一个探探滑动组件
- 【正点原子MP157连载】第十章 跑马灯实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
- CAD中插入外部参照字体会变繁体_一次性解决CAD单位问题 再也不会有下一篇了...
- Mac下使用AppleScript批量删除短信
- 为什么ffmpeg 切割视频后体积会变小
- ITeye 5月技术图书有奖试读活动已结束!
- Vue中的computed是什么?怎么用?
- 2015-12-4 微信公众号红包