如何使用curl访问k8s的apiserver
使用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相关推荐
- k8s登录_登陆并访问k8s的apiserver
kubeadm安装的k8s集群默认需要用户登陆认证,无法直接使用命令curl访问.所以首先的第一步就是获取token. 先找到k8s集群中的dns组件coredns,之前的版本使用的是kube-dns ...
- 在kubernetes 集群内访问k8s API服务
所有的 kubernetes 集群中账户分为两类,Kubernetes 管理的 serviceaccount(服务账户) 和 useraccount(用户账户).基于角色的访问控制("RBA ...
- linux 下使用 curl 访问带多参数,GET掉参数解决方案
linux 下使用 curl 访问带多参数,GET掉参数解决方案 参考文章: (1)linux 下使用 curl 访问带多参数,GET掉参数解决方案 (2)https://www.cnblogs.co ...
- k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!
文章目录 k8s的WEB界面部署 两个master节点检查pod资源是否正常 master节点上创建dashboard工作目录,并拷贝部署web界面所需的文件到指定目录 创建资源(顺序不可以乱) 谷歌 ...
- [kubernetes] kubectl proxy 让外部网络访问K8S service的ClusterIP
使用kubectl proxy命令就可以使API server监听在本地的8001端口上: $ kubectl proxy --port=8009 Starting to serve on 127.0 ...
- php 405跳转,php采用curl访问域名返回405 method not allowed提示的解决方法
/** * http测试 * 注:PHP版本5.2以上才支持CURL_IPRESOLVE_V4 * @param $url 网站域名 * @param $type 网站访问协议 * @param $i ...
- php 访问url curl,推荐PHP一个用CURL访问URL的函数
推荐PHP一个用CURL访问URL的函数 其实,php访问url的方式有好几种,这里只介绍其中一种curl方式,觉得有用的就收藏. /** * curl发送HTTP请求方法 * @param $url ...
- curl证书过期_centos7内核升级及curl访问https证书过期处理
centos7内核升级及curl访问https证书过期处理 先看下当前系统的linux内核版本 uname -r 3.10.0-229.el7.x86_64 升级步骤 1.rpm --import h ...
- 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务
目录 一.认识 Kubernetes 网络 二.外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress 一.认识 Kubernetes 网络 ...
最新文章
- nacos client 请求过程
- linux虚拟机克隆
- Vim的基本操作总结
- vs2017 cmake android,CMake构建VS2017工程
- 基于jQuery实现自动或点击切换效果
- ie代理配置错误_电缆厂组织结构图的7个常犯错误!
- Python获取当前系统时间
- 嵌入式操作系统内核原理和开发(信号量)
- STM32相关手册使用记录
- 数据结构二叉树算法c语言实现,数据结构与算法 :AVL平衡二叉树C语言实现
- Gambit 2.Gambit解释器
- java对象转换为map
- 利用计算机技术分析学生成绩,基于数据挖掘技术的学生成绩分析
- H3C交换机端口链路聚合
- webfreer下载及设置
- 互联网 IT 精英:龙泉寺静心之旅
- 【Zeekr_Tech】为自动驾驶保驾护航—谈谈主流中间件设计
- 什么是僵尸进程(Zombie Processes)
- C语言编程之错误一:error C2059:syntax error : ‘)’
- TEST1笔记 200408
热门文章
- linux 命令行模式自动登录,实现linux的自动登录--命令行模式启动
- 某些您可以编辑的区域交叠在一起 可能不能同时显示_DX200操作要领—修改与编辑程序(三十九)...
- select 移动端 第一个无法选中_总结在移动端碰到的坑
- power iso linux启动盘,Power ISO Maker/ISO燃烧到磁盘工具 V3.0版
- 计算机专业英语词汇mp3,【听单词】计算机专业英语词汇音频106,计算机英语单词MP3...
- 超级管理器Android,超级文件管理器app
- execl执行linux命令,使用execl运行Linux命令
- poi的sax模式读取xls_POI SAX 如何修改大excel 文件内容-问答-阿里云开发者社区-阿里云...
- python中定义变量为啥要用下划线_关于python中带下划线的变量和函数 的意义
- swift 将图片保存到本地_Swift实现截屏并保存相册