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