首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >k8s-apiserver工作原理

k8s-apiserver工作原理

作者头像
SY小站
发布于 2020-06-19 08:38:09
发布于 2020-06-19 08:38:09
1.8K00
代码可运行
举报
文章被收录于专栏:SY小站的专栏SY小站的专栏
运行总次数:0
代码可运行

API Server

kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能

  • 提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更等
  • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)

工作原理

kube-apiserver 提供了 Kubernetes 的 REST API,实现了认证、授权、准入控制等安全校验功能,同时也负责集群状态的存储操作(通过 etcd)。

API 访问

有多种方式可以访问 Kubernetes 提供的 REST API:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、kubectl 命令行工具
2SDK,支持多种语言
Go
Python
Javascript
Java
CSharp
3、其他 OpenAPI 支持的语言,可以通过 gen 工具生成相应的 client

kubectl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get --raw /api/v1/namespaces
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods

kubectl proxy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl proxy --port=8080 &

$ curl http://localhost:8080/api/
{
  "versions": [
    "v1"
  ]
}

curl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# In Pods with service account.
$ TOKEN=$(cat /run/secrets/kubernetes.io/serviceaccount/token)
$ CACERT=/run/secrets/kubernetes.io/serviceaccount/ca.crt
$ curl --cacert $CACERT --header "Authorization: Bearer $TOKEN"  https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api
{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "10.0.1.149:443"
    }
  ]
}
# Outside of Pods.
$ APISERVER=$(kubectl config view | grep server | cut -f 2- -d ":" | tr -d " ")
$ TOKEN=$(kubectl describe secret $(kubectl get secrets | grep default | cut -f1 -d ' ') | grep -E '^token'| cut -f2 -d':'| tr -d '\t')
$ curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "10.0.1.149:443"
    }
  ]
}

API 资源使用

API Resources

我们可以通过下面的命令来获取Kubernetes集群支持的所有 API 资源:(1.11以上版本才可以有此命令)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl api-resources -o wide
NAME                              SHORTNAMES   APIGROUP                       NAMESPACED   KIND                             VERBS
bindings                                                                      true         Binding                          [create]
componentstatuses                 cs                                          false        ComponentStatus                  [get list]
configmaps                        cm                                          true         ConfigMap                        [create delete deletecollection get list patch update watch]
endpoints                         ep                                          true         Endpoints                        [create delete deletecollection get list patch update watch]
events                            ev                                          true         Event                            [create delete deletecollection get list patch update watch]
limitranges                       limits                                      true         LimitRange                       [create delete deletecollection get list patch update watch]
namespaces                        ns                                          false        Namespace                        [create delete get list patch update watch]
nodes                             no                                          false        Node                             [create delete deletecollection get list patch proxy update watch]
persistentvolumeclaims            pvc                                         true         PersistentVolumeClaim            [create delete deletecollection get list patch update watch]
persistentvolumes                 pv                                          false        PersistentVolume                 [create delete deletecollection get list patch update watch]
pods                              po                                          true         Pod                              [create delete deletecollection get list patch proxy update watch]
podtemplates                                                                  true         PodTemplate                      [create delete deletecollection get list patch update watch]
replicationcontrollers            rc                                          true         ReplicationController            [create delete deletecollection get list patch update watch]
resourcequotas                    quota                                       true         ResourceQuota                    [create delete deletecollection get list patch update watch]
secrets                                                                       true         Secret                           [create delete deletecollection get list patch update watch]
serviceaccounts                   sa                                          true         ServiceAccount                   [create delete deletecollection get list patch update watch]
services                          svc                                         true         Service                          [create delete get list patch proxy update watch]
mutatingwebhookconfigurations                  admissionregistration.k8s.io   false        MutatingWebhookConfiguration     [create delete deletecollection get list patch update watch]
validatingwebhookconfigurations                admissionregistration.k8s.io   false        ValidatingWebhookConfiguration   [create delete deletecollection get list patch update watch]
customresourcedefinitions         crd          apiextensions.k8s.io           false        CustomResourceDefinition         [create delete deletecollection get list patch update watch]
apiservices                                    apiregistration.k8s.io         false        APIService                       [create delete deletecollection get list patch update watch]
controllerrevisions                            apps                           true         ControllerRevision               [create delete deletecollection get list patch update watch]
daemonsets                        ds           apps                           true         DaemonSet                        [create delete deletecollection get list patch update watch]
deployments                       deploy       apps                           true         Deployment                       [create delete deletecollection get list patch update watch]
replicasets                       rs           apps                           true         ReplicaSet                       [create delete deletecollection get list patch update watch]
statefulsets                      sts          apps                           true         StatefulSet                      [create delete deletecollection get list patch update watch]
...

上面的命令输出了很多有用的信息:

  • SHORTNAMES - 资源名称的简写,比如 deployments 简写就是 deploy,我们可以将这些快捷方式与kubectl一起使用
  • APIGROUP - 我们可以查看官方文档以了解更多信息,但简而言之,您将在yaml文件中使用它像apiVersion:<APIGROUP>/v1
  • KIND - 资源名称
  • VERBS - 可用的方法,在您想要定义ClusterRole RBAC规则时也很有用,您还可以选择获取特定 API 组的 API 资源,例如:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl api-resources --api-group apps -o wide
NAME                  SHORTNAMES   APIGROUP   NAMESPACED   KIND                 VERBS
controllerrevisions                apps       true         ControllerRevision   [create delete deletecollection get list patch update watch]
daemonsets            ds           apps       true         DaemonSet            [create delete deletecollection get list patch update watch]
deployments           deploy       apps       true         Deployment           [create delete deletecollection get list patch update watch]
replicasets           rs           apps       true         ReplicaSet           [create delete deletecollection get list patch update watch]
statefulsets          sts          apps       true         StatefulSet

对于上面的每种资源类型,我们都可以使用kubectl explain命令来获取有关的资源详细信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl explain configmap
DESCRIPTION:
ConfigMap holds configuration data for pods to consume.

FIELDS:
   apiVersion   <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

   data <object>
     Data contains the configuration data. Each key must consist of alphanumeric
     characters, '-', '_' or '.'.

   kind <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

   metadata <Object>
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

kubectl explain命令非常有用,特别是在我们不知道该如何编写YAML文件的时候,就可以使用改命令来帮助我们获得更多提示信息。

需要注意的是explain命令可能会显示旧的group/version,我们可以通过--api-version参数显示设置它,比如:请注意,explain可能会显示旧组/版本,但您可以使用–api-version显式设置它,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl explain replicaset --api-version apps/v1

API Versions

我们也可以使用下面的命令来获取集群支持的所有 API 版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
certmanager.k8s.io/v1alpha1
enterprises.upmc.com/v1
events.k8s.io/v1beta1
extensions/v1beta1
metrics.k8s.io/v1beta1
monitoring.coreos.com/v1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SY技术小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
想拥抱AI却没准备好?联想集团帮你搞定技术落地“最后一公里”
过去的五年,电商狂飙,传统实体零售业的空间继续被压缩。然而美国第二大商超连锁Kroger却逆势崛起,不仅扩张店面,更实现盈利稳步攀升。它的市值在此期间上涨130%,超过电商巨头亚马逊105%的涨幅。
数据猿
2024/07/18
1460
想拥抱AI却没准备好?联想集团帮你搞定技术落地“最后一公里”
三年追加10亿美元!联想集团的人工智能阳谋
缺席大模型开发,并不意味着联想缺席生成式AI。正相反,在多年持续投资之后,联想在人工智能有强大的技术积累。在联想集团方案服务业务集团,联想IT高级总监杨京海看来,是不是开发一个通用大模型,联想其实并不看重,联想看重的是如何把生成式AI技术与行业解决方案结合在一起,真正对某一行业赋能,帮助行业解决问题。
数据猿
2023/09/15
2100
三年追加10亿美元!联想集团的人工智能阳谋
共建数据未来,解密CIO的所思、所惑、所愿
近期,联想集团发布了“韧性的全球首席信息官(The Resilient CIO)”为主题的全球首席信息官报告2.0。该报告基于对全球682位CIO的深度访谈和研究,调查样本来自于巴西、中国、德国、印度、日本、新加坡、英国、美国,进一步探讨了CIO角色的转变以及这种转变对企业创新和数字化转型的影响。通过这份报告,我们可以看到CIO对于企业数字化转型升级的价值,以及目前数智化创新的最新方向。
数据猿
2023/09/15
1820
共建数据未来,解密CIO的所思、所惑、所愿
“渔夫”联想,如何钓起新时代“数智化”这条巨物?
近年来,我国对数字化的重视达到前所未有的高度,从“十四五”规划纲要首次将数字经济单独列为一篇;到二十大报告中指出:“坚持把发展经济的着力点放在实体经济上”、“促进数字经济和实体经济深度融合”;再到日前,工信部又印发了《中小企业数字化转型指南》。
曾响铃
2023/01/04
2860
“渔夫”联想,如何钓起新时代“数智化”这条巨物?
【数智化案例展】联想——以智能决策技术应对呆滞物料管理挑战
本项目由联想投递并参与“数据猿行业盘点季大型主题策划活动——《2022中国企业数智化转型升级创新服务企业》榜单/奖项”评选。
数据猿
2022/09/04
8550
【数智化案例展】联想——以智能决策技术应对呆滞物料管理挑战
联想发布二季度净利同比大跌66%!中国区的收入同比下跌29%!
8月17日,联想集团公布了截至2023年6月30日的2023/24财年第一财季(2023年二季度)业绩:营收为129亿美元(约903亿人民币),同比下降24%;净利润1.77亿美元(约13.3亿人民币),同比大跌66%。集团服务导向的转型业务继续保持强劲增长,PC以外业务在集团整体营收中的占比进一步提升到41.4%。
芯智讯
2023/09/07
1880
联想发布二季度净利同比大跌66%!中国区的收入同比下跌29%!
探索数字化转型深水区新范式:联想IT从自我变革到外化赋能
当数字经济的航船迎来2023年的黎明,阳光普照的欣喜与暗礁密布的担忧依然混合在海风中。前行的方向非常明确,而具体的路径尚待摸索。
IT创事记
2023/02/17
3370
探索数字化转型深水区新范式:联想IT从自我变革到外化赋能
共谋企业数字化转型 2018全国CIO大会圆满闭幕
企业网D1Net 5月28日 贵州 由企业网D1Net主办的2018年CIOC全国CIO大会日前于贵州惠水百鸟河数字小镇盛大举行。本次大会汇集中国银行、中国移动、美的集团、国药集团、春秋航空等400余
静一
2018/06/08
6100
【数智化CIO展】沃太能源CIO陈丽:AI 浪潮下的中国企业数智化转型机遇与挑战
本文由沃太能源CIO陈丽投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。
数据猿
2024/07/16
2330
【数智化CIO展】沃太能源CIO陈丽:AI 浪潮下的中国企业数智化转型机遇与挑战
联想HPC开启中国与全球第一“巡航模式”
本月备受瞩目的HPC TOP100榜单发布中,联想以39套的成绩名列榜首,第五次获得中国第一。
IT创事记
2022/06/28
5480
联想HPC开启中国与全球第一“巡航模式”
【数智化CIO展】三一集团CIO吕青海:企业高速发展“数字化”是基础,“数智化”是升华
本文由三一集团CIO吕青海投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。
数据猿
2024/07/16
2840
【数智化CIO展】三一集团CIO吕青海:企业高速发展“数字化”是基础,“数智化”是升华
联想国际化之路上的用人智慧
近日有关联想的消息占据了各大头条,先是联想的财报,接着又是芮勇、Kirk和Laura三位行业顶尖大拿的加入。尽管对于联想财报,每个人都有自己的解读,但整体来看,作为我国科技企业的先锋,以及“中国企业军团”融入世界引领全球的“领头雁”和“样本”,联想交出的答卷还算让人满意,比如在核心业务上,联想保持了稳健的盈利,移动业务业绩得到了改善,数据中心业务也在积极应对挑战。当然,考验也有,尤其是在这个日新月异的时代,作为一个活跃在国际舞台和资本市场的高科技企业,联想需要不断讲“新故事”,而这就需要有“本钱”,这“本钱”就是资金、人才、技术等,那联想在国际化的道路上又是如何丰富自己的“本钱”呢,今天就聊聊。
曾响铃
2018/08/20
5040
联想国际化之路上的用人智慧
中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年
发布之前,IDC中国副总裁兼首席分析师武连峰先讲了讲2020年的宏观政经环境,依然不那么乐观,贸易摩擦成为新常态,中欧技术合作曲曲折折,WTO作用日趋减弱。
量子位
2019/12/19
5030
谷歌成立AI中国中心;联想牵头工业大数据产业联盟 | DT数读
过去一周,国际、国内的大数据相关公司都有哪些值得关注的新闻?数据行业都有哪些新观点和新鲜事?DT君为你盘点解读。
DT数据侠
2018/08/08
5710
2025年预测:CIO驱动AI战略,“一切皆代码”
人工智能热潮让位于更为广泛的谨慎,7 月全球 IT 宕机事件影响了数千家企业,越来越严格的法规,例如网络和信息安全指令 (NIS2) 和即将出台的欧洲数字运营韧性法案 (DORA),迫使组织改进其事件报告以确保合规性。
云云众生s
2025/01/11
1120
拆解联想普慧算力逻辑链:一次新的场景革命
中国信通院在《中国算力发展指数白皮书》中公布了这样一组数据:2016-2021年间中国算力规模平均每年增长46%,其中2021年算力产业规模达到2.6万亿元,直接带动经济总产出2.2万亿元。
Alter聊科技
2022/11/14
2700
拆解联想普慧算力逻辑链:一次新的场景革命
【数智化CIO展】鲁泰建材CIO张兵:全力投入,发现需求,是数智化转型的第一步
本文由鲁泰建材CIO张兵投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。丨推荐企业:数睿数据
数据猿
2024/07/16
1480
【数智化CIO展】鲁泰建材CIO张兵:全力投入,发现需求,是数智化转型的第一步
联想集团:AI技术如何助力企业全价值链转型?
在2024年的“两会”中,“人工智能+”首次被纳入政府工作报告中,给科技行业的发展,尤其是人工智能行业的发展带来了极大的鼓舞,生成式人工智能的不断升级和迭代,加速了各行各业数字化和智能化的进程,全球产业经济格局面临着刷新和重塑。
数据猿
2024/07/30
2010
联想集团:AI技术如何助力企业全价值链转型?
云、代码和2024年CIO面临的主要挑战
随着云计算的增长和人工智能的出现,技术对商业成果比以往任何时候都更加重要。首席信息官们应该关注哪些最关键的问题?
云云众生s
2024/08/29
960
响铃:All in人工智能,联想胜算几何?
毫无疑问,人工智能正以势不可挡之势在改变我们的生活方式、工作方式,乃至整个社会。如今业界已经将其与第一次工业革命的蒸汽机、第二次工业革命的电力、第三次工业革命的数字化相提并论,称其为第四次工业革命的驱动器。
曾响铃
2018/08/20
9080
响铃:All in人工智能,联想胜算几何?
推荐阅读
想拥抱AI却没准备好?联想集团帮你搞定技术落地“最后一公里”
1460
三年追加10亿美元!联想集团的人工智能阳谋
2100
共建数据未来,解密CIO的所思、所惑、所愿
1820
“渔夫”联想,如何钓起新时代“数智化”这条巨物?
2860
【数智化案例展】联想——以智能决策技术应对呆滞物料管理挑战
8550
联想发布二季度净利同比大跌66%!中国区的收入同比下跌29%!
1880
探索数字化转型深水区新范式:联想IT从自我变革到外化赋能
3370
共谋企业数字化转型 2018全国CIO大会圆满闭幕
6100
【数智化CIO展】沃太能源CIO陈丽:AI 浪潮下的中国企业数智化转型机遇与挑战
2330
联想HPC开启中国与全球第一“巡航模式”
5480
【数智化CIO展】三一集团CIO吕青海:企业高速发展“数字化”是基础,“数智化”是升华
2840
联想国际化之路上的用人智慧
5040
中国程序员人数将增长50%,过半500强都要卖软件,边缘应用程序增长8倍丨IDC预测下一个五年
5030
谷歌成立AI中国中心;联想牵头工业大数据产业联盟 | DT数读
5710
2025年预测:CIO驱动AI战略,“一切皆代码”
1120
拆解联想普慧算力逻辑链:一次新的场景革命
2700
【数智化CIO展】鲁泰建材CIO张兵:全力投入,发现需求,是数智化转型的第一步
1480
联想集团:AI技术如何助力企业全价值链转型?
2010
云、代码和2024年CIO面临的主要挑战
960
响铃:All in人工智能,联想胜算几何?
9080
相关推荐
想拥抱AI却没准备好?联想集团帮你搞定技术落地“最后一公里”
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档