k8s 关于apiVersion的选择思考

Kubernetes API 是基于资源的(RESTful)、通过 HTTP 提供的编程接口

REST:REpresentational State Transfer 直接翻译就是表现层状态转移,这样不便于理解
首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移

  • Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
  • Representational:某种表现形式,比如用JSON,XML,JPEG等;
  • State Transfer:状态变化。通过HTTP动词实现。

REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)

Resource

  • 资源就比如我们电脑存储的各个文件夹,根据不同的功能进行分类,存储照片的、通讯录的、视频的等等

State Transfer(基于http提供)

状态变化是由几个英文动词组成,来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转

  • GET 用来获取资源
  • POST 用来新建资源(也可以用于更新资源)
  • PUT 用来更新资源
  • DELETE 用来删除资源

Representational

  • 就是资源传输的形式表现,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据

URL

  • Server提供的RESTful API中,URL是用来指定资源访问方式

在这里插入图片描述

摘抄知乎的作者,写的非常好理解,推荐阅读

作者:覃超
链接:https://www.zhihu.com/question/28557115/answer/48094438

API 版本

为了在兼容旧版本的同时不断升级新的API,Kubernetes支持多种API版本,每种API版本都有不同的API路径,例如/api/v1或 /apis/extensions/v1beta1

  • Alpha级别:Kubernetes中新功能的早期候选者。这些可能包含错误,并且不能保证将来能正常工作
  • Beta级别:在API版本名称意味着测试已取得进展过去的Alpha级别水平,并且该功能最终将被列入Kubernetes“测试”。尽管它的工作方式可能会发生变化,并且对象的定义方式可能会完全发生变化,但功能本身很有可能以某种形式将其纳入Kubernetes
  • Stable级别:稳定版本,该版本名称命名方式:vX这里X是一个整数

API 众多版本带来的问题

k8s在1.16的时候进行了较多的版本弃用,这样就会导致一个问题,1.15之前的版本升级到1.16后资源将无法使用,API接口将无法找到可用资源,而且还存在多个接口版本都支持同样的资源,可以使用命令查看

 kubectl get deployments.v1.apps  -o yaml
 kubectl get deployments.v1beta1.extensions  -o yaml
 #资源结构都是一样的

解决方案

Pluto是一个开源实用程序,可帮助用户在其“基础结构即代码”存储库和Helm发行版中轻松找到已弃用的Kubernetes API版本

在这里插入图片描述
可以看到提示了已经弃用的,不推荐使用的,以及推荐替换的版本

参考:https://www.fairwinds.com/blog/kubernetes-easily-find-deprecated-api-versions-with-pluto
Pluto:https://github.com/FairwindsOps/pluto

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值