zoukankan      html  css  js  c++  java
  • 【k8s学习笔记】Kubernetes API概念

    Kubernetes(以后简称k8s)集群通过提供一系列 API(基于OpenAPI规范),使用户可以简易查询与操作 k8s的资源对象状态。其关键在于k8s的控制平面中的kube-apiserver 组件以HTTP API形式将API暴露出来。即 用户与集群中的对象都是通过kube-apiserver提供的API进行通讯的。

    k8s的HTTP API支持JSON和Protobuf 序列化语法来传参

    API版本

    为了平缓地进行添加或修改API,k8s设计了API版本的概念,即新的API或资源字段是在新的API版本上变更的,所以它能保持频繁的更新。对应到k8s的配置文件上,API版本对应的关键字是apiVersion

    比如每个k8s可接受的配置文件都要以apiVersion开头,举例如下:

    apiVersion: v1
    

    API级别

    apiVersion分为三种级别,分别为可能会有bug随时变更特性的alpha经测试等待提建议与即时修正的beta稳定不变更的stable

    alpha与beta版本的名称中分别包含两者的级别,举例,v1alpha1、v1beta3等;而stable版本仅由v与数字组成,如v1

    API分组

    为了简化扩展API方式,k8s使用API Groups(API组)进行标识。即通过指定REST URL来设置序列化对象的apiVersion值。当前支持两类API Groups:

    • Core Groups(核心组):无分组标识,通常作为通用组,例:使用/api/v1设置为apiVersion: v1
    • Named Groups(命名组):使用/apis/$GROUP_NAME/$VERSION设置为apiVersion: $GROUP_NAME/$VERSION,举例为batch/v1

    开关API分组

    通过--runtime-config来开关相应的分组,举例:

    • 禁用batch/v1,只需设置--runtime-config=batch/v1=false

    • 开启使用batch/v2alpha1,设置--runtime-config=batch/v2alpha1即可。

    此标记支持同时传入一系列用逗号分离的key=value对来动态修改运行中的配置

    注意:开关API分组需重启kube-apiserver与kube-controller-manager以获取runtime-config配置的值

    开启extensions/v1beta1组

    在extensions/v1beta1的API组下的组件(DaemonSets, Deployments, StatefulSet, NetworkPolicies, PodSecurityPolicies and ReplicaSets)默认都是禁用的,开启deployments和daemonsets只需设置--runtime-config=extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true

    注意:为了通用性,个别资源的开关仅支持extensions/v1beta1

    持久化

    所有的API资源对象都被序列化保存在etcd中

  • 相关阅读:
    比特币and区块链
    C#汽车租赁系统 完整版
    C#托盘程序设置
    网络电视精灵项目
    C#文件操作 File(静态类)
    深入解读XML解析
    ListView 控件总结
    DataGridView 的使用总结
    动态添加节点
    IrisSkin2.dll 添加皮肤
  • 原文地址:https://www.cnblogs.com/hellxz/p/13265381.html
Copyright © 2011-2022 走看看