kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
Kubernetes 组件

kind :
kubernetes 内置一组控制器,运行在 kube-controller-manager 内。
Deployment 控制器和 Job 控制器(任务控制器)是 Kubernetes 内置控制器,
期望状态(Desired state)。Spec 通过创建对象,本质上是在告知 kubernetes 系统,所需要的集群工作负载看起来是什么样子的。
Spec 对象规约
Status 状态
apiVersion: apps/v1 # 创建该对象所使用的 kubernetes API 的版本kind: Deployment # 想要创建的对象类别metadata: # 帮助唯一性表示对象的一些数据,包括 name , UID 和 namespacename: nginx-deploymentspec:selector:matchLabels:app: nginxreplicas: 2 # tells deployment to run 2 pods matching the templatetemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
这组容器共享存储、网络、以及怎么样运行这些容器的声明。
Pod 被设计成支持形成内聚服务单元的多个协作过程(形式为容器),它是相对临时性的,用后即抛的一次性实体。它不是进程,而是容器运行的环境。
临时容器: 它们缺少对资源或执行的保证,并且用于不会自动重启, 因此不适用于构建应用程序。
用于故障时,交互式故障排查。
init 容器:应用容器运行前必须先运行完成的一个或多个初始化容器
应用容器:用于运行部分工作负载的容器
Deployments :负责描述 Deployment 中的目标状态,而 deployment 控制器,以受控制速率更改实际状态,使其变为期望状态。
StatefulSets: 用来管理有状态应用的工作负载 API 对象,用来管理某 Pod 集合的部署和扩缩,并为这些 Pod 提供持久存储和持久标示符。StatefulSet 为它们的每个 Pod 维护一个有粘性的 ID,这些 Pod 是基于相同的规约来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久的不变 ID。 稳定性,是这一个特点
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
