K8S对象管理

K8S   2025-07-08 14:35   167   0  

kubectl命令行支持多种不同方式来创建和管理K8S对象。

管理技巧

应只使用一种技术来管理K8S对象。混合和匹配技术作用在同一个对象上将导致未定义行为

管理技术作用于建议环境支持的写者学习难度
指令式命令活跃对象开发项目1+最低
指令式对象配置单个文件生产项目1中等
声明式对象配置文件目录生产项目1+最高

指令式命令

可以在集群中活动对象上操作,将操作传给kubectl命令作为参数或标志 开始或者在集群中运行一次性任务的推荐方法,不提供以前配置的理是记录 例通过创建Deployment对象来与逆行nginx容器kubectl create deployment nginx --image nginx

权衡

与对象配置相比的优点

  • • 命令用单个动词标是

  • • 命令仅需一步即可对集群进行更改

与对象配置相比的缺点

  • • 命令不与变更审查流程集成

  • • 命令不提供与更改关联的审核跟踪

  • • 除了实时内容外,命令不提供记录源

  • • 命令不提供用于创建新对象的模板

指令式对象配置

kubectl命令指定操作(创建,替换等),可选标志和至少一个文件名。指定的文件必须包含YAML或JSON格式的对象的完整定义replace指令式命令将现有规范替换为新提共的规范,并放弃对配置文件中缺少的所有更改。此方法不应与对象规约被独立于配置文件进行更新的资源类型一起使用。如1loadBalancer的服务,它的externalIPs字段独立于集群配置进行更新。例: 创建配置文件中定义的对象kubectl create -f nginx.yaml删除两个配置文件中定义的对象kubectl delete -f nginx.yaml -f redis.yaml通过覆盖活动配置来更新配置文件中定义的对象kubectl replace -f nginx.yaml

权衡

与指令式命令相比的有点

  • • 对象配置可以存储在源控制系统中,如GIT

  • • 对象配置可以与流程集成,如推送和审计之前检查更新

  • • 对象配置提共了用于创建新对象的模板

与指令式命令相比缺点

  • • 对象配置需要对对象架构由基本的了解

  • • 对象配置需要额外的步骤来编写YAML文件

与声明式对象配置相比的优点

  • • 指令式对象行为更加简单易懂

  • • 从K8S1.5版本开始,指令对象配置更加成熟

与声明式对象配置相比的缺点

  • • 指令式对象配置更适合文件,而非目录

  • • 对活动对象的更新必须反映在配置文件中,否则会在下一次替换时丢失

声明式对象配置

用户对本地存储的对象配置文件进行操作,但是用户未定义要对该文件执行的操作,kubectl会自动检测每个文件的创建、更新和删除操作。这使得配置可以在目录上工作,根据目录中配置文件对不同的对象执行不同的操作。

例: 处理configs目录中的所有对象配置文件,创建并更新活动对象。可以先使用diff子命令查看将要进行的更改,然后应用

kubectl diff -f configs/
kubectl apply -f configs/

递归处理目录

kubectl diff --f configs/
kubectl apply --f configs/

权衡

与指令式对象配置相比的优点

  • • 对活动对象所做的更改即使未合并到配置文件中,也会被保留下来

  • • 声明性对象配置更好地支持对目录进行操作并自动检测每个文件的操作类型(创建,修补,删除)

与指令式对象配置相比的缺点

  • • 声明式对象配置难于调试并且出现异常时结果难以理解

  • • 使用diff产生的部分更新会创建复杂的合并和补丁操作


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。