使用TOKEN授权访问api-server在k8s运维场景中比较常见,

apiserver有三种级别的客户端认证方式

1,HTTPS证书认证:基于CA根证书签名的双向数字证书认证方式

2,HTTP Token认证:通过一个Token来识别合法用户

3,HTTP Base认证:通过用户名+密码的认证方式

通常的运维场景使用第二种Token较为方便Token的权限是关联service account,

# kubectl describe secrets admin-token-2q28f -n kube-systemName:         admin-token-2q28f
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: adminkubernetes.io/service-account.uid: 93316ffa-7545-11e9-b617-00163e06992d
Type:  kubernetes.io/service-account-token
Data
====
ca.crt:     1419 bytes
namespace:  11 bytes
token:      eyJhbGciOiJ******

Service Account 的权限来自Clusterrolebinding-->ClusterRole

# kubectl describe serviceaccount admin -n kube-systemName:                admin
Namespace:           kube-system
Labels:              <none>
Annotations:         kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"admin","namespace":"kube-system"}}
Image pull secrets:  <none>
Mountable secrets:   admin-token-2q28f
Tokens:              admin-token-2q28f
Events:              <none>

通过clusterrolebinding 可以拿到ClusterRole对应的rolename

# kubectl get clusterrolebinding admin -o yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"rbac.authorization.k8s.io/v1beta1","kind":"ClusterRoleBinding","metadata":{"annotations":{},"name":"admin"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"cluster-admin"},"subjects":[{"kind":"ServiceAccount","name":"admin","namespace":"kube-system"}]}creationTimestamp: 2019-05-13T06:08:49Zname: adminresourceVersion: "1523"selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/adminuid: 93356439-7545-11e9-b617-00163e06992d
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: adminnamespace: kube-system

这个role是什么权限?

# kubectl get clusterrole cluster-admin -o yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"creationTimestamp: 2019-05-13T06:01:10Zlabels:kubernetes.io/bootstrapping: rbac-defaultsname: cluster-adminresourceVersion: "55"selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-adminuid: 817e2b9e-7544-11e9-9766-00163e0e34c8
rules:
- apiGroups:- '*'resources:- '*'verbs:- '*'
- nonResourceURLs:- '*'verbs:- '*'

从clusterrole权限来看,admin关联的权限还是比较大的,正常的集群运维中建议根据自身的真实需要,去定制权限

https://kubernetes.io/docs/reference/access-authn-authz/rbac/

了解完这些,分享一个小技巧,这样后面客户再有curl访问apiserver的需求,我相信你没问题了!

# kubectl describe secrets $(kubectl get secrets -n kube-system |grep admin |cut -f1 -d ' ') -n kube-system |grep -E '^token' |cut -f2 -d':'|tr -d '\t'|tr -d ' 'eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi0ycTI4ZiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjkzMzE2ZmZhLTc1NDUtMTFlOS1iNjE3LTAwMTYzZTA2OTkyZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.EQzj2LsWn2k31m-ksn9GmB1bZTi1Xjw1fnmWFgRKlwhS2QAaVnDXfV_TgUovpq5oWKh7h0gTVaNaK4KKK76yAv6GfMehpOdIO5xHCfQAWVRhla1cwUDC64tz7vJ1zGcx_lz4hKfhdXN1T8FYS0B0hf3h2OloAMfCZTzDjRWz24GVwH-WRTEwY_5tav65GiZzBTsnz1vV7NOcx-Kl8AK2HbowtBYqK05x7oOmp84FiQMwpYU-7g0c03h61zev4lvf0e-HFtqKiByPi8gD-uiVRvE-xayOz5oIESWw2GfhzfNf_uyR7eLplCKUBecVMtwVsBauNaeqU-IIJW5VIHAOxw
# TOKEN=$(kubectl describe secrets $(kubectl get secrets -n kube-system |grep admin |cut -f1 -d ' ') -n kube-system |grep -E '^token' |cut -f2 -d':'|tr -d '\t'|tr -d ' ')# kubectl config view |grep server|cut -f 2- -d ":" | tr -d " "https://192.168.0.130:6443
# APISERVER=$(kubectl config view |grep server|cut -f 2- -d ":" | tr -d " ")

使用curl访问apiserver

# curl -H "Authorization: Bearer $TOKEN" $APISERVER/api  --insecure{"kind": "APIVersions","versions": ["v1"],"serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0","serverAddress": "192.168.0.130:6443"}]
}

原文链接
本文为云栖社区原创内容,未经允许不得转载。

如何使用curl访问k8s的apiserver相关推荐

  1. k8s登录_登陆并访问k8s的apiserver

    kubeadm安装的k8s集群默认需要用户登陆认证,无法直接使用命令curl访问.所以首先的第一步就是获取token. 先找到k8s集群中的dns组件coredns,之前的版本使用的是kube-dns ...

  2. 在kubernetes 集群内访问k8s API服务

    所有的 kubernetes 集群中账户分为两类,Kubernetes 管理的 serviceaccount(服务账户) 和 useraccount(用户账户).基于角色的访问控制("RBA ...

  3. linux 下使用 curl 访问带多参数,GET掉参数解决方案

    linux 下使用 curl 访问带多参数,GET掉参数解决方案 参考文章: (1)linux 下使用 curl 访问带多参数,GET掉参数解决方案 (2)https://www.cnblogs.co ...

  4. k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!

    文章目录 k8s的WEB界面部署 两个master节点检查pod资源是否正常 master节点上创建dashboard工作目录,并拷贝部署web界面所需的文件到指定目录 创建资源(顺序不可以乱) 谷歌 ...

  5. [kubernetes] kubectl proxy 让外部网络访问K8S service的ClusterIP

    使用kubectl proxy命令就可以使API server监听在本地的8001端口上: $ kubectl proxy --port=8009 Starting to serve on 127.0 ...

  6. php 405跳转,php采用curl访问域名返回405 method not allowed提示的解决方法

    /** * http测试 * 注:PHP版本5.2以上才支持CURL_IPRESOLVE_V4 * @param $url 网站域名 * @param $type 网站访问协议 * @param $i ...

  7. php 访问url curl,推荐PHP一个用CURL访问URL的函数

    推荐PHP一个用CURL访问URL的函数 其实,php访问url的方式有好几种,这里只介绍其中一种curl方式,觉得有用的就收藏. /** * curl发送HTTP请求方法 * @param $url ...

  8. curl证书过期_centos7内核升级及curl访问https证书过期处理

    centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...

  9. 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一.认识 Kubernetes 网络 二.外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress 一.认识 Kubernetes 网络 ...

最新文章

  1. nacos client 请求过程
  2. linux虚拟机克隆
  3. Vim的基本操作总结
  4. vs2017 cmake android,CMake构建VS2017工程
  5. 基于jQuery实现自动或点击切换效果
  6. ie代理配置错误_电缆厂组织结构图的7个常犯错误!
  7. Python获取当前系统时间
  8. 嵌入式操作系统内核原理和开发(信号量)
  9. STM32相关手册使用记录
  10. 数据结构二叉树算法c语言实现,数据结构与算法 :AVL平衡二叉树C语言实现
  11. Gambit 2.Gambit解释器
  12. java对象转换为map
  13. 利用计算机技术分析学生成绩,基于数据挖掘技术的学生成绩分析
  14. H3C交换机端口链路聚合
  15. webfreer下载及设置
  16. 互联网 IT 精英:龙泉寺静心之旅
  17. 【Zeekr_Tech】为自动驾驶保驾护航—谈谈主流中间件设计
  18. 什么是僵尸进程(Zombie Processes)
  19. C语言编程之错误一:error C2059:syntax error : ‘)’
  20. TEST1笔记 200408

热门文章

  1. linux 命令行模式自动登录,实现linux的自动登录--命令行模式启动
  2. 某些您可以编辑的区域交叠在一起 可能不能同时显示_DX200操作要领—修改与编辑程序(三十九)...
  3. select 移动端 第一个无法选中_总结在移动端碰到的坑
  4. power iso linux启动盘,Power ISO Maker/ISO燃烧到磁盘工具 V3.0版
  5. 计算机专业英语词汇mp3,【听单词】计算机专业英语词汇音频106,计算机英语单词MP3...
  6. 超级管理器Android,超级文件管理器app
  7. execl执行linux命令,使用execl运行Linux命令
  8. poi的sax模式读取xls_POI SAX 如何修改大excel 文件内容-问答-阿里云开发者社区-阿里云...
  9. python中定义变量为啥要用下划线_关于python中带下划线的变量和函数 的意义
  10. swift 将图片保存到本地_Swift实现截屏并保存相册