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

写在开篇

对于刚刚接触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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值