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中

  • 相关阅读:
    用javascript写星际飞机大战游戏
    Vue源码分析之实现一个简易版的Vue
    Vue源码分析之数据驱动
    Vue源码分析之虚拟DOM
    使用HbuilderX离线打包5+APP
    ERROR in build.js from UglifyJs
    PHP 的一些开发规范
    Markdown使用TOC自动生成导航栏
    Hexo博客skapp主题部署填坑指南
    Docker 官方安装详解
  • 原文地址:https://www.cnblogs.com/hellxz/p/13265381.html
Copyright © 2011-2022 走看看