首页 > 其他分享 >手写K8S的YAML很痛苦,看完这篇让你信手拈来

手写K8S的YAML很痛苦,看完这篇让你信手拈来

时间:2023-06-21 16:24:45浏览次数:48  
标签:dry run 信手拈来 -- goweb YAML yaml K8S

写在开篇

对于刚刚接触K8s的新手来说,手动编写K8s的YAML配置文件可能会是一件很麻烦的事情。因为,配置文件包含了许多复杂的对象和属性。比如Pod对象的各个字段、它们的含义以及可接受的值都有哪些?看完本篇可能会让你功力大增。本篇的内容虽然很基础,但很实用,说不定还真就有不知道的小白同学。

三把利剑:help、dry-run、explain

虽然,手写YAML配置文件可能会让刚接触K8S的小白望而却步。但别担心!K8S提供了一些强大的工具和技巧,可以帮助你提升在K8s中编写YAML文件的功力。本篇文章将带你进行实战,利用Kubectl的help、dry-run、explain,让你在编写K8S的YAML文件时游刃有余。

  • help:有时候可能会忘记具体的命令用法或参数选项。这时,"help"命令将会是得力助手。
  • dry-run:在实际执行命令之前,预先验证命令的效果,模拟执行命令不会对集群产生实际影响,再配合 -o 选项 将结果输出为YAML格式,能快速得到yaml。
  • explain:编写YAML文件的时候,需要了解资源类型的结构和属性,通过它就可以知道资源的所有字段、默认值和示例的详细信息。

开始实战

接下来以创建goweb应用的Deployment来作为实战演示。

  1. 通过"help"命令,了解命令的使用方式、参数选项和示例用法:
kubectl help
kubectl create deployment --help
  1. 通过--dry-run来得到yaml
[root@k8s-b-master ~]# kubectl create deployment goweb --image=192.168.11.253/library/goweb:latest --port=80 -r 3 -n goweb-namespace --dry-run=client -o yaml

运行上述命令后,Kubectl将模拟执行创建Deployment的操作,但不会实际创建它。而是输出一个YAML格式的资源定义,通过这个方式,帮助了我们避免潜在的错误和不必要的更改,提高工作效率。

执行后输出的yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: goweb
  name: goweb
  namespace: goweb-namespace
spec:
  replicas: 3
  selector:
    matchLabels:
      app: goweb
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: goweb
    spec:
      containers:
      - image: 192.168.11.253/library/goweb:latest
        name: goweb
        ports:
        - containerPort: 80
        resources: {}
status: {}

--dry-run的两个常用选项:

  • --dry-run=client -o yaml 将在本地模拟执行命令,并将模拟执行结果以YAML格式输出。
  • --dry-run=server -o yaml 将命令请求发送到服务器,并由服务器模拟执行命令,返回经过服务器验证的YAML格式的资源定义。

总而言之,--dry-run=client -o yaml适用于本地模拟执行命令并生成YAML配置文件的场景,而--dry-run=server -o yaml适用于获取经过服务器验证的可靠YAML配置文件的场景。在实际工作中根据需求,选择合适的选项来验证和生成YAML文件,以确保命令的正确性和一致性。

  1. 通过explain了解资源的所有字段、默认值和示例的详细信息

假设我现在要知道containers对象中的还有哪些可用的字段。

可以使用以下命令:

kubectl explain deployment.spec.template.spec.containers

运行上述命令后,将获得关于spec.template.spec.containers字段的详细说明。这将包括该字段的类型、描述以及可用的子字段和它们的说明。还可以了解到默认值、约束以及可能的示例。

最后的总结

无论是菜鸟还是有经验的老鸟,掌握这三把利剑将大大提升编写YAML文件时的效率和准确性。新手要多用,老鸟要擅用。

点击链接,畅读精彩文章,从中获取洞见,为自己的技术之旅注入新的动力!关注我的微信公众号,不错过更多精彩内容。

【K8S(专注于深入研究K8S相关的各种技术和知识分享。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2474851867500544003&count=3#wechat_redirect

【Go&Py(涵盖了Go和Python两种流行的编程语言。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869340550028771330&count=3#wechat_redirect

【Ops(运维领域的讨论和交流。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869345486221262853&count=3#wechat_redirect

标签:dry,run,信手拈来,--,goweb,YAML,yaml,K8S
From: https://www.cnblogs.com/ttropsstack/p/17496540.html

相关文章

  • k8s架构组件
    Kubernetes(K8s)是一个开源的容器编排平台,由多个核心组件组成,用于管理和编排容器化应用程序。以下是Kubernetes的主要架构组件:1.Master节点:Master节点是Kubernetes集群的控制平面,负责管理和监控整个集群。它包含以下组件:-KubernetesAPIServer:提供与Kubernetes集群交互的API......
  • k8s node的几种状态
    Kubernetes(K8s)中的节点有几种可能的状态。以下是一些常见的节点状态:1.Ready(就绪):节点正常运行且准备好接受工作负载。这是节点的正常工作状态。2.NotReady(未就绪):节点无法接受工作负载,可能是由于网络问题、资源不足或其他故障导致的。3.OutOfDisk(磁盘空间不足):节点磁盘空间不足......
  • 完事后再聊应用场景,K8S调度实战:Node Affinity
    写在开篇NodeAffinity(节点亲和性)允许在节点级别上指定一些条件来控制Pod被调度到哪些节点上。它还有两种策略,本篇通过实战演示如何使用两种策略来控制Pod的调度。测试环境还是老样子,本次实战继续使用以下K8S集群环境进行:节点主机名IPMaster节点k8s-b-master192......
  • K8S调度:实战完nodeSelector后,再谈应用场景。
    Part1写在开篇nodeSelector是什么鬼?这么说吧,假设有一个K8S集群,其中有多个节点,并且想将一个特定的应用程序只部署在具有特定标签的节点上。这时候就可以在Pod的定义中添加nodeSelector字段,指定一个键值对,例如app:my-app。然后,K8S调度器将查找具有app=my-app标签的节点,并将该Pod调......
  • kubeadm搭建单master多node的k8s集群
    一、实验环境准备镜像选择:CentOS-7-x86_64-DVD-2009.iso配置:4核、6G内存、80G硬盘兼容性:ESXI7.0及更高版本服务器信息:k8s集群角色ip主机名安装的组件控制节点10.104.26.192hqs-masterapiserver、controller-manager、scheduler、etcd、kube-proxy、docker、ca......
  • docker-k8s-日志分析
    1.mac安全模式关了2.docker源改了,国内的3、k8s的git仓库,匹配到版本后,下载了。依旧无法正常启动···2023062113:36:45第一次日志记录2023-06-2113:31:23.630123+0800localhostcom.docker.backend[17097]:(0fd28985)ead7cf58-KubernetesManagerC<-Sd75b0a51-VMD......
  • pytest + yaml 框架 -40.录制接口转 yaml 用例实现
    前言pytest+yaml框架基本不用写python代码,只需写yaml文件用例就能实现接口自动化。现在引入接口录制功能,连yaml文件也不用写了,点点点就能生成yaml用例文件了。录制功能在v1.3.4版本上实现pipinstalpytest-yaml-yoyo环境准备录制功能环境没给大家预装,考虑大大家......
  • k8s1.26.3部署
    1.设置hostnamehostnamectlset-hostnamek8s-master//master节点hostnamectlset-hostnamek8s-node1//node1节点hostnamectlset-hostnamek8s-node2//node2节点2.设置hosts后续可以使用别名直接访问别的节点cat>>/etc/hosts<<EOF192.168.100.40k8s-master192.......
  • yaml.v3 - YAML 反序列化
    配置文件mysql:conn:1.1.1.1user:yangpassword:yangconsul:addr:2.2.2.2user:yangpassword:yang代码packagemainimport( "fmt" "gopkg.in/yaml.v3" "os")typeEnvSDstruct{ MysqlMysql`yaml:"mysql&q......
  • pytest + yaml 框架 -38.新增--start-project命令快速创建项目demo结构
    前言新增--start-project命令,帮助初学者快速创建项目demo结构,并自动创建几个简单的用例。创建项目demo结构执行以下命令pytest--start-project运行日志(venv)D:\demo\untitled_start>pytest--start-projectcreateinifile:D:\demo\untitled_start\pytest.ini......