k8s是不是通过yaml来管理集群
YAML不是唯一方式,但是是最主流,生产环境标准方式。
两种操作资源的途径
1.声明式:YAML文件(生产首选)
写yaml(yml),里面写清除我期望最终状态:我要1个pod,副本数2,镜像nginx,端口80.
执行:
kubectl apply -f demo.yml
k8s控制器会拼命干活,把集群变成yaml写的样子。
特点:
文件可以保存,提交git做版本控制;
重复执行不会乱,适合集群维护,CI/CD;
考试,企业项目全用这套。
2.命令式:直接敲kubectl命令(临时测试用)不用写文件,直接在命令行创建资源
kubectl run nginx --image=nginx
kubectl create deployment nginx --image=nginx
缺点:操作不会保存成文件,做完就没记录;不方便复盘,回滚,生产不推荐大量使用。
核心原理(关键)
YAML只是描述配置集的文本载体!
k8s真正存储集群所有状态,存在etcd数据库。
流程:
你写yaml>kubectl apply把yaml内容提交给APIServer>APIServer校验>存入etcd>各个控制器循环干活,把集群实际状态对齐yaml写的期望状态。
yaml本身不直接控制集群,它只是一份“愿望说明书”。真正管理集群的是:apiserver,etcd,controller,scheduler这些组件。
举个通俗比方
yaml=装修设计图纸(写清楚你想要房子长啥样)
etcd=档案室,保存图纸
k8s各个控制器=装修工人,照着图纸把房子修成图纸样子
但你可以口头告诉工人干活(kubectl命令式),但正规装修一定要保留图纸(yaml)。
考试&实操高频考点
1.生产环境:优先声明式yaml apply,不要大量用create/delete命令式;
2.yaml可以导出集群现有配置:
kubectl get pod nginx -o yaml > pod.yaml
把集群当前真实状态导出成yaml文件;
3.dry-run可以先生成yaml,不用直接创建资源
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > deploy.yml
更多推荐
所有评论(0)