Kubernetes 常用API介绍

379 阅读4分钟

Kubernetes简介

Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。支持服务发现和负载均衡、存储编排、自动部署和回滚、自动完成装箱计算、自我修复、秘钥配置和管理等

Kubernetes基本概念

  • Pod

    Pod是Kubernetes中创建、管理的最小可部署单元。Pod是一组容器,这些容器共享网络、存储、以及运行声明。Pod中的内容总是并置并且一起调度,在共享上下文中运行。通常不需要直接创建、一般通过Deployment或者Job这类工作负载创建。

  • Workload

    工作负载是Kubernetes上运行的应用程序。无论工作负载是单个还是多个组件,都可以使用一组Pod中运行它。 通常不需要用户直接管理每个Pod,而是使用工作负载资源来替用户管理一组Pod。这些工作负载资源通过配置 控制器 来确保正确类型的、处于运行状态的 Pod 个数是正确的,与用户所指定的状态相一致。 有若干内置工作负载资源可供使用:Deployment、ReplicaSet、StatefulSet、DaemonSet、Job、CronJob。

  • Deployment

    只需要在Deployment定义目标状态,Deployment控制器会将当前状态改变为目标状态。

  • Job

    一个Job创建一个或者多个Pod,会不断重试执行Pod,直到指定数量Pod成功终止。

  • Service

    将运行在Pod上的应用程序公开为网络服务的抽象方法

  • PersistentVolume,PV

    持久卷是集群中的一块存储,可以由管理员事先制备,或者使用存储类动态制备。

  • PersistentVolumeClaim,PVC

    持久卷申领是用户对存储的请求。与Pod相似,Pod会耗用节点资源,而 PVC申领会耗用PV资源。

Kubernetes网络模型

集群中的每个Pod都会获取自己独一无二的IP地址,在这个网络模型里,Pod可以看做是虚拟机或者物理主机;而Pod内部的容器共享Pod网络命名空间(包括IP和MAC地址),且都可以使用localhost访问其他内部容器端口。

常用api接口

Kubernetes api是通过HTTP提供的基于资源的(Restful)编程接口。它支持通过标准HTTP动词(POST、PUT、DELETE、GET)检索、创建、更新和删除主要资源。

Pod

  • 查询指定Pod

    GET /api/v1/namespaces/{namespace}/pods/{name}

  • 查询指定Pod日志

    GET /api/v1/namespaces/{namespace}/pods/{name}/log

    查询参数:container 等

  • 查询指定Pod状态

    GET /api/v1/namespaces/{namespace}/pods/{name}/status

  • 查询或监测Pod列表

    GET /api/v1/namespaces/{namespace}/pods

    查询参数:fieldSelector、labelSelector 、limit 、watch 等

  • 创建Pod

    POST /api/v1/namespaces/{namespace}/pods

    body: Pod对象

  • 替换指定Pod

    PUT /api/v1/namespaces/{namespace}/pods/{name}

    body:Pod对象

  • 删除Pod

    DELETE /api/v1/namespaces/{namespace}/pods/{name}

    body:DeleteOptions对象

  • 删除Pod集合

    DELETE /api/v1/namespaces/{namespace}/pods

    body:DeleteOptions对象

    查询参数:fieldSelector 、labelSelector、gracePeriodSeconds 等

Job

  • 查询指定Job

    GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}

  • 查询指定Job状态

    GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

  • 查询或监测Job列表

    GET /apis/batch/v1/namespaces/{namespace}/jobs

    查询参数:fieldSelector、labelSelector 、limit 、watch 等

  • 创建Job

    POST /apis/batch/v1/namespaces/{namespace}/jobs

    body: Job对象

  • 替换指定Job

    PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    body: Job对象

  • 删除Job

    DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}

    body:DeleteOptions对象

  • 删除Job集合

    DELETE /apis/batch/v1/namespaces/{namespace}/jobs

    body:DeleteOptions对象

    查询参数:fieldSelector 、labelSelector、gracePeriodSeconds 等

Service

  • 查询指定的Service

    GET /api/v1/namespaces/{namespace}/services/{name}

  • 查询指定的Service的状态

    GET /api/v1/namespaces/{namespace}/services/{name}/status

  • 查询或监测Service列表

    GET /api/v1/namespaces/{namespace}/services

    查询参数:fieldSelector、labelSelector 、limit 、watch 等

  • 创建Service

    POST /api/v1/namespaces/{namespace}/services

    body: Service对象

  • 替换指定Service

    PUT /api/v1/namespaces/{namespace}/services/{name}

    body: Service对象

  • 删除Service

    DELETE /api/v1/namespaces/{namespace}/services/{name}

    body:DeleteOptions对象

  • 删除Service集合

    body:DeleteOptions对象

    查询参数:fieldSelector 、labelSelector、gracePeriodSeconds 等

PersistentVolumeClaim

  • 查询指定PersistentVolumeClaim

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

  • 查询指定PersistentVolumeClaim状态

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status

  • 查询或监测PersistentVolumeClaim列表

    GET /api/v1/namespaces/{namespace}/persistentvolumeclaims

    查询参数:fieldSelector、labelSelector 、limit 、watch 等

  • 创建PersistentVolumeClaim

    POST /api/v1/namespaces/{namespace}/persistentvolumeclaims

    body: PersistentVolumeClaim对象

  • 替换指定的 PersistentVolumeClaim

    PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    body: PersistentVolumeClaim对象

  • 删除PersistentVolumeClaim

    DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    body:DeleteOptions对象

  • 删除 PersistentVolumeClaim 的集合

    DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims

    body:DeleteOptions对象