当前位置: 首页 > news >正文

k8s中yaml文件的编写

目录

1.编写pod.yaml

2.编写deploment.yaml

3.编写service.yaml关联创建的pod

4.总结获取K8S资源配置清单文件模板方法

5.补充


1.编写pod.yaml

vim demo1-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: scj-podnamespace: xy101labels:app: nginxmylove: tangjunmyclass: xy101
spec:containers:- name: nginximage: nginx:1.20ports:- containerPort: 80name: httpprotocol: TCPenv:- name: mylovevalue: tangjun

各行详细介绍

使用kubectl explain pods可查看到编写pod的一级标题

  • apiVersion: apps/v1        #指定api版本标签
  • kind: Deployment        #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
  • metadata:                    #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  • spec:                    #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性


metadata:                    #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
kubectl explain pods.metadata  进一步查看metadata所包含内容
书写格式:
<string>       字符串           字段: 字符串      字段: "字符串"      字段: '字符串'
<map[string]string>    映射(值是一个或多个键值对)   字段:
                                                        key1: value1
                                                        key2: value2
 


spec:                    #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
kubectl explain pods.spec  #进一步查看spec
containers    <[]Object> -required-  #-required-表示必备字段;<[]Object>表示字符串列表      
格式
<[]Object>字段:             字段: ["值1", "值2"]
                                - 值1
                                - 值2

containers:                #定义容器属性kubectl explain pods.spec.containers  #进一步查看containers字段
kubectl explain pods.spec.containers.ports
kubectl explain pods.spec.containers.env
kubectl apply -f demo1-pod.yaml   #创建pod
kubectl get pods -n xy101   #查看pod
kubectl describe -n xy101 pod scj-pod   #可查看调度创建容器的具体过程
kubectl get -n xy101 pod --show-labels   #查看标签
kubectl exec -n xy101 -it scj-pod sh  #进入容器查看env


2.编写deploment.yaml

vim demo2-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: scj-deploynamespace: xy101labels:app: nginxmylove: tangjun
spec:replicas: 5selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.20ports:- containerPort: 80name: httpprotocol: TCPenv:- name: mylovevalue: tangjun- name: yourlovevalue: scj

查看编写deployment.yaml文件的第一字段

kubectl explain deployment   #查看编写deployment的第一字段

查看第一字段下metadata和spec下的字段

kubectl explain deployment.metadata  #可根据此命令进一步查看metadata字段
metadata:                #其中包含三大项必不可少,name、namespace、labelsname: scj-deploynamespace: xy101labels:app: nginxmylove: tangjun
kubectl explain deployment.spec #进一步查看spec的字段

查看spec下selector的字段

kubectl explain deployment.spec.selector  #查询selector的字段matchLabels:        #定义匹配标签


查看spec下template的字段

kubectl explain deployment.spec.template   #查看spec中template字段下的字段
metadata   #定义pod元数据  通常主要定义labels,labels的值需要与标签选择器的值一致
spec   #定义pod属性

查看template下spec的字段

kubectl explain deployment.spec.template.spec   #查看template下spec字段
containers    <[]Object> -required-   #必选字段kubectl explain deployment.spec.template.spec.containers  #进一步查看spec下containers 字段kubectl explain deployment.spec.template.spec.containers.ports   #进一步查看containers下ports字段

查看spec下containers中的字段

kubectl explain deployment.spec.template.spec.containers

查看containers下ports的字段

kubectl explain deployment.spec.template.spec.containers.ports

查看containers下的env字段

kubectl explain deployment.spec.template.spec.containers.env

创建deployment控制器

kubectl apply -f demo2-deploy.yaml
kubectl get -n xy101 all


3.编写service.yaml关联创建的pod

apiVersion: v1
apiVersion: v1
kind: Service
metadata:name: scj-svcnamespace: xy101labels:app: nginxmylove: tangjun
spec:selector:app: nginxtype: NodePortports:- port: 8080targetPort: 80

查看编写svc.yaml文件的第一字段

kubectl explain svc
metadata三要素1.name2.namespace3.labels


设置spec下的字段

kubectl explain svc.spec


进一步查看spec下ports的字段

kubectl explain svc.spec.ports

创建service

kubectl apply -f demo3-svc.yaml
kubectl get -n xy101 svc
kubectl describe -n xy101 endpoints scj-svc
kubectl get -n xy101 pod -o wide


如何固定nodeport、clusterip

kubectl explain svc.spec.ports   #查询指定nodeport的字段,于ports下
kubectl explain svc.spec    #查询指定clusterip的字段,于svc下的spec中
kubectl apply -f demo3-svc.yaml
kubectl get -n xy101 svc
kubectl apply -f demo3-svc.yaml 
kubectl get -n xy101 svc


4.总结获取K8S资源配置清单文件模板方法

方法1:根据现有资源导出yaml文件修改配置,重新创建

kubectl get -n xy101 svc scj-svc -o yaml > demo4.yaml
vim demo4.yaml
只保留常用配置,删除多余的,配置,进行修改创建即可


方法2:根据现有资源,进入其配置中,复制模板,再进行创建

kubectl edit -n xy101 svc scj-svc2   
即可复制其中的配置,获取模板


方法3:通过--dry-run选项模拟运行创建资源的命令获取

kubectl create|run|expose -n <命名空间> <资源类型> <资源名称> [参数选项] --dry-run=client -o yaml > XXX.yaml


 

kubectl create -n xy101 deployment deploy-tan --image=soscscs/myapp:v1 --port=80 --replicas=3 --dry-run=client   #创建资源的结尾添加--dry-run选项模拟运行创建资源,此时不会创建资源kubectl create -n xy101 deployment deploy-tan --image=soscscs/myapp:v1 --port=80 --replicas=3 --dry-run=client -o yaml > tan-deploy.yaml  #导出yaml文件,即可获取配置模板文件


方法4:手写yaml配置文件,可以根据 kubectl explain 命令获取资源的字段信息

5.补充

1.什么是external-traffic-policy

kubectl explain svc.spec  #存在于 svc.spec中


在k8s的Service对象(申明一条访问通道)中,有一个“externalTrafficPolicy”字段可以设置。有2个值可以设置:Cluster或者Local。

1)Cluster表示:流量可以转发到其他节点上的Pod。

2)Local表示:流量只发给本机的Pod。

图示:

2.k8s的service如何确保客户端的tcp消息每次都发给同一个pod?

设置Service的sessionAffinity为 ClientIP. 这样同一个client的请求会被kube-proxy转发到同一个Pod。
sessionAffinity 默认是None,客户端的请求被kube-proxy按照RR或Random算法转发到service的pod set,不能保证每次发到同一个Pod。

http://www.lryc.cn/news/419112.html

相关文章:

  • 打卡第37天------动态规划
  • openfeign本地试用
  • 数据库|SQLServer数据库:查询函数(SUM、COUNT、MAX、MIN、AVG)的使用
  • 简单Qt贪吃蛇项目
  • 画菱形(曼哈顿距离)
  • CSP初赛知识点讲解(六)
  • linux rocky 9.2系统安装mysql-wsrep-8.4.2-26.20-linux-x86_64.tar.gz二进制包
  • QT实现上传服务器功能
  • 元岳食堂采购供应链系统-智慧食堂数据化解决方案
  • 基于Java+SpringBoot+Vue的影城管理系统
  • 自定义starter
  • Docker 入门全攻略:安装、操作与常用命令指南
  • mstsc被卸载,远程桌面mstsc.exe重装
  • 从根儿上学习spring 十一 之run方法启动第四段(5)
  • 常见8种数据结构
  • 黑马Java零基础视频教程精华部分_11_面向对象进阶(3)_抽象类、接口、适配器
  • Promethues Metrics
  • 公网IP与私网IP具体有哪些区别?
  • LeetCode——3143. 正方形中的最多点数
  • const重新赋值的问题
  • python开发上位机 - PyCharm环境搭建、安装PyQt5及工具
  • day02-安装虚拟机
  • Qt:线程
  • VisionPro二次开发学习笔记11-使用 Caliper和Fixture定位Blob工具检测方块
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(五)卡尔曼滤波器一:认知卡尔曼滤波器;协方差矩阵与方差;
  • 【Go】通过反射解析对象tag信息,实现简易ORM
  • gemini2相机和宇树雷达L1的使用注意点
  • FPGA开发——verilog随机涵数$random的使用方法
  • Android14 WPA2和WPA3 类型的WiFi网络连接
  • 24/8/5算法笔记 逻辑回归sigmoid