《 Kubernetes进阶实战》一3.1.3访问Kubernetes REST API

举报
华章计算机 发表于 2019/05/29 14:58:44 2019/05/29
【摘要】 本书摘自《 Kubernetes进阶实战》一第三章,第3.1.3节,作者是马永亮

3.1.3 访问Kubernetes REST API

       以编程的方式访问Kubernetes REST API有助于了解其流式化的集群管理机制,一种常用的方式是使用curl作为HTTP客户端直接通过API Server在集群上操作资源对象模拟请求和响应的过程。不过,由kubeadm部署的Kubernetes集群默认仅支持HTTPS的访问接口,它需进行一系列的认证检查,好在用户也可以借助kubectl proxy命令在本地主机上为API Server启动一个代理网关,由它支持使用HTTP进行通信,其工作逻辑如图3-3所示。

image.png

       例如,于本地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节中重点介绍。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。