kubectl 命令行工具支持 k8s 对象几种不同的创建和管理方法。本文档简要介绍了这些方法.
命令方式
当使用命令方式时,用户直接操作在集群的存活对象上,用户通过参数告知kubectl要进行的操作。
这是运行一个一次性任务最简单的方法,因为这个方法直接操作存活的对象,它不提供之前操作的历史记录
例子:
kubectl run nginx --image nginx
权衡利弊
好处
简单易上手
只需要一个步骤就能对集群进行更改
坏处
不会整合历史操作流程
不提供与更改关联的审计跟踪
除了存活状态外,不提供记录源
不提供创建新对象的模板
命令对象配置
在对象配置中,kubectl命令指定操作(create\replace\etc)、操作参数、和至少一个文件名,文件中必须包含一个对象在yaml和json规范中完整的定义。
例如:
kubectl create -f nginx.yaml 创建对象
kubectl delete -f nginx.yaml -f redis.yaml 更新对象
kubectl replace -f nginx.yamlk 删除对象
权衡利弊
优点(相对命令行):
可以被保存在像GIT一样的源控制系统中
可以与进程集成,例如在推送和审计跟踪前查看更改信息
会提供一个创建新对象的模板
缺点
需要一定的对象格式化了解
需要编写yaml
优点(声明式对象配置):
简单易理解
发展更成熟
缺点
适合文件、不适合目录级别的操作
活动对象的更新必须反映在文件中,否则下次更新会丢失
声明式对象配置
用户对本地存储的对象配置文件进行操作,但没有定义要对文件执行的操作。通过kubectl自动检测每个对象进行增删改查操作,这样可以在目录层级上工作,因为不同目录可能需要不同的操作
优点
直接对活动对象的更改会被保留,即使他们未被配置到文件中
支持目录操作,并自动检测对每个对象的操作
缺点
意外情况下难调试
使用差异的部分更新会创建复杂的合并和补丁操作
网友评论