understanding k8s objects

2019-08-25  本文已影响0人  小船儿飘阿飘

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格式.

上一篇 下一篇

猜你喜欢

热点阅读