K8s的常用命令以及yaml文件的创建

目录

一、声明式管理方法:YAML文件

1、yaml文件简介

2、yaml和json的主要区别:

3、YAML的语法格式

4、yaml文件组成部分

①控制器定义

5、查看api资源版本标签

6、编写nginx-deployment.yaml资源配置清单

6.1创建资源对象

6.2查看创建的pod资源

7、创建service服务并对外提供访问并测试

二、K8s中的port概述

①port

②nodeport

③targetport

④containerport

1、创建yaml文件模板

2、查看生产yaml格式

3、查看生成的json格式

4、通过yaml格式导出生成模板,并进行修改以及删除一些不必要的参数

5、查看字段帮助信息

6、怎样可以更轻松的写yaml

6.1用run命令生成

6.2用get命令导出

6.3yaml文件的学习方法

三、具体案例

1、案例需求:


一、声明式管理方法:YAML文件

①适合对资源的修改操作

②声明式资源管理方法依赖于资源配置清单文件对资源进行管理

③资源配置清单文件有两种格式:yaml(人性化,已读),json(易于api接口解析)

④对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群中

⑤语法格式:kubectl create/apply/delete -f xxx.yaml

1、yaml文件简介

YAML仍然是一种标记语言,主要强调这种语言是以数据为中心,而不是以标记为中心,而像XML语言就使用了大量的标记。

YAML可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类型,还可以简单表达属组,散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构,各种配置文件。

yaml配置文件的后缀为.yml

2、yaml和json的主要区别:

①yaml使用空格缩进,这是python开发人员熟悉的领域

②javascript开发人员喜欢JSON,因为它是javascript的一个子集,可以直接在Javascript中解释和编写,同时使用简写方式生命JSON,在使用没有空格的典型变量名时,不需要键中的双引号。

③有很多解释器在YAML和JSON的所有语言中都能很好的工作。

④在许多情况下,yaml的空白格式可以更容易查看,因为格式化需要更人性化的方法

⑤如果您的编辑器中没有空格可见或缩进线指示符,那么yaml的空白虽然更紧凑,更容易查看,蛋可能难以手动编辑。

⑥JSON的序列化和反序列化要快得多,因为要检查的功能明显少于yaml,这使得更小更轻的代码能够处理JSON

⑦一个常见的误解是yaml需要较少的标点符号并且比JSON更紧凑,但这是完全错误的。空格是不可兼得,所以看起来字符比较少,但是如果你计算实际的空格是必要的,以便于正确解释yaml以及正确的缩进,你会发现yaml实际上需要比json更多的字符。json不使用空格来表示层次结构或分组,并且可以通过删除不必要的空格来轻松展平,以实现更紧凑的传输。

3、YAML的语法格式

Kubernetes支持yaml和json格式管理资源对象

JSON格式:主要用于api接口之间消息的传递

YAML格式:用于配置和管理,YAML的配置参数格式比较清晰

语法格式:

①大小写敏感

②以空格的方式缩进表示层级关系

③通常开头缩进两个空格(统一层级对应即可)

④不支持指标符tab缩进,只对空格表示缩进

⑤关键词字符后缩进一个空格,比如冒号都好后面需要缩进一个字符

⑥---表示yaml格式一个文件的开始

⑦支持“#”表示注释

4、yaml文件组成部分

①控制器定义

5、查看api资源版本标签

kubectl api-versions

如果是业务场景,一般首选使用 apps/v1(apps/v1 从 v1.9 版本开始提供 API)。在 k8s v1.16 版本之前使用的是 extensions/v1beta1,extensions/v1beta1 从 v1.20 版本开始不再提供 Ingress 资源。带有 beta 字样的代表的是测试版本,不用在生产环境中。

6、编写nginx-deployment.yaml资源配置清单

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空间中必须是唯一的labels:             #定义资源标签(Pod的标签)app: nginx
spec:              #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性replicas: 3       #定义副本数量selector :        #定义标签选择器matchLabels:     #定义匹配标签app: nginx     #匹配上面的标签,需与上面的标签定义的app保持一致template:         #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配metadata:labels:app: nginxspec:containers:            #定义容器属性- name: nginx          #定义一个容器名,一个- name: 定义一个容器image: nginx:1.15.4   #定义容器使用的镜像以及版本ports:- containerPort: 80   #定义容器的对外的端口

6.1创建资源对象
kubectl create -f nginx-deployment.yaml
或者
kubectl apply -f nginx-deployment.yaml

6.2查看创建的pod资源
kubectl get pods -o wide -n kube-publickubectl get deploy -n kube-public

7、创建service服务并对外提供访问并测试

vim nginx-service.yamlapiVersion: v1
kind: Service
metadata:name: nginx-demo1namespace: kube-publiclabels:name: nginx-demo1
spec:type: NodePortports:- port: 8080targetPort: 80nodePort: 31111selector:app: nginx-demo1kubectl apply -f nginx-service.yamlkubectl get svc -n kube-public在浏览器输入 nodeIP: nodePort 即可访问
http://192.168.223.11:31111

二、K8s中的port概述

①port

port是k8s集群内部访问service的端口,即通过clusterIP:port可以从Pod所在的Node上访问到service

②nodeport

nodeport是外部访问k8s集群中service的端口,通过nodeIP:nodeport可以从外部访问到某个service

③targetport

tarport是pod的端口,从port或nodeport来的流量经过kube-proxy反向代理负载均衡转发到后端pod的targetpod上,最后进入容器

④containerport

containerport是pod内部容器的端口,targetport映射到containerport

1、创建yaml文件模板

kubectl run --dry-run打印相应的api对象而不是执行创建

--dry-run:试运行 kubectl run nginx-ceshi --image=nginx --port=80  --dry-run

--dry-run表示试运行,不是真正的执行命令(测试命令是否正确),即并不会真的创建出pod和deployment实例,去掉该参数后即可真正执行命令。

2、查看生产yaml格式

使用--dry-run试运行可不触发生产命令,然后通过-o yaml可实现对其yaml资源配置清单的查看

kubectl run nginx-ceshi --image=nginx --port=80  --dry-run -o yaml

3、查看生成的json格式

可以通过-o json查看该命令产生的json配置清单

4、通过yaml格式导出生成模板,并进行修改以及删除一些不必要的参数

kubectl run nginx-ceshi --image=nginx --port=80  --dry-run -o yaml > nginx-ceshi.yaml

模板:
vim nginx-ceshi.yaml
apiVersion: apps/v1betal     #api 版本改成 api/v1
kind: Deployment
metadata:creationTimestamp: null    #删除labels:run: nginx-ceshiname: nginx-ceshi
spec: replicas: 3selector: matchLabels: run: nginx-ceshistrategy: {}                #删除template: metadata: creationTimestamp: null #删除labels: run: nginx-ceshispec: containers: - image: nginxname: nginx-ceshiports: - containerPort: 80resources: {}         #删除
status: {}                    #删除

生成镜像并查看

将现有的资源生成模板导出

kubectl get pod/nginx-deployment-6f9f6d866c-w2sdc -o yaml -n kube-public###注现在最新版本的kubctl  get 不支持 --export 参数

保存到文件中

kubectl get deployment.apps/nginx-deployment -o yaml -n kube-public > my-deploy.yaml

5、查看字段帮助信息

explain可以一层层的查看相关资源对象的帮助信息

kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers

6、怎样可以更轻松的写yaml

6.1用run命令生成

没有相关资源,使用run或者create命令--dry-run选项,后期可以修改yaml文件

kubectl run my-deploy --image=nginx --dry-run -o yaml > my-deploy.yaml
6.2用get命令导出

已有相关资源,使用get命令{--export选项:使用老版本的kubectl}

kubectl get deploy/nginx-deployment -o=yaml -n kube-public > new.yaml
6.3yaml文件的学习方法

①多看别人(官方)写的,能读懂
②能照着现场的文件改着用
③遇到不懂的,善用kubectl explain ...命令查看

三、具体案例

1、案例需求:

①自主式的pod pod

②资源名称:my-nginx-ky35

③命名空间:my-ky35

④容器镜像:nginx:1.14

⑤容器端口:80

⑥标签:njzb:my-ky35

⑦创建srvice去关联上面的pod

⑧修改页面,显示woshichaoren对外访问 输入地址就能访问

mkdir /opt/demo
[root@master01 ~]]#cd /opt/demo/
[root@master01 demo]]#vim pod-ns-svc.yaml

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python将一段文本写入一个txt文件中且先格式化文件名

有一段文本内容&#xff0c;有“标题”和“内容”组成。 任务&#xff1a;要将这段文本&#xff0c;存放到一个txt文件中&#xff0c;文件名为当天的日期加上“标题”内容。因为“标题”内可能有/<>之类的&#xff0c;还需要格式化一下。 已经将上述功能都写成了函数&a…

安卓手机APP开发__近距离无线通信(NFC)概述

安卓手机&#xff21;&#xff30;&#xff30;开发&#xff3f;&#xff3f;近距离无线通信(NFC)概述 概述 近距离无线通信 (NFC) 是一组近距离无线技术&#xff0c;距离通常不超过 4 厘米才能 发起连接。通过 NFC&#xff0c;您可以在 NFC 标签和 Android 设备之间&#xf…

【Redis】 String类型的内部编码与使用环境

文章目录 &#x1f343;前言&#x1f334;内部编码&#x1f384;典型使用场景&#x1f6a9;缓存功能&#x1f6a9;计数&#xff08;Counter&#xff09;功能&#x1f6a9;共享会话&#xff08;Session&#xff09;&#x1f6a9;验证码功能 ⭕总结 &#x1f343;前言 本篇文章重…

Unity-Sprite Atlas+UGUI系统的运行原理

每日一句&#xff1a;别听世俗耳语&#xff0c;看自己的风景就好 目录 SA的原理&#xff1a; SA的优点&#xff1a; SA的缺点&#xff1a; DrawCall是什么&#xff1f; 批处理是什么&#xff1f; 我们先了解一下UGUI系统的运行原理吧&#xff01; 提到图集优化&#xff0…

cocosCreator动态生成二维码

cocosCreator 版本&#xff1a;3.7.2 开发语言&#xff1a;typeScript 我们在游戏开发中&#xff0c;经常会生成一个专属于玩家个人的二维码&#xff0c;比如说推广、充值等功能。 接到这个任务&#xff0c;在网上找了下&#xff0c;还是有很多教程的。但是这些教程大部分都是用…

Ollydbg动态分析MessageBoxA输出hellow world

一、目的 找到main函数找到调用的MessageBoxA函数 测试源码 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷键 指令快捷键说明RestartCtrlF2重新开始调试S…

buu[HCTF 2018]WarmUp(代码审计)

buu[HCTF 2018]WarmUp&#xff08;代码审计&#xff09; 题目 访问source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

MySQL基础学习: SET FOREIGN_KEY_CHECKS = 0

文章目录 一、介绍二、使用方法三、注意事项 一、介绍 在MySQL中&#xff0c;SET FOREIGN_KEY_CHECKS 0; 是一个特殊的命令&#xff0c;用于临时禁用外键约束检查。这在你执行一些涉及多个表并且可能违反外键约束的批量操作时非常有用。 为什么需要禁用外键约束检查&#xf…

电脑键盘如何练习盲打?

电脑键盘如何练习盲打&#xff1f;盲打很简单&#xff0c;跟着我做&#xff0c;今天教会你。 请看【图1】&#xff1a; 【图1】中&#xff0c;红色方框就是8个基准键位&#xff0c;打字时我们左右手的8个手指就是放在这8个基准键位上&#xff0c;F键和J键上各有一个小突起&…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

mysql图形化界面及将mysql注册成后台程序

安装图形化界面版本 右键新建数据库 字符集使用utf8防止以后数据库中存在中文字符导致乱码 将mysql注册成后台程序 cmd进入命令行界面 切换路径到cd /mysql/bin 将mysql注册成后台程序 mysqld.exe --install mysql1 (失败&#xff0c;说明没有权限) 以管理员身份打开成功…

ASP.NET防止流量攻击的措施

请求速率限制&#xff1a; // 在 Global.asax.cs 文件中 Application_BeginRequest 方法中添加以下代码 protected void Application_BeginRequest() {// 检查请求频率&#xff0c;限制每个 IP 地址的请求次数if (RequestThrottler.IsRequestLimitExceeded(Context.Request.Use…

如何跨过robots协议的限制爬取内容?

在讨论如何“跨过robots协议的限制爬取内容”之前&#xff0c;重要的是强调遵循网络礼仪和法律法规的必要性。robots协议&#xff08;Robots Exclusion Standard&#xff09;是网站所有者向网络爬虫&#xff08;包括搜索引擎和其他自动化工具&#xff09;传达其爬取意愿的一种方…

SYSTEM文件夹介绍(sys文件夹、deley文件夹、USART 文件夹、SysTick、printf函数、fputc函数、半主机模式)

参考 http://t.csdnimg.cn/P9H6x 一、sys文件夹介绍 在上述介绍的 sys 文件夹中&#xff0c;涉及了一些与系统控制、中断管理、低功耗模式、栈顶地址设置、系统时钟初始化以及缓存配置等相关的函数。以下是对每个功能的简要分析&#xff1a; 1.中断类函数&#xff1a; sys_n…

CCF20230901——坐标变换(其一)

CCF20230901——坐标变换&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

uniapp 高德地图与百度地图精准定位,高德地图定位报错

目前我这边测试发现的问题 UNIAPP 获取定位的代码 在这里插入代码片 data的参数 data() {return {id: 0, // 使用 marker点击事件 需要填写idtitle: map,latitude: 39.909,longitude: 116.39742,covers: [{latitude: 39.909,longitude: 116.39742,width: 50,height: 50,iconPa…

负反馈系统中运放的相位裕度仿真、环路增益的stb仿真

这里没目录标题 一、引言二、巴克豪森判据、最坏情况下的相位裕度、相位裕度三、相位裕度与开环&#xff0c;环路&#xff0c;闭环增益的关系四、环路增益、闭环增益和相位的仿真4.1 运放为双入单出时4.1.1 系统的闭环增益4.1.2 stb仿真系统的环路增益和相位裕度&#xff08;环…

Python项目:数据可视化_下载数据【笔记】

源自《Python编程&#xff1a;从入门到实践》 作者&#xff1a; Eric Matthes 02 下载数据 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自动化(Allure报告)

Allure详细安装请看之前的博客 1.Allure配置与⼊⻔ 运⾏⽤例&#xff0c;⽣成allure报告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 运⾏⽤例&#xff0c;⽣成allure报告 # main.py import os import pytest if __name__ __m…

SpringBoot如何实现热部署

热部署 使用SpringBoot提供的DevTools实现热部署 原理&#xff1a;实时监控classpath下文件的变化&#xff08;即编译后的target目录&#xff09;&#xff0c;如果发生变化则自动重启 配置&#xff1a;添加DevTools的依赖即可&#xff08;需要开启IDEA的自动编译&#xff09…