《 Kubernetes进阶实战》一3.1.3访问Kubernetes REST API
3.1.3 访问Kubernetes REST API
以编程的方式访问Kubernetes REST API有助于了解其流式化的集群管理机制,一种常用的方式是使用curl作为HTTP客户端直接通过API Server在集群上操作资源对象模拟请求和响应的过程。不过,由kubeadm部署的Kubernetes集群默认仅支持HTTPS的访问接口,它需进行一系列的认证检查,好在用户也可以借助kubectl proxy命令在本地主机上为API Server启动一个代理网关,由它支持使用HTTP进行通信,其工作逻辑如图3-3所示。
例如,于本地127.0.0.1的8080端口上启动API Server的一个代理网关:
~]$ kubectl proxy --port=8080
Starting to serve on 127.0.0.1:8080
而后即可于另一终端使用curl一类的客户端工具对此套接字地址发起访问请求,例如,请求Kubernetes集群上的NamespaceList资源对象,即列出集群上所有的Namespace对象:
~]$ curl localhost:8080/api/v1/namespaces/
{
"kind": "NamespaceList",
"apiVersion": "v1",
……
}
或者使用JSON的命令行处理器jq命令对响应的JSON数据流进行内容过滤,例如,下面的命令仅用于显示相关的NamespaceList对象中的各成员对象:
~]$ curl -s localhost:8080/api/v1/namespaces/ | jq .items[].metadata.name
"default"
"kube-public"
"kube-system"
给出特定的Namespace资源对象的名称则能够直接获取相应的资源信息,以kube-system名称空间为例:
~]$ curl -s localhost:8080/api/v1/namespaces/kube-system
{
"kind": "Namespace",
"apiVersion": "v1",
"metadata": {
"name": "kube-system",
"selfLink": "/api/v1/namespaces/kube-system",
"uid": "eb6bf659-9d0e-11e8-bf0d-000c29ab0f5b",
"resourceVersion": "33",
"creationTimestamp": "2018-08-11T02:33:23Z"
},
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Active"
}
上述命令响应的结果中展现了Kubernetes大多数资源对象的资源配置格式,它是一个JSON序列化的数据结构,具有kind、apiVersion、metadata、spec和status五个一级字段,各字段的意义和功能将在3.2节中重点介绍。
- 点赞
- 收藏
- 关注作者
评论(0)