###kubernetes api介绍 做用: 将各类资源对象的数据都经过该api接口被提交到后端的持久化存储etcd中; 一个api的顶层元素由kind丶apiVersion丶metadata丶spec和status这5部分组成 1.kindnode
有三大类别: 对象(object)丶列表(list)丶简单类别(simple)
2.apiVersionjson
表示API的版本号, 当前版本默认只支持v1
3.metadata : 资源对象的元数据定义,后端
在kubernetes中的每一个资源对象都必须包含3中Metadata namespace: 对象所属的命名空间 name: 对象的名称 uid: 系统为每一个对象都生成的惟一id 其它重要的元数据 labels: 标签 annotations: 用户可定义的注解 resourceVersion: 用于识别资源内部版本号的字符串 creationTimestamp: 系统记录建立对象时的时间戳 deletionTimestamp: 系统记录删除对象时的时间戳 selfLink: 经过api访问资源自身的URL
4.spec: 用户对须要管理的对象进行详细描述的主体部分都在spec, 他会被kubernetes持久化到etcd中保存, 系统经过spec的描述来建立或更新对象, 以达到用户指望的对象运行状态 5.status: 用于记录对象在系统中的当前状态信息api
###访问api 1.本地监听网络
kubectl proxy curl http://127.0.0.1:8001/api
2.网络监听curl
kubectl proxy --address='192.168.1.52' --accept-hosts='^*$' --port=8001 启动kubectl proxy,使用网卡IP,从其余机器访问, --accept-hosts='^*$' 表示接受全部源IP,不然会显示不被受权 curl http://192.168.1.52:8001/api/
3.直接访问post
kubectl create sa test kubectl create clusterrolebinding sa-test-cluster-admin --clusterrole='cluster-admin' --serviceaccount=default:test TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='test')].data.token}"|base64 -d) curl --header "Authorization: Bearer $TOKEN" --insecure -X GET https://192.168.1.52:6443/api/v1/nodes
4.经过postman访问 注意: 使用sa须要关闭ssl验证
jsonp