k8s对象是k8s系统中的持久性实体,他使用这些实体去表示集群状态,描述为:
正在运行的容器化应用程序(以及在哪个节点)
应用可用的资源
有关这些应用程序的策略,比如升级策略,重启策略,容错
一个k8s对象是一个”期望完成记录“,创建一个对象后,K8s系统将持续工作确保你的对象存在,你需要通过创建对象告诉k8s集群你希望集群的工作负载是什么样,这是你集群所需的状态。
使用K8s对象,不论是创建,修改,或删除,都需要使用k8SAPI,当你使用kubectl命令行时,CLI为您提供必要的Kubernetes API调用。您还可以使用客户端库在您自己的程序中直接调用Kubernetes API。
spec and status
每个K8S对象包含两个嵌套字段,这两个字段管理对象的配置,分别是spec和status。spec由用户提供,描述你期望的对象状态即拥有什么特征。status描述对象当前的状态,由k8s系统提供并持续更新,k8s Control Plane将管理这个对象的当前状态去匹配你提供的期望状态。
创建一个Deployment时,提供期望状态及基础信息(比如name),当你使k8sApi去创建对象时,请求中必须包含基础信息作为Json,通常,在yaml文件中向kubectl提供信息,kubectl在发出请求时将信息转为json
示例:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
使用
Kubectl create -f nginx.yaml --record
或kubectl apply -f nginx.yaml --record
都可以创建对象
Required Fields
apiVersion: 标识选择的版本
kind: 要创建的对象类型
metadata: 用来唯一确认对象的数据,包括name, UID,和namespace
你也需要去定义K8sSpec,对于每种类型的对象,对象规范字段是不同的。并包含特定于该对象的嵌套字段, 这里https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/可以帮助你了解所有K8S可创建的对象的spec格式.
网友评论