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. docker学习:docker命令

    帮助命令 自验证 docker version 详情信息 docker info 获取帮助 docker --help 镜像命令 列出本例主机上的镜像 docker images [OPTIONS] ...

  2. AWS 15年(2):云原生兴起

    AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流. AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的1 ...

  3. Java 16 中新增的 Stream 接口的一些思考

    这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看: https://javaalmanac.io/jdk/17/apidiff/11/ ...

  4. Python基础案例练习:制作学生信息管理系统

    一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...

  5. linux安装mysql以及使用navicat连接mysql

    一.下载mysql 1.获取下载链接 进入官网:https://www.mysql.com 点击downloads --> MySQL Community (GPL) Downloads  -- ...

  6. 安装Apache-storm-0.9.1-incubating图解教程

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6596214331988247054/ 安装步骤 (1) 安装Zookeeper集群,可以参考前一篇文章,本文已安装 ...

  7. LINUX学习-Nginx+JDK+Tomcat+Mysql搭建JAVA WEB

    一.安装JDK环境 1.先到  https://www.oracle.com/java/technologies/javase-jdk8-downloads.html  下载linux jdk-8u2 ...

  8. SYCOJ411

    题面描述 MasMas在面试某大厂时遇到了一道有趣的题.面试官要求MasMas写一个程序找出几个数中,出现次数为奇数的那个数.MasMas抓耳挠腮,请你帮帮他. 输入描述 第一行输入一个数nn (1 ...

  9. 利用代码生成工具Database2Sharp生成ABP VNext框架项目代码

    我们在做某件事情的时候,一般需要详细了解它的特点,以及内在的逻辑关系,一旦我们详细了解了整个事物后,就可以通过一些辅助手段来提高我们的做事情的效率了.本篇随笔介绍ABP VNext框架各分层项目的规则 ...

  10. 灵雀云开源网络插件Kube-OVN 1.4.0 版发布!支持跨集群容器网络、NetworkPolicy 日志

    从 1.4 开始 Kube-OVN 支持将多个 Kubernetes 集群容器网络打通,不同集群之间的 Pod 可以通过 Pod IP 直接互相通信.本版本还支持 ACL 日志,可以记录因 Netwo ...