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对象