写在开篇
对于刚刚接触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 来作为实战演示。
通过"help"命令,了解命令的使用方式、参数选项和示例用法:
kubectl help
kubectl create deployment --help
通过--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 文件,以确保命令的正确性和一致性。
通过 explain 了解资源的所有字段、默认值和示例的详细信息
假设我现在要知道 containers 对象中的还有哪些可用的字段。
可以使用以下命令:
kubectl explain deployment.spec.template.spec.containers
运行上述命令后,将获得关于 spec.template.spec.containers 字段的详细说明。这将包括该字段的类型、描述以及可用的子字段和它们的说明。还可以了解到默认值、约束以及可能的示例。
最后的总结
无论是菜鸟还是有经验的老鸟,掌握这三把利剑将大大提升编写 YAML 文件时的效率和准确性。新手要多用,老鸟要擅用。
本文转载自:「不背锅运维」,原文:https://url.hi-linux.com/ftVTW,版权归原作者所有。
温馨提示:文章内容系作者个人观点,不代表Docker中文社区对观点赞同或支持。
版权声明:本文为转载文章,来源于 不背锅运维 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
发表评论