yaml文件详解

目录

一、yaml的简介

 二、yaml示例

1.编写yaml文件创建pod资源

2. 创建资源对象

3.查看创建的pod资源

4.创建service服务对外提供访问并测试

5.创建资源对象

6.查看创建的service

7.在浏览器输入 nodeIP:nodePort 即可访问

三、 获取yaml配置资源

四、将现有资源生成模板导出

 


一、yaml的简介

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

yaml的语法格式:

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

 二、yaml示例

#查看字段帮助信息,可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers

1.编写yaml文件创建pod资源

vim nginx-deployment.yaml

apiVersion: apps/v1             #指定api版本标签
kind: Deployment                #定义资源的类型,可以为Deployment,Job,Ingress,Service等
metadata:                       #定义资源元数据信息,如资源名称,namespace,标签等信息
  name: myapp-nginx             #定义资源名称,在同一个namespace空间中必须是唯一的
  namespace: kube-public        #定义namespace,默认为default
  labels:                       #定义Deployment资源标签,可定义多个标签
    app: myapp                 

spec:                           #定义资源的参数属性                        
  replicas: 3                   #定义副本数量,默认值为1
  selector:                     #定义标签选择器
    matchLabels:                #定义匹配标签
      app: myqpp-pod            #指定pod的标签
  template:                     #定义pod的模板
    metadata:                   #定义pod的元数据信息
      labels:                   #定义pod副本将使用的标签
        app: myqpp-pod          #与标签选择器定义的标签相同,否则无法管理生成的pod
    spec:
      containers:               #定义容器属性
      - name: myapp             #定义一个容器名,一个name:定义一个容器
        image: nginx:1.14       #定义容器使用的镜像以及版本
        ports:                  
        - containerPort: 80     #定义容器对外的端口  
          name: http            #定义端口名称
          protocol: TCP         #端口协议,支持TCP和UDP,默认TCP

2. 创建资源对象

kubectl create -f nginx-deployment.yaml

3.查看创建的pod资源

kubectl get pods -n kube-public -owide --show-labels

4.创建service服务对外提供访问并测试

vim nginx-service.yaml 

apiVersion: v1                 
kind: Service
metadata:                    
  name: nginx-service              #定义service的名称
  namespace:kube-public
  labels:
    app: service
spec:
  type: NodePort                   #定义资源类型,默认为ClusterIP
  ports:                           #定义资源端口号
  - port: 8080                     #ClusterIP的端口,集群内部访问service的端口
    targetPort: 80                 #pod的端口
    nodePort: 31000                #外部访问集群service的端口
    protocol: TCP                  #指定协议
  externalTrafficPolicy: Cluster
  selector:                        #标签选择器
    app: myqpp-pod                 #指定pod的标签

注:

在k8s的service对象(申明一条访问通道)中,其中有一个字段:externalTrafficPolicy。可设置为:

  • Local:只转到本节点的容器
  • Cluster:可以转到其它节点的容器

详解k8s中的port :

  • 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。

5.创建资源对象

kubectl create -f nginx-service.yaml 

6.查看创建的service

kubectl get svc

7.在浏览器输入 nodeIP:nodePort 即可访问

curl http://192.168.88.70:31000

三、 获取yaml配置资源

#kubectl run --dry-run=client 打印相应的 API 对象而不执行创建
kubectl run nginx-test --image=nginx --port=80 --dry-run=client
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client

#查看生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml

#查看生成json格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json

#使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml  > nginx-deploy.yaml

四、将现有资源生成模板导出

#将现有的资源生成模板导出
kubectl get svc nginx-service -o yaml

#保存到文件中
kubectl get svc nginx-service -o yaml > my-svc.yaml

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

openCV图像读取和显示

文章目录 一、imread二、namedWindow三、imshow #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main(int argc,char** argv) {cv::Mat img imread("./sun.png"); //3通道 24位if (img.empty()) {std:…

Java中实现图片和Base64的互相转化

文章目录 前言一、代码二、测试三、结果 前言 公司项目中用到了实名认证此&#xff0c;采用的第三方平台。后端中用到的单项功能为身份证信息人像对比功能&#xff0c;在写demo的过程中发现&#xff0c;它们所要求的图片信息为base64编码格式。 一、代码 package com.bajiao…

zookeeper集群和kafka的相关概念就部署

目录 一、Zookeeper概述 1、Zookeeper 定义 2、Zookeeper 工作机制 3、Zookeeper 特点 4、Zookeeper 数据结构 5、Zookeeper 应用场景 &#xff08;1&#xff09;统一命名服务 &#xff08;2&#xff09;统一配置管理 &#xff08;3&#xff09;统一集群管理 &#xff08;4&a…

本地项目如何连接git远程仓库

在本地新建项目后&#xff0c;如何连接git远程仓库呢&#xff1f;步骤如下&#xff1a; 第一步&#xff0c; 首先我们在git上新建仓库&#xff0c;设置模板可勾选Readme文件。&#xff08;readme文件的创建是为了介绍所写代码的一些详细信息,为了之后更好的维护。&#xff09;…

准备三个月,终拿快手offer!薪资28k*16

昨天有VIP小伙伴给小孟说&#xff1a;拿到了快手的offer。 聊了半个小时&#xff0c;待遇还不错。准备去了&#xff01;28k&#xff0c;16薪。 快手的k3c职级可对标阿里的P7。 前面我说过&#xff1a;能去大厂就去大厂&#xff0c;有机会就去争取&#xff0c;年纪轻轻的&a…

数学建模-元胞自动机

clc clear n 300; % 定义表示森林的矩阵大小 Plight 5e-6; Pgrowth 1e-2; % 定义闪电和生长的概率 UL [n,1:n-1]; DR [2:n,1]; % 定义上左&#xff0c;下右邻居 vegzeros(n,n); % 初始化表示森林的矩阵 imh ima…

uniapp 微信小程序 echarts地图 点击显示类目

效果如图&#xff1a; 在tooltip内axisPointer内添加 label:{show:true} 即可显示“请求离婚”的标题

【C++】开源:tinyxml2解析库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍tinyxml2解析库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;…

elevation mapping学习笔记2之高程图输入、输出、服务和参数配置的定义和说明

文章目录 0 引言1 话题Topics1.1 订阅subscribe1.2 发布publish 2 服务Services3 参数Parameters 0 引言 elevation mapping学习笔记1已经成功编译安装elevation mapping高程图工程&#xff0c;并运行示例turtlesim3_waffle_demo&#xff0c;在仿真环境下&#xff0c;控制带有…

【Ubuntu】安装docker,docker compose 以及部署一个docker应用

大家好&#xff01;在过去&#xff0c;已经分享了很多有关通过Docker部署应用的内容。今天&#xff0c;我将为大家详细介绍如何在Ubuntu系统上部署最新的Docker平台。 Docker是什么 Docker是一个开源的容器化平台&#xff0c;它允许您将应用程序及其所有依赖项打包到称为容器…

恒运资本:2倍牛股突然闪崩,业绩创新高股出炉,最高日赚近2亿

上半年哪些公司净利润有望创前史新高&#xff1f; 2倍牛股单季成绩环比下滑&#xff0c;早盘股价大跳水 A股半年报进入发表高峰期&#xff0c;仅8月7日晚间&#xff0c;就有超30家公司发表半年报和成绩预告状况&#xff0c;超七成净利润同比增加。净利润增速最高的是翔港科技&…

责任链模式(Chain of Responsibility)

责任链模式是一种行为设计模式&#xff0c;允许将请求沿着处理者链进行发送。收到请求后&#xff0c;每个处理者均可对请求进行处理&#xff0c;或将其传递给链上的下个处理者。职责链模式使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。…

Activity启动过程详解(Android 12源码分析)

Activity的启动方式 启动一个Activity&#xff0c;通常有两种情况&#xff0c;一种是在应用内部启动Activity&#xff0c;另一种是Launcher启动 1、应用内启动 通过startActivity来启动Activity 启动流程&#xff1a; 一、Activity启动的发起 二、Activity的管理——ATMS 三、…

【AGC】付费下载上架下载后无法安装问题

【关键字】 AGC、付费下载、应用安装 【问题描述】 有开发者反馈用户下载后无法安装&#xff0c;采用未接入sdk&#xff0c;直接勾选付费-产品上架的方案&#xff0c;以前其他产品是能够正常安装的&#xff0c;现在不知道为啥。 报错信息&#xff1a;付费后显示“订单创建失…

Centos 从0搭建grafana和Prometheus 服务以及问题解决

下载 虚拟机下载 https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/17_0 cenos 镜像下载 https://www.centos.org/download/ grafana 服务下载 https://grafana.com/grafana/download/7.4.0?platformlinux …

SpringBoot 2.1.7.RELEASE + Activiti 5.18.0 喂饭级练习手册

环境准备 win10 eclipse 2023-03 eclipse Activiti插件 Mysql 5.x Activiti的作用等不再赘叙&#xff0c;直接上代码和细节 POM <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>…

Matplotlib引领数据图表绘制

Matplotlib引领数据图表绘制 前言图像得组成画图设置 figure设置标题设置坐标轴设置 label 和 legend添加注释使用子图中文乱码解决保存图形显示图形条形图直方图散点图饼状图 总结 前言 在数据科学领域&#xff0c;数据可视化是一种强大的工具&#xff0c;能够将复杂的数据转…

华为推出手机系统云翻新服务:什么是云翻新?如何使用?

华为手机系统云翻新是华为推出的一项功能&#xff0c;旨在通过云服务提供系统翻新的服务。它可以帮助用户对手机的系统进行优化和更新&#xff0c;以提高手机的性能和流畅度。具体而言&#xff0c;华为手机系统云翻新功能提供了免费的云空间&#xff0c;用户可以将手机中的系统…

【C++笔记】C++启航之为C语言填坑的语法

【C笔记】C启航之为C语言填坑的语法 一、命名空间1、为什么要引入命名空间&#xff1f;2、命名空间的基本用法3、展开命名空间4、命名空间的套娃5、命名空间的自动合并 二、缺省参数1、为什么要引入缺省参数&#xff1f;2、缺省参数的基本用法3、缺省的参数必须从右向左4、缺省…

用Python批量复制文件,方法有9种,方便快捷

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 当我们复制一个文件时用复制粘贴就可以了&#xff0c;如果是多个文件呢&#xff1f; 就会很麻烦了&#xff01; 今天给大家介绍一下用Python批量复制文件&#xff0c;方法有九种&#xff01;希望对你有帮助 1. Shutil Copy…