CKA备考:如何获取Kubernetes各类工作负载的完整YAML配置
一、快速生成Ingress(或任意资源)配置文件的方法
首先纠正你的误解:-o yaml/-o json参数适用于所有Kubernetes资源类型,不管是工作负载(Deployment、StatefulSet)、网关类(Ingress、Service)还是配置类(ConfigMap、Secret)都能用。你执行k get ingress -A没结果,只是因为当前集群里还没有创建任何Ingress资源而已。
快速生成配置文件的两种常用方式:
生成空的资源模板
用kubectl create命令加上--dry-run=client -o yaml参数,就能直接输出该资源的基础YAML模板,不需要真的创建资源。比如Ingress的话:kubectl create ingress my-ingress --rule="foo.bar.com/*=my-service:80" --dry-run=client -o yaml这个命令会生成一个带基础路由规则的Ingress YAML,你可以在此基础上修改补充参数(比如TLS、注解annotations等)。
如果要生成完全空的模板(只有必填结构),可以用:
kubectl create ingress my-ingress --dry-run=client -o yaml从现有资源导出配置
如果你有参考的同类型资源(比如集群里其他namespace的Ingress,或者之前创建过的),可以用kubectl get导出:kubectl get ingress example-ingress -n default -o yaml --export > ingress-template.yaml注:
--export参数会去掉资源的状态(status)字段和集群自动生成的元数据,只保留可复用的配置部分,适合作为模板。
二、记住Ingress核心参数的技巧(CKA考试高频考点)
Ingress配置的核心结构其实很固定,你只要记住以下几个必填/高频字段:
apiVersion: networking.k8s.io/v1 # 注意CKA考的v1版本,不要用旧的v1beta1 kind: Ingress metadata: name: my-ingress annotations: # 高频:比如nginx-ingress的rewrite-target、ssl-redirect等 nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: # 可选但高频:HTLS配置 - hosts: - foo.bar.com secretName: foo-tls rules: # 必填:路由规则 - host: foo.bar.com http: paths: - path: /testpath pathType: Prefix # v1版本必填:Prefix/Exact/ImplementationSpecific backend: service: name: my-service port: number: 80
- 重点记:
apiVersion必须是networking.k8s.io/v1(CKA现在考的都是v1版本,旧版本已经废弃);rules里每个路径必须指定pathType;backend指向对应的Service名称和端口。
三、解决工作负载缩进和配置遗忘的通用技巧
考前强化模板记忆
把高频资源(Deployment、Service、Ingress、ConfigMap、Secret)的基础模板手写几遍,重点记层级结构:- 所有资源的顶级字段都是
apiVersion、kind、metadata、spec(部分有status,但考试不需要写) metadata下是name、namespace、labels、annotations- 不同资源的
spec结构不同,比如Deployment的spec下是replicas、selector、template,Ingress的spec下是tls、rules
- 所有资源的顶级字段都是
用kubectl explain查实时文档
考试中可以直接用kubectl explain命令查看资源的字段说明,比如:kubectl explain ingress.spec.rules.http.paths.backend.service # 查看Ingress后端Service的字段 kubectl explain deployment.spec.template.spec.containers # 查看Deployment容器的字段这个命令会输出每个字段的类型、是否必填、说明,完全不需要背,考试时直接查就行。
利用kubectl的自动补全
考试前可以开启kubectl自动补全:source <(kubectl completion bash)输入
kubectl create ingress --后按Tab,就能看到所有可用的参数选项,帮你快速生成配置。
内容的提问来源于stack exchange,提问作者osama

