Kubernetes API 使用指南

Kubernetes API 使用文档
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/

API 概述

※ 资源分类

这是对 Kubernetes API 及其主要功能提供的基本资源类型的高级概述。

  • Workloads: 用于在集群中管理和运行容器;
  • Discovery & LB:用于将 Workloads “缝合”到一个可从外部访问的负载均衡的服务中;
  • Config & Storage:用于将初始化数据注入到应用程序中,并保留容器外部的数据;
  • Cluster:用于定义如何配置集群,这些通常仅由集群运营商使用;
  • Metadata:用于配置群集内其他资源的行为,例如用于扩展 Workloads 的 Horizo​​ntalPodAutoscaler

※ 资源对象

资源对象通常包含3个组件:

  • ResourceSpec:这由用户定义并描述系统所期望的状态,在创建或更新对象时填写;
  • ResourceStatus:这由服务器填写并报告系统的当前状态,只有 Kubernetes 组件才能填写此内容;
  • Resource ObjectMeta:这是关于资源的元数据,例如 name / type / api version / annotations / labels,包含可能由后端用户和系统更新的字段(如 annotations)

※ 资源操作

大部分资源提供如下操作:

▶ Create

Create 操作会在存储后端创建资源。资源创建后,系统将应用所期望的状态。

▶ Update

更新有 2 种形式:ReplacePatch

Replace:替换资源对象将通过提供的 spec 替换现有的 spec 来更新资源。对于读写操作,这是安全的,因为如果资源在读和写之间被修改,则会发生乐观锁定失败。注意:ResourceStatus 将被系统忽略,并且不会被更新,要更新状态,必须调用特定的状态更新操作。

注意:替换资源对象可能不会立即传播到下游对象。例如,替换 ConfigMap 或 Secret 资源不会导致所有 Pod 看到更改,除非 Pod 在带外重新启动。

Patch:Patch 会更改特定字段,如何合并更改是每个字段定义的。列表可以被替换或合并,合并列表不会保留排序。

Patch 操作永远不会导致乐观锁定失败,并且最后一次写入会获胜。如果在更新之前未读取完整状态,或者乐观锁定失败不可取,则建议使用 patch 操作。修补复杂 types、arrays 和 maps 时,如何应用修补程序是以每个字段为基础定义的,并可以替换字段的当前值,也可以将内容合并到当前值中。

▶ Read

读取有 3 种方式:GetListWatch

Get: 按名称检索特定的资源对象;

List:检索命名空间内特定类型的所有资源对象,并且结果可以限制为与选择器查询结果匹配的资源;

List All Namespaces:像 List 一样,但是跨所有命名空间检索资源;

Watch:Watch 将在对象更新时汇出结果,类似于回调,watch 用于响应资源的更改。

▶ Delete

Delete 将删除资源。根据特定的资源,子对象可能会或可能不会被服务器当做垃圾收集,详情请参阅特定资源对象的注释。

▶ 额外操作

资源可以定义特定于该资源类型的附加操作。

Rollback:将 PodTemplate 回滚到以前的版本,仅适用于某些资源类型;

Read / Write Scale:读取或更新给定资源的副本数量,仅适用于某些资源类型;

Read / Write Status:读取或更新资源对象的状态,状态只能通过这些更新操作进行更改。

WORKLOADS

Workloads 资源负责管理和运行集群上的容器。容器(Containers)由控制器(Controllers)通过 Pod 创建,Pods 运行容器并提供环境依赖,如注入到容器中的共享或永久存储卷、配置或加密数据。

最常见的控制器是:

  • Deployments 无状态持久应用(如 http servers)
  • StatefulSets 有状态持久应用(如 database)
  • Jobs 运行至完成的应用 (如 batch jobs)

DISCOVERY & LOAD BALANCING

Discovery and Load Balancing 负责将 Workloads “缝合” 到一个可从外部访问的负载均衡的服务中。默认情况下,Workloads 只能在群集内访问,它们必须通过 LoadBalancerNodePort Service 暴露到外部。对于开发,可以使用 kubectl proxy 命令通过代理 api 主机访问内部可访问的 Workloads 。

常用的资源类型:

  • Services 提供跨多个 Workload 副本的负载均衡的单个 IP 端点。
  • Ingress 提供路由到一个或多个服务的https(s) 端点

CONFIG & STORAGE

Config and Storage 资源负责将数据注入到应用程序中,并保留容器外部的数据。

常用的资源类型:

  • ConfigMaps 通过环境变量、命令行参数或文件提供注入应用的 K-V 键值对
  • Secrets 通过文件提供注入应用的二进制数据
  • Volumes 提供容器外部的文件系统。 可能在同一个 Pod 中跨 Container 容器共享,并且其寿命持续超出 Container 或 Pod。

METADATA

Metadata resources 负责集群内其他资源的行为。

常用的资源类型:

API 调用方式

▶ kubectl

示例:创建 Deployment

$ echo 'apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
' | kubectl create -f -

yaml 文件编写的规则拆解如下图:

其他资源的创建或其他操作,都可以按照这种方式来操作。

▶ curl

需要使用 kubectl proxy

$ kubectl proxy
$ curl -X POST -H 'Content-Type: application/yaml' --data '
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
' http://127.0.0.1:8001/apis/apps/v1/namespaces/default/deployments
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容