zoukankan      html  css  js  c++  java
  • Kubenetes 核心概念理解

    Kubernetes 是一个具有自动控制 、自动纠错功能的资源管理系统

      可以把 Node , Pod , Replication Controller , Service 等都看做是一种 "资源对象"

      通过Kubernetes提供的 kubectl 工具  or API编程调用 对这些资源对象进行 增、删、改、查 等操作 并将其在 etcd 中持久化存储

      Kubernetes 其实是一个高度自动化的资源控制系统,它通过跟踪对比etcd库里保存的“资源期望状态” 与 当前环境中的“实际资源状态”的差异

      来实现自动控制和自动纠错的高级功能。

    ---------------------------------------------------

    Master

      负责整个集群的管理和控制

      kube-apiserver

      kube-controller-manager

      kube-scheduler

    Etcd

    -------------------------------------------------------

    Node

      kubelet

      kube-proxy

      Docker Engine

    -------------------------------------------------------

    Label

      相当于标签

      通过

    ------------------------------------------------------

    Deployment

      deployment 和 RC 的相似度超过90%

      可以随时知道当前Pod "部署"的进度

    ----------------------------------------------------------

    Service

      对应于微服务架构中的一个"微服务"

     ------------------------------------------------------------------------------------------------------

      Volume (存储卷)

    volume是pod中能够被多个容器访问的共享目录

    volume定义在Pod上,然后被一个Pod里的多个容器挂载到具体的目录下

    volume与Pod的生命周期相同,但与容器的生命周期不相关,当容器终止或者重启时,volume中的数据也不会丢失。

    Kubernetes支持 GlusterFS 、Ceph等先进的分布式文件系统.

    volume类型

    1,emptyDir

      emptyDir Volume是在Pod分配到Node时创建的。初始内容为空,无需指定宿主机上对应的目录文件,因为这是kubernetes自动分配的一    个目录,当Pod从Node上移除时,emptyDir中的数据也会被永久删除。

    2,hostPath

      hostPath是在Pod上挂载宿主机上的文件或目录

      适用场景:(1) 容器应用程序生成的日志文件需要永久保存时,可以使用宿主机的高速文件系统存储

        (2)需要访问宿主机上Docker引擎内部数据结构的容器应用时,可以通过定义hostPath为宿主机/var/lib/docker 目录

                         ,使容器内部应用可以直接访问Docker的文件系统

    3,gcePersistentDisk

      google公有云提供的永久磁盘

    4,awsElasticBlockStore

              亚马逊的公有云提供的EBS Volume

    5, NFS

      volumes:

       - name: nfs

                 server:  nfs-server.localhost

                  path: "/ "

    其他

    ---------------------------------------------------------------------------

    Persistent Volume

      PV 可以理解成 Kubernetes 集群中的某个网络存储中对应的一块存储

      PV 只能是网络存储,不属于任何Node,但可以在每个Node上访问

      PV 并不是定义在Pod上的,而是独立于Pod之外定义

      PV 目前只有几种类型: GCE Persistent Disks , NFS , RBD , iSCSCI , AWS ElasticBlockStore ,Gluster FS

    PV 的 accessMode属性:

      ReadWriteOnce: 读写权限,并且只能被单个Node 挂载

      ReadOnlyMany: 只读权限,允许被多个Node挂载

      ReadWriteMany: 读写权限,允许被多个Node挂载

    PVC

      如果某个Pod想申请某种条件的PV,则首先要定义一个PersistentVolumeClaim(PVC)对象

    PV是有状态的对象,有以下几种状态:

    Availabel: 空闲状态

    Bound: 已经绑定到某个PVC上

    Released: 对应的PVC已经删除,但资源还没有被收回

    Failed: PV自动回收失败。

     ----------------------------------------------------------------

    Namespace

    Namespace在很多情况下用于   实现多租户的资源隔离。

    Namespace通过将集群内部的资源对象 “分配” 到不同的Namespace 中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源同时还能被分别管理。

    kubectl get namespaces

    如果不特别指明namespace ,则用户创建的Pod , RC , Service 将都被系统创建到default的namespace中。

    kubectl get pods --namespace=development

  • 相关阅读:
    linux 声音大小调整的命令
    Linux下cron的使用
    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
    yii 删除内容时增加ajax提示
    git 忽略权限
    yii CGridView colum 链接
    yii cgridview 对生成的数据进行分页
    yii cgridview 默认的筛选如何做成选择框
    db2 Reorgchk:重组检查,是否需要重组
    Linux 下文件
  • 原文地址:https://www.cnblogs.com/li-tian-jun/p/10649720.html
Copyright © 2011-2022 走看看