美文网首页
Kubernetes对象总结

Kubernetes对象总结

作者: 伊凡的一天 | 来源:发表于2018-03-07 16:56 被阅读456次

    学习本节内容前,希望你已经对Kubernetes中的Pod,ReplicaSet,Deployment等对象有了初步的了解,具体可以参考以下文章:

    在Kubernetes中,几乎一切都是对象。常见的对象包括:Node,Pod,Deployment,ReplicationController, ReplicaSet等等。我们通常通过在描述文件中指定kind来创建不同种类的对象。Kubernetes通过etcd存储我们创建的对象,从而使应用按照你期望的方式稳定运行在容器中。

    1. 理解Kubernetes对象

    Kubernetes对象本质上一种用于持久化的实体,Kubernetes使用这些持久化实体来描述一个集群。通常一个Kubernetes对象可以包含以下信息:

    • 需要运行的应用以及运行在哪些node上
    • 应用可以使用哪些资源
    • 应用运行时的一些配置,例如重启策略,升级以及容错性

    因此,一个Kubernetes对象,其实就是你意图的体现(通过.yaml文件来描述)。一旦你创建了一个对象后,Kubernetes会确保这个对象一直处于你所期望的状态。

    1.1 对象定义和对象状态

    每一个Kubernetes对象都包含两个属性:对象定义(Spec)和对象状态(Status)。Spec包含了你期望对象应有的状态,一般通过.yaml文件来描述。Status是该对象当前实际的状态。Kubernetes最大的魅力就在于,在任何状况下,它都会尽力确保对象的状态处于你所期望的状态。

    举个例子,一个Deployment类型的对象,代表了你在集群上运行的一个应用。当你创建这个对象的时候,指定了replicas=3,这意味着你希望这个应用以拥有三个副本的状态下运行。如果其中一个副本由于程序问题崩溃了,那么当前应用的Status就是副本数为2,这与你期望的状态(Spec: replicas=3)不相同,因此Kubernetes会自动为你新建一个副本,从而使此应用的实际状态与你期望的状态相符。

    2. 创建Kubernetes对象

    创建一个Kubernetes对象通常分为两步:

    1. 创建对象描述文件
    2. 通过kubectl命令行接口创建对象

    2.1 Kubernetes对象描述文件

    Kubernetes对象描述文件是一个必须满足yaml语法的文件。下面是一个用于描述Deployment类型的对象的例子:

    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

    一个描述文件通常包含以下字段:

    • apiVersion: 使用哪个版本的Kubernetes API来创建此对象
    • kind:要创建的对象类型,例如Pod,Deployment等
    • metadata:用于唯一区分对象的元数据,包括:name,UID和namespace
    • spec: 其它描述信息。不同类型的对象拥有不同的spec定义。详情参见API文档:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.9/

    2.2 kubectl命令行接口

    描述文件创建好之后,就可以通过kubectl命令行接口来创建对象了:

    kubectl apply -f nginx-deployment.yaml
    

    输出信息如下:

    deployment "nginx-deployment" created
    

    相关文章

      网友评论

          本文标题:Kubernetes对象总结

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