k8s的yaml文件管理

news/2024/7/4 7:47:03 标签: kubernetes, 容器, 云原生

声明式管理方法:

  • 1.适合于对资源的修改操作
  • 2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理
  • 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
  • 3.对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
  • 4.语法格式:kubectl create/apply/delete -f xxxx.yaml

//查看资源配置清单

kubectl get deployment nginx -o yaml

//解释资源配置清单

kubectl explain deployment.metadata

kubectl get service nginx -o yaml
kubectl explain service.metadata


 

 //修改资源配置清单并应用

在线修改:

直接使用 kubectl edit service nginx 在线编辑资源配置清单并保存退出即时生效(如port: 888)
PS:此修改方式不会对yaml文件内容修改


 离线修改:

修改yaml文件,并用 kubectl apply -f xxxx.yaml 文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源



kubectl get service nginx -o yaml > nginx-svc.yaml
vim nginx-svc.yaml				#修改port: 8080
kubectl delete -f nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
kubectl get svc

 

 //删除资源配置清单

陈述式删除:
kubectl delete service nginx

声明式删除:
kubectl delete -f nginx-svc.yaml

 Kubernetes 支持 YAML 和 JSON 格式管理资源对象

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

YAML 语法格式:

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

//查看 api 资源版本标签
kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1								#如果是业务场景一般首选使用 apps/v1
apps/v1beta1						#带有beta字样的代表的是测试版本,不用在生产环境中
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

//写一个yaml文件demo 

mkdir /opt/demo
cd demo/

vim nginx-deployment.yaml
apiVersion: apps/v1		#指定api版本标签
kind: Deployment		#定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:					#定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx-deployment	#定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:				#定义Deployment资源标签
    app: nginx	
spec:					#定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  replicas: 3			#定义副本数量
  selector:				#定义标签选择器
    matchLabels:		#定义匹配标签
      app: nginx		#需与 .spec.template.metadata.labels 定义的标签保持一致
  template:				#定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
    metadata:
      labels:           #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
        app: nginx
    spec:
      containers:				#定义容器属性
      - name: nginx				#定义一个容器名,一个 - name: 定义一个容器
        image: nginx:1.15.4		#定义容器使用的镜像以及版本
        ports:
        - containerPort: 80		#定义容器的对外的端口

//创建资源对象

kubectl create -f nginx-deployment.yaml

//查看创建的pod资源

kubectl get pods -o wide

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

vim nginx-service.yaml
apiVersion: v1  
kind: Service  
metadata:
  name: nginx-service
  labels:
    app: nginx  
spec:
  type: NodePort  
  ports:
  - port: 80
    targetPort: 80  
  selector:
    app: nginx

注:

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

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

//创建资源对象

kubectl create -f nginx-service.yaml 

//查看创建的service

kubectl get svc

详解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。

如何获取资源配置清单文件模板(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

1)手撕yaml配置文件,可根据 kubectl explain 命令获取字段信息
2)无中生有的方式:kubectl create|run|expose  ....  --dry-run=client  -o yaml  > XXX.yaml
3)查看已存在的资源配置方式:kubectl get <资源类型> <资源名称> -n 命令空间 -oyaml > XXX.yaml
                             kubectl edit <资源类型> <资源名称>  手动复制资源配置,再粘贴到文件中
4)复制官方文档的资源配置案例                             

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

kubectl get svc nginx-service -o yaml

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

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


 


http://www.niftyadmin.cn/n/4930188.html

相关文章

主数据管理案例-某研究所

1、 背景介绍及难点分析 某军工研究所是机电类科研生产一体化研究所&#xff0c;具有多品种、小批量、离散性、央企、军工保密等特点&#xff0c;在数据管理系统和研制管理体系的控制下&#xff0c;设计、工艺、 制造、试验、售后服务等环节都产生了大量的数据。在管理信息化、…

Linux C++网络编程基础(1):TCP服务端与客户端的实现

目录 一、OSI七层网络模型二、TCP的特点三、TCP服务端代码服务端代码相关函数介绍sockaddr_inhtonssocketbindlistenacceptreadsendclose四、TCP客户端代码客户端相关代码介绍inet_ptonconnect一、OSI七层网络模型 网络协议是计算机网络中的规则,它们定义了计算机如何发送和接…

Learning Deep Features for Discriminative Localization

Some Words: 这里主要是我阅读paper的笔记 这篇文章主要是2016年CVPR的一篇文章&#xff0c;中文名是 学习用于判别性定位的深度特征&#xff0c; &#xff08;一&#xff09;Abstract: 在这篇工作中&#xff0c;我们又重新探讨了全局平均池化层&#xff0c;并且阐释了CNN网络…

Oracle笔记--dblink

概述 1、database link是定义一个数据库到另一个数据库的路径的对象&#xff0c;database link允许你查询远程表及执行远程程序。在任何分布式环境里&#xff0c;database都是必要的。另外要注意的是database link是单向的连接。 2、在创建database link的时候&#xff0c;Ora…

问道管理:燃气板块拉升走高,胜通能源涨停,欧洲天然气价飙升

燃气板块10日盘中发力走高&#xff0c;到发稿&#xff0c;美能动力、胜通动力、水发燃气涨停&#xff0c;首华燃气涨约8%&#xff0c;山东墨龙、贵州燃气涨逾7%&#xff0c;贝肯动力涨逾5%。 消息面上&#xff0c;因液化天然气供给危险添加&#xff0c;美国天然气期货日内大涨7…

vue2转vue3基本语法的方法

缘由 最近vue3十分的火热&#xff0c;vue2官方也表示未来将停止更新大版本了。 使用element.ui&#xff0c;内部也大都是vue3的语法&#xff0c;有次写前端突然发现看不懂了&#xff0c;近些天抽空到vue3看了下文档&#xff0c;学习下语法。 苦恼&#xff1f; 1、ref是啥 2、…

leetcode707. 设计链表(单链表+虚拟头指针+双指针遍历)

题目&#xff1a;leetcode707. 设计链表 描述&#xff1a; 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链…

GCN初步尝试

任务如下&#xff1a; 读取cora数据集&#xff0c;有2708个节点&#xff0c;每个节点有1433个特征&#xff0c;每个节点属于7类中的一类。节点之间存在边注&#xff1a;cora的节点标号不是从0开始计数&#xff0c;故需要进行处理附上一份简约代码&#xff1a; 建立一个两层的…