美文网首页
understanding k8s objects

understanding k8s objects

作者: 小船儿飘阿飘 | 来源:发表于2019-08-25 16:24 被阅读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格式.

    相关文章

      网友评论

          本文标题:understanding k8s objects

          本文链接:https://www.haomeiwen.com/subject/ifxkectx.html