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,一经查实,立即删除!

相关文章

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

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

cocosCreator动态生成二维码

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

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…

电脑键盘如何练习盲打?

电脑键盘如何练习盲打&#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;说明没有权限) 以管理员身份打开成功…

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[…

负反馈系统中运放的相位裕度仿真、环路增益的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…

ROS学习记录:用C++实现IMU航向锁定

前言 获取IMU数据的C节点 在了解了如何获取到IMU的姿态信息&#xff08;链接在上面&#xff09;后&#xff0c;接下来尝试实现让一个节点在订阅IMU数据的时候&#xff0c;还能发布运动控制指令&#xff0c;使机器人能对姿态变化做出反应&#xff0c;达到一个航向锁定的效果。 …

神奇动物在哪里,但导演是微软

大数据产业创新服务媒体 ——聚焦数据 改变商业 一说到计算机视觉&#xff0c;大多数人第一时间联想到的便是“人脸识别”、“自动驾驶“、道路检测”等跟我们日常生活息息相关的关键词。而在2024年的5月末&#xff0c;微软在GitHub上面上传了这样一个计算机视觉的项目&#x…

几个速度比较快的 Linux 开源镜像站及支持的资源列表

搜狐开源镜像站 https://mirrors.sohu.com/ File Name CPAN/ FreeBSD/ QpenBSD/ RockyL apache/ archlinux/ centos/ ceph/ cygwin/ debian/ debian–cd/ debian-security/ deepin/ deepin-cd/ docker-ce/ fedora/ fedora-epel/ gentoo/ lib/ mysql/ nginx/ opensuse/ php/ ubu…

C++笔试强训day32

目录 1.素数回文 2.活动安排 3.合唱团 1.素数回文 链接https://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f?tpId290&tqId39945&ru/exam/oj 现将其转化为回文数&#xff08;这里用字符串存储比较方便转化&#xff09;&#xff0c;然后判断是否为…

【FPGA】VGA显示文字、彩条、图片——基于DE2-115

文章目录 前言一、VGA概述1.1 简述1.2 管脚定义1.3 VGA显示原理1.4 VGA时序标准1.5 VGA 显示模式及相关参数 二、VGA显示自定义的汉字字符2.1 点阵汉字生成2.2 生成BMP文件2.3 生成txt文件2.4 实现效果 三、VGA显示条纹3.1 实现流程3.2 实现效果 四、VGA输出一幅彩色图像4.1 bm…

ArcGIS不同图斑设置不同的透明度

对于设置一个图层的整体的透明度&#xff0c;我们在 ArcGIS制作带蒙版的遥感影像地图http://mp.weixin.qq.com/s?__bizMzIzNjM2NTYxMg&mid2247509080&idx1&sn38dccf0a52bb3bb3758f57114ee38b72&chksme8da161bdfad9f0d363da90959a8524dcf2b60d0e8d999f8ebeef0…

Unity面试八股文之基础篇

文章目录 前言1. Unity的生命周期加载第一个场景Editor在第一次帧更新之前帧之间更新顺序协程销毁对象时退出时 2. Unity 协程和线程,进程的区别3. 本地坐标系 世界坐标系4. 碰撞器和触发器的区别后话 前言 开设这个栏目的博文会写一些有关unity的面试题目&#xff0c;在面试的…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解&#xff0c;主要用于Web开发&#xff0c;特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为&#xff0c;使得从控制器方法返回的数据直接写入HTTP响应体&#xff08;Response Body&…