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: nginx
  spec:
   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-public
 
kubectl get deploy -n kube-public

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

vim nginx-service.yaml
 
apiVersion: v1
kind: Service
metadata:
  name: nginx-demo1
  namespace: kube-public
  labels:
    name: nginx-demo1
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 80
      nodePort: 31111
  selector:
    app: nginx-demo1

kubectl apply -f nginx-service.yaml
 
kubectl 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-ceshi
  name: nginx-ceshi
spec: 
  replicas: 3
  selector: 
    matchLabels: 
      run: nginx-ceshi
  strategy: {}                #删除
  template: 
    metadata: 
      creationTimestamp: null #删除
      labels: 
        run: nginx-ceshi
    spec: 
      containers: 
      - image: nginx
        name: nginx-ceshi
        ports: 
        - containerPort: 80
        resources: {}         #删除
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

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

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

相关文章

解密Spring Boot Starter与自动配置:探秘神奇的背后

starter可以理解为Spring Boot中的一站式集成启动器,包含了一系列可以集成到应用中的依赖项,可以快递集成spring组件及其框架,而不需要到处找示例代码。 一、为什么要用starter? 在springboot还没有出来之前,我们使用…

大模型分布式训练并行技术分享

目前业内解决大模型问题,基本以多节点、分布式方案为主。分布式方案具体的实施时,又分为数据并行、参数并行、流水线并行等,针对具体的业务场景采取合适的并行方案方可带来更高的效率。 后续结合业内主流的分布式框架,具体介绍各种…

半规管功能减退引起头晕怎么治?

“头晕一年多,刚开始挺轻的,然后就是一个阶段一个阶段的,越来越严重了,就是感觉自己晃,比如说坐椅子,带靠背的,坐着或者站着觉得就是晃,坐车时间长了晕的就更厉害了,然后…

Vue3解决“找不到模块“@/components/xxx.vue”或其相应的类型声明”

文章目录 前言背景问题描述解决方案总结 前言 在使用 Vue 3 开发项目时,遇到“找不到模块 ‘/components/xxx.vue’ 或其相应的类型声明”的错误是一个常见问题。这通常与 TypeScript 和模块解析相关的配置不当有关。本文将详细介绍如何解决此问题,确保…

重生奇迹MU格斗家上手最轻松的职业

重生奇迹MU格斗家玩法攻略,有一个比较奇葩的职业,那就是格斗家。格斗家拥有其他职业没有的优势,就是加体力和敏捷都可以提升攻击力百分比。格斗家玩法攻略 目前格斗家最多的就是敏格玩法,配合智力MM加成后的幽冥光速拳可以说是第…

详解布隆过滤器(含面试考点)

Bloom Filter 底层逻辑主要代码实现解析(以C为例)优缺点应用场景面试常问问题1:什么是布隆过滤器?问题2:布隆过滤器如何处理误报?问题3:如何设计布隆过滤器以最小化误报率?问题4&…

Cobaltstrike框架介绍

Cobaltstrike简介 cobalt strike(简称CS)是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户 端,一个客户端可以连接多个服务端,可被团队进行分布式协团操作. 和MSF关系 metas…

Java使用apache.poi生成word

加油,打工人! 工作需求,将现有的word模板有段落和表格,从数据库中查出数据并填充,word里面也有表格数据,需要将excel表格数据单独处理,然后插入到生成好的word文档中。 下面代码模拟从数据库查出…

【简单易用,新人友好】一个轻量级生物信息学流程框架,从此解决99%的生物信息学流程搭建问题...

生物信息学数据分析流程的搭建是一项繁重而复杂的工作。随着行业的发展,各种生信流程框架层出不穷,比如有: NextflowSnakemakeCWLWDL 各种标准,各种规则,令人眼花缭乱。选择太多,往往令人无所适从。特别是新进入行业的…

SwiftUI中的Stepper(系统Stepper以及自定义Stepper)

本篇文章主要介绍一下Stepper,这个组件在UIKit中也已经有较长的历史了,下面看看在SwiftUI中如何使用,有哪些更加便捷的方法呢? Stepper减号(-)和加号()按钮,可以点击后以指定的数值进行加减。 基础初始化方法 Stepp…

NDIS驱动开发-NET_BUFFER体系

网络数据由通过网络发送或接收的数据包组成。 NDIS 提供数据结构来描述和组织此类数据。 NDIS 6.0 及更高版本的主要网络数据结构包括: NET_BUFFERNET_BUFFER LISTNET_BUFFER_LIST_CONTEXT 它们之间的关系如下: 在 NDIS 6.0 及更高版本中, NET_BUFFER …

基于python数据挖掘在淘宝评价方面的应用与分析,技术包括kmeans聚类及情感分析、LDA主题分析

随着电子商务的蓬勃发展,淘宝作为中国最大的在线购物平台之一,吸引了大量的消费者进行购物并留下了大量的客户评价。这些客户评价中包含了丰富的消费者意见和情感信息,对于商家改进产品、提升服务质量以及消费者决策都具有重要的参考价值。 …

一个机器学习问题的重新定义

任何事物都有两面性。 一些机器学习问题也是如此。并非每个回归问题(你认为的)都需要回归。仔细考虑和审视问题的业务不仅可以帮助开发更好的模型,还可以找到有效的解决方案。 重构或重新定义(reframing)是一种改变机…

数据结构-思考完全二叉树

我们知道在完全二叉树中 : (孩子下标-1)/ 2 父节点下标 父节点下标*21 左孩子节点 父节点下标*22 右孩子节点 那我们该怎样理解以便之后不容易忘记呢? 以下是我的思考过程:观察下边的完全二叉树的下标规律…

Docker HTTPS api V2 Manifest V 2, Schema 2 下的免装docker下载镜像的方法

目录 前言 下载镜像代码 使用方法 原代码中无法适配 Schema 2 的原因浅析 如何解决 相对原代码改动的东西 前言 本文提供代码主要是基于 https://github.com/NotGlop/docker-drag 提供的代码修改的。链接中提供的代码应该是是基于HTTPS api V2 Manifest V 2, Schema 1实…

如何使用pycrypt加密工具测试反病毒产品的检测性能

关于pycrypt pycrypt是一款基于Python 3语言开发的加密工具,广大研究人员可以使用该工具来尝试绕过任意类型的反病毒产品,以检测目标反病毒产品的安全性能。 功能介绍 1、目前已知反病毒产品检测率为0/40; 2、支持绕过任意EDR解决方案&#…

Nodejs+Socket.io+Web端完成聊天

前言 源码获取:nodeexpresssocket.ioweb: 聊天demo (gitee.com) 目录结构 后端依赖 启动方式 前端是html正常启动 后端是node app.js 后端app.js核心代码 const express require(express) const app express() var http require(http).Server(app) var io require(so…

AI网络爬虫-自动获取百度实时热搜榜

工作任务和目标&#xff1a;自动获取百度实时热搜榜的标题和热搜指数 标题&#xff1a;<div class"c-single-text-ellipsis"> 东部战区台岛战巡演练模拟动画 <!--48--></div> <div class"hot-index_1Bl1a"> 4946724 </div> …

uniapp+vue3+ts开发小程序或者app架构时候的UI框架选型

使用vue3tsviteuniapp开发小程序或者跨平台app的趋势越来越高&#xff0c;有一个顺手的UI的框架还是非常重要的&#xff0c;官方维护的 uni-ui&#xff0c;支持全端&#xff0c;而且有类型提示&#xff0c;目前已经内置到 GitHub - Sjj1024/uniapp-vue3: 使用uniapp和vue3 ts …

01-05.Vue自定义过滤器

目录 前言过滤器的概念过滤器的基本使用给过滤器添加多个参数 前言 我们接着上一篇文章01-04.Vue的使用示例&#xff1a;列表功能 来讲。 下一篇文章 02-Vue实例的生命周期函数 过滤器的概念 概念&#xff1a;Vue.js 允许我们自定义过滤器&#xff0c;可被用作一些常见的文本…