K8是—— yaml资源清单

一、yaml文件详解

1.Kubernetes支持YAML和JSON格式管理资源对象
2.JSON格式:主要用于api接口之间消息的传递
3.YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读

1.1 YAML语法格式

1.大小写敏感
2.使用缩进表示层级关系
3.不支持Tab键制表符缩进,只使用空格缩进
4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
5.:字符后缩进一个空格,如冒号,逗号,短横杆(-)等
6."—"表示YAML格式,一个文件的开始,用于分隔文件间
7.“#"表示注释

1.2 查看api资源版本标签

kubectl api-versions
==========================================================
apps/v1
#如果是业务场景一般首选使用apps/v1
apps/v1beta1
#带有beta字样的代表的是测试版本,不用在生产环境中
==========================================================

1.3 编写yaml文件demo

1.3.1 编写nginx-deployment的清单文件

mkdir /opt/demo/
cd /opt/demo/
==========================================================
vim nginx-deployment.yaml
apiVersion: apps/v1 #指定api版本标签
kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的
namespace: kube-public #定义命名空间
labels: #定义资源标签(Pod的标签)
app: nginx
spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
replicas: 3 #定义副本数量
selector : #定义标签选择器
matchLabels: #定义匹配标签
app: nginx-111 #匹配下面的标签,需与.spec.template.metadata.labels定义的标签一致
template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
metadata:
labels: #定义pod副本将使用的标签,需与.spec.selector.matchLabels定义的标签保持一致
app: nginx-111
spec:
containers: #定义容器属性
- name: nginx #定义一个容器名,一个- name: 定义一个容器
image: nginx:1.15 #定义容器使用的镜像以及版本
ports:
- containerPort: 80 #定义容器的对外的端口
=========================================================
#创建资源对象
kubectl apply -f nginx-deployment.yaml
#查看创建的pod资源
kubectl get pods -o wide -n kube-public --show-labels

  

1.3.2 编写service服务的资源清单

vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata :
name: nginx-service
namespace: kube-public
labels:
app: sb
spec:
type: NodePort
ports :
- port: 7777
targetPort: 80
nodePort: 31111
selector :
app: nginx-111
==========================================================
#创建资源对象
kubectl create -f nginx-service.yaml
#查看创建的service
kubectl get pods,svc -o wide -n kube-public --show-labels
#在浏览器输入nodeIP:nodePort即可访问
http://192.168.80.11:31111
http://192.168.80.12:31111
==========================================================

 ● port
port是k8s集群内部访问service的端口,即通过clusterIP:port可以从Pod所在的Node上访问到service
● nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP:nodePort可以从外部访问到某个service
● targetPort
targetPort是Pod的端口,从port或nodePort来的流量经过kube-proxy反向代理负载均衡转发到后端Pod的targetPort上,最后进入容器。
● containerPort
containerPort是Pod内部容器的端口,targetPort映射到containerPort。

  

1.4 用--dry-run命令生成yaml资源清单

//kubectl run --dry-run 打印相应的API对象而不执行创建
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run //查看生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml //查看生成json格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o json //使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > nginx-test.yaml
==========================================================
vim nginx-test.yaml apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: nginx-test
name: nginx-test
spec:
replicas: 3
selector:
matchLabels:
run: nginx-test
template:
metadata:
labels:
run: nginx-test
spec:
containers:
- image: nginx
name: nginx-test
ports:
- containerPort: 80
==========================================================
//创建资源对象
kubectl create -f nginx-test.yaml
#查看创建的service
kubectl get pods -o wide --show-labels

  

1.5 将现有的资源生成模板导出生成yaml文件

//将现有的资源生成模板导出I
kubectl get deployment nginx-test --export -o yaml //保存到文件中
kubectl get deployment nginx-test --export -o yaml > lvbu.yaml
==========================================================
vim lvbu.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: nginx-123
name: nginx-456
spec:
replicas: 3
selector:
matchLabels:
run: nginx-gxd
template:
metadata:
labels:
run: nginx-gxd
spec:
containers:
- image: nginx
name: nginx-789
ports:
- containerPort: 80
protocol: TCP
==========================================================
//创建资源对象
kubectl create -f gxd.yaml
#查看创建的service
kubectl get pods -o wide --show-labels

  

K8是—— yaml资源清单的更多相关文章

  1. YAML资源清单

    YAML 文件基本语法格式 在 Docker 环境下面我们是直接通过命令 docker run 来运行我们的应用的,在 Kubernetes 环境下面我们同样也可以用类似 kubectl run 这样 ...

  2. 【04】Kubernets:资源清单(pod)

    写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...

  3. 04 . kubernetes资源清单YAML入门

    YAML 通过k8s操作yaml配置文件在node上创建资源,yaml配置文件就像船垛,用来操控docker这艘大船 yam是专门用来写配置文件的语言,非常简洁和强大.而实际上使用yaml配置文件创建 ...

  4. Kubenetes 资源清单定义入门

    Kubernetes 常用资源 资源  对象 工作负载型资源对象(workload): Pod  Replicaset  ReplicationController  Deployments Stat ...

  5. k8s学习笔记之五:Pod资源清单spec字段常用字段及含义

    第一章.前言 在上一篇博客中,我们大致简述了一般情况下资源清单的格式,以及如何获得清单配置的命令帮助,下面我们再讲解下清单中spec字段中比较常见的字段及其含义 第二章.常用字段讲解 spec.con ...

  6. k8s学习笔记之四:资源清单定义入门

    第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...

  7. k8s资源清单定义入门

    1.资源分类 a.workload型资源:service.pod.deployment.ReplicaSet.StatefulSet.Job.Cronjob; b.服务发现及服务均衡资源型资源:Ser ...

  8. 04-kubernetes 资源清单定义入门

    目录 资源对象 创建资源的方法 清单帮助命令 创建测试清单 资源的三种创建方式 资源对象 workload:Pod, ReplicaSet, Deployment, StatefulSet, Daem ...

  9. 【06】Kubernets:资源清单(控制器 - Deployment)

    写在前面的话 上一节主要简单的提了一下控制器都有哪些常用的,并且简单的功能是啥,最后一并提了 ReplicaSet 控制器. 但是 ReplicaSet 一般不需要我们直接配置,多以从本节开始,开始学 ...

随机推荐

  1. IPv6地址格式

    1.说明 IPv6是互联网协议的第六版, 现有IPv4只支持大概40亿个网络地址, 而IPv6支持3.4e38个网络地址. IPv4的地址长度是32位(bit), IPv6的地址长度是128位. 尽管 ...

  2. nginx之location、inmp架构详解、BBS项目部署

    本期内容概要 location lnmp架构 部署BBS项目 内容详细 1.location 使用Nginx Location可以控制访问网站的路径 但一个server可以有多个location配置 ...

  3. Python中类的变量,一个下划线与两个下划线的区别

    形似       功能 __xx 这是私有变量, 只有内部可以访问,外部不可以访问.但是也不是一定不可以访问,只要以 _类名__xx样式就可以访问 .但最好不要这样做,养成良好编程习惯 _x 这是实例 ...

  4. java 封装 总结

    1.前言 老是被问什么是java 封装...很基础的一个问题 ,其实我们一直在写的东西但不知道怎么称呼. 比如 在entity实体类 里面老用到的 getter 和 setter 方法其实就是封装的方 ...

  5. 安装TestNG

    1.启动Eclipse,选择"Help"-->'Install New Software' 2.在谈出的弹框中选择"Add" 3.在弹出的"Ad ...

  6. markdown mermaid流程图

    流程图 所有流程图都由节点.几何图像.箭头或线条组成. mermaid代码定义了这些节点和边的制作和交互方式.可以有不同的箭头类型.多向箭头以及与子图的连接. 节点 节点 flowchart LR i ...

  7. leetcode 102. 二叉树的层次遍历 及 103. 二叉树的锯齿形层次遍历

    102. 二叉树的层次遍历 题目描述 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / ...

  8. rocketmq实现延迟队列精确到秒级实现方案1-代理实现

    简单的来说,就是rocketmq发送消息到broker的时候,判断是否定时消息, 如果是定时消息,将消息发送到代理服务(这个是一个独立的服务,需要自己开发,定时地把消息发送出去), 当然了消息用什么来 ...

  9. 保存网页到zotero研究

    打印长页 打印长页很麻烦,打印加载时间过长,打印后无法选取文字 https://www.zhihu.com/question/52639201?sort=created 插件 浏览器自带直接网页打印p ...

  10. 前端3D引擎-Cesium自定义动态材质

    本文代码基于Vue-cli4和使用WebGL的地图引擎Cesium,主要内容为三维场景下不同对象的动态材质构建. 参考了很多文章,链接附在文末. 为不同的几何对象添加动态材质 不知道这一小节的名称概况 ...