Kubernetes对象
  
  在之前的文章已经讲到了很多Kubernets对象,包括pod,service,deployment等等。Kubernets对象是一种持久化,表示集群状态的实体。它是一种声明式的意图的记录,一般使用yaml文件描述对象,它使用Kubernetes对象来表示集群的状态,通过API/kubectl管理Kubernetes对象。
  
  name和uid
  
  在Kubernetes对象模型中,使用了name和uid作为对象的唯一标识,其中name在同一种对象中是唯一的,在不同类型对象可以是相同的;uid是唯一标识的。
  
  在API中对象的访问路径:/api/{version}/namespaces/{namespaxe/{object-kind}/name,比如:/api/v1/namespace/default/pods/hello-kubernetes
  
  在Kubernetes集群的整个生命周期内创建的每个对象实例都具有不同的UID.
  
  Namespace(名字空间)
  
  Namesapce,不仅仅是一个属性,本身也是一个object。
  
  Namesapce:用于将物理集群划分为多个虚拟集群。
  
  Namespace间完全隔离,因此也常被用来隔离不同的用户以及权限。
  
  Kubernetes内置了三个Namesapces:default、kube-system和kube-public,Node和PersistentVolume不属于任何namespace。
  
  Label(标签)
  
  Label用于建立集群对象之间的灵活、松耦合的多维关联关系。
  
  一个label是一个键-值对,其中的key、value均由用户自己定义。
  
  lable可以附着在任何对象上,每个对象也可以有任意个标签。标签可在对象定义时附加上,也可以通过命令动态管理标签。
  
  label可以将有组织目的的结构映射到集群对象上,从而形成一个与现实世界管理结构同步对应松耦合的、多维的对象管理结构。
  
  通过lable selector 查询和筛选建立对象间的关系的。
  
  如上图所示,有两个service1和 service2,对应的pod有标签release:stable和标签release:rc-1,通过selector,就可以筛选出相应的标签的pod。而pod由通过nodeselector筛选出不同环境的node。
  
  Annotations
  
  Annotations:可以将任意非标识性元数据附加到对象上。
  
  Annotations也是以键值对的形式呈现。
  
  工具和库可以检索并使用这些Annotations元数据
  
  将数据作为Annotations附着在对象上,有利于创建一些用于部署、管理和做内部检查的共享工具和客户端。
  
  Kubernetes对象分类
  
  常用的对象分类有以下几种:
  
  workload类,即工作负载类
  
  pod
  
  controller
  
  deployment
  
  stateful
  
  daemonset
  
  job
  
  discovery&www.meiwanyule.cn loadbalance类,与服务相关的对象
  
  service
  
  endpoint
  
  ingress
  
  config&storage,向应用初始化配置话信息
  
  configmap
  
  secret
  
  volume
  
  persistentVolumeClaim
  
  cluster,集群类对象
  
  Node
  
  namespace
  
  persitenceVolume
  
  clusterRole
  
  ClusterRoleVindeing
  
  ResoruceQuota
  
  工作负载,以pod为中心
  
  pod是一个有特定关系的容器集合。
  
  Pod是集群中可以创建和部署的最小且最简单的Kubernetes对象的单元。
  
  Pod也是一种封装。它封装了应用容器,存储资源、独立的网络IP以及决定容器如何运行的策略选项。
  
  每个pod中预置了一个Pause容器,其namespace、IPC资源、网络和存储资源被pod内其它容器共享。Pod中的所有容器紧密协作,并且作为一个整体被管理、调度和运行。
  
  pod的生命周期
  
  pod是一个非持久化实体。
  
  如图所示,pod有如下几个生命周期:
  
  pending,即挂起,即pod对象已经被kubernetes所接受,但有一个或者多个pod尚未创建。
  
  running,运行中,pod已经绑定到node上,所有pod中所有容器已经创建
  
  succeed,成功状态,pod的所有的容器已经成功终止。
  
  failed,失败状态,即有最少又一个容器正常退出。
  
  service
  
  pod是一个非持久化的实体,pod随时都有可能被销毁掉或者重新创建,所以pod的所在节点是不确定的,为了防止因pod的提供服务不确定性而采用了地址唯一的service用来提供服务,service可以通过负载均衡的调用它背后的pod对象,从而提供稳定的服务。
  
  servie是与云原生应用中“微服务”概念一一对应。
  
  kubernetes集群为每一个service分配一个集群唯一的IP地址,在 service的生命周期内,该ip地址不变;在内部DNS指出下,轻松实现服务发现机制。
  
  service通过label selector关联到实际支撑业务运行的pod上,并通过集群内置的服务负载均衡分发到后端pod上。
  
  通过nodeport或者设置loadbalance机制实现集群外部对service的访问。
  
  controllers
  
  controller是kubernetes的核心对象之一。
  
  controller用于保证集群内一组pod能始终按照某种期望的状态正常运行
  
  状态包括:Pod副本数量、节点选择、资源约束、持久化数据运维等
  
  kubernetes支持多种controller,常用的deployment、replicaseet、statefulset、daemonset等。
  
  ReplicaSet
  
  ReplicaSet:确保健康Pod的副本始终满足用户定义的数量。
  
  前身是ReplicationController(www.dasheng178.com)rc
  
  相比rc,增加了集合式label selector的支持。
  
  支持单独使用,但更多隐藏在Deployment控制器后面,由deployment自动管理。
  
  Deployment
  
  Deployment:为pod和 ReplicaSet提供声明式的定义。
  
  用户在deployment文件中描述期望状态,Deployment www.ysyl157.com Controller就会自动将Pod和Replica Set的实际状态改变到期望状态。
  
  Deployment支持Pod的滚动更新,并自动管理背后的ReplicaSet
  
  Deployment支持将Pod滚动到任意版本。
  
  StatefulSet
  
  StatefulSet:提供对有状态应用的部署和控制的支持,1.9版本GA,正式毕业。可以用于生产环境中。
  
  使用场景:文档的持久化存储,稳定的网络标志,有序部署有序扩展,有序收缩有序删除,有序自动滚动升级等。
  
  Pod的存储必须由PersistentVolume Provisioner根据请求的Storage Class 进行配置,或由管理员预先配置好。
  
  考虑数据安全性,伸缩或删除StatefulSey不会删除关联的存储;另外StartefulSet目前要求Headless Service 负责Pod的网络身份,用户有责任创建此服务。
  
  DaemonSet
  
  保证在每个Node上都运行一个Pod副本。
  
  适用于系统Daemon程序、系统跟踪、日志收集等
  
  Kubernetes1.6之后,可设置更新策略:支持滚动更新
  
  可指定Node:nodeSelector、nodeAffinity、www.mingrenf178.com podAffinity
  
  ConfigMap
  
  常用来向pod提供非敏感的配置信息。
  
  ConfigMap用于保存配置数据的键值对,可以用来保存单个,也可以用来保存配置文件。
  
  ConfigMap可以使用命令行基于字面值、文件或者目录来创建或者通过configmap对象定义文件创建。
  
  ConfigMap可以通过三种形式在pod中使用:环境变量、容器命令行参数货以文件形式通过数据卷插件挂载到pod中。
  
  Secret
  
  secret解决的事集群内密码、token、密钥等敏感数据的配置问题。
  
  常用于与ServiceAccount关联,存储在tmpfs文件系统中,Pod删除后sercret文件也会对应删除
  
  支持opaque,kubernetes.io/Service www.mcyllpt.com/ Account,kubernetes.io/dockerconfigjson三种类型。
  

Kubernetes对象的更多相关文章

  1. Kubernetes对象之Service

    系列目录 通过ReplicaSet来创建一组Pod来提供具有高可用性的服务.虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题: Pod IP仅仅是集群内可见的虚拟IP,外部无法访问. ...

  2. Kubernetes 对象管理的三种方式

    Kubernetes 中文文档 1. Kubernetes 对象管理的三种方式对比 Kubernetes 中的对象管理方式,根据对象配置信息的位置不同可以分为两大类: 命令式:对象的参数通过命令指定 ...

  3. Kubernetes对象之Pod

    系列目录 Pod是Kubernetes调度的最小单元.一个Pod可以包含一个或多个容器,因此它可以被看作是内部容器的逻辑宿主机.Pod的设计理念是为了支持多个容器在一个Pod中共享网络和文件系统 因此 ...

  4. Kubernetes对象之ReplicaSet

    系列目录 说到ReplicaSet对象,得先说说ReplicationController(简称为RC).在旧版本的Kubernetes中,只有ReplicationController对象.它的主要 ...

  5. kubernetes对象之secrets

    系列目录 Secrets是Kubernetes中一种对象类型,用来保存密码.私钥.口令等敏感信息.与直接将敏感信息嵌入image.pod相比,Secrets更安全.更灵活,用户对敏感信息的控制力更强. ...

  6. kubernetes对象之Volume

    系列目录 概述 Volume是对各种存储资源的抽象.虚拟化.为管理.控制.使用存储资源提供统一接口.Openstack中的volume为虚拟机提供存储,Docker中的volume为容器提供存储.因为 ...

  7. kubernetes对象之Ingress

    系列目录 概述 向外网暴露集群内服务,以使客户端能够访问,有以下几种方法,本文重点描述Ingress. LoadBalancer LoadBalancer一般由云服务供应商提供或者用户自定义,运行在集 ...

  8. Kubernetes对象中的PersistentVolume、PersistentVolumeClaim和StorageClass的概念关系

    Kubernetes容器要持久化数据,离不开volume,k8s的volume和Docker原生概念中的volume有一些差别,不过本次不讲这个,本次要明确的是k8s持久化数据用到的几个对象Persi ...

  9. kubernetes对象之deployment

    系列目录 简述 Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用.典型的应 ...

随机推荐

  1. 更改IDEA默认使用JDK1.5编译项目

    在使用IDEA编译项目时,总是提示我编译失败,有些功能是在1.5之后的版本才支持.废了好大的功夫才编译成功.下面呢,就是更改编译的过程了! 一.初步更改 使用快捷键Ctrl+Alt+Shift+S打开 ...

  2. idea 发布和本地测试问题

    1.maven本地打包成jar 提示[错误: 找不到或无法加载主类]修改 配置maven ---->Runner---->VM Optins [-DarchetypeCatalog=loc ...

  3. 由DAG到背包问题——记忆化搜索和递推两种解法

    一.问题描述 物品无限的背包问题:有n种物品,每种均有无穷多个.第 i 种物品的体积为Vi,重量为Wi.选一些物品装到一个容量为 C 的背包中,求使得背包内物品总体积不超过C的前提下重量的最大值.1≤ ...

  4. 一、submit和button区别

    一.submit和button区别 一.HTTP方法:GET.POST

  5. Synchronized关键字整理

    Synchronized关键字整理 作用:能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全效果. 两个用法: 1.对象锁: 包括方法锁(默认锁对象为this当前实例对象)和同步代码块 ...

  6. java实现中文或其他语言及标点符号等转换成unicode字符串,或unicode的16进制码转换回文字或符号等

    package org.analysisitem20181016.test; public class Code128Test2019052201 { public static final Stri ...

  7. touch-action css属性 滚动和缩放手势

    CSS 属性 touch-action 用于指定某个给定的区域是否允许用户操作,以及如何响应用户操作(比如浏览器自带的划动,缩放等) 默认情况下,平移(滚动) 和 缩放手势由浏览器专门处理.该属性用于 ...

  8. javascript设计模式(张容铭) 第14章 超值午餐-组合模式 学习笔记

    JS 组合模式更常用于创建表单上,比如注册页面可能有不同的表单提交模块.对于这些需求我们只需要有基本的个体,然后通过一定的组合即可实现,比如下面这个页面样式(如图14-2所示),我们来用组合模式实现. ...

  9. UVA-1220-Party at Hali-Bula && UVA-1218-Perfect Service(树形DP)

    UVA-1220-Party at Hali-Bula 题意: 一个公司员工要举行聚会,要求任意一个人不能和他的直接上司同时到场,一个员工只有一个支系上司,现在求最多有多少人到场,并且方案是否唯一(紫 ...

  10. Luogu P4231 三步必杀 (差分)

    目录 题目 题解 题目 题目链接 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼 ...