zoukankan      html  css  js  c++  java
  • k8s 集群基本概念

    一、概述:

      kubernetes是google开源的容器集群管理系统,提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,简称:k8s(k与s之间有8个字母)

    二、基本概念

      Pod:若干相关容器的组合,Pod包含的容器运行在同一host上,这些容器使用相同的网络命令空间、IP地址和端口,相互之间能通过localhost来发现和通信。另外,这些容器还可共享一块存储卷空间。在k8s中创建,调度和管理的最小单位就是Pod,而非容器,Pod通过提供更高层次的抽象,提供了更加灵活的部署和管理模式;

      • k8s的基本操作单元,一个Pod由一个或多个容器组成,通常pod里的容器运行的相同的应用;
      • 同一pod包含的容器运行在同一host上,作为统一管理单元:
    •         同一pod 共享着相同的volumes, network命名空间, ip和port空间,这是通过Mapped Container做到的;
        • pid ns:处于同一pod中的应用可以看到彼此的进程
        • network ns:处于同一pod中的应用可以访问一样的ip和port空间
        • ipc ns:处于同一pod的应用可以用systemV ipc 或者posix消息队列进行通信
        • UTC ns:处于同一pod应用共用一个主机名
      ReplicationController (RC)
      • RC是用来管理Pod的,每个RC由一个或多个Pod组成;在RC被创建之后,系统将会保持RC中的可用Pod的个数与创建RC时定义的Pod个数一致,如果Pod个数小于定义的个数,RC会启动新的Pod,反之则会杀死多余的Pod。
      • RC通过定义的Pod模板被创建,创建后对象叫做Pods(也可以理解为RC),可以在线修改Pods的属性,以实现动态缩减、扩展Pods的规模
      • RC通过label关联对应的Pods,通过修改Pods的label可以删除对应的Pods在需要对Pods中的容器进行更新时,RC采用一个一个替换原则来更新整个Pods中的Pod;
      • reschudeling: 维护pod副本,“多退少补”;即使是某些minion宕机

      • scaling:通过修改rc的副本数来水平扩展或者缩小运行的pods
      • Rolling updates:一个一个地替换pods来rolling updates服务;
      • multiple release tracks:如果需要在系统中运行multiple release 服务,replication controller使用labels来区分multiple release tracks;

      Label

      • Label是用于区分Pod、Service、RC的key/value键值对
      • Pod、Service、RC可以有多个label,但是每个label的key只能对应一个value
      • 整个系统都是通过Label进行关联,得到真正需要操作的目标

         Service

        Service也是k8s的最小操作单元,是真实应用服务的抽象

        Service通常用来将浮动的资源与后端真实提供服务的容器进行关联

        Service对外表现为一个单一的访问接口,外部不需要了解后端的规模与机制

        Service是定义在集群中一组运行Pod集合的抽象资源,它提供了所有相同的功能。当一个Service资源被创建后,将会分配一个唯一的IP(也叫做集群IP),这个IP地址将存在于Service的整个生命资源,Service一旦被创建,整个IP无法进行修改。

    Pod可以通过Service进行通信,并且所有的通信将会通过Service自动负载均很到所有的Pod中的容器。

    二、kubernetes组成 

      k8s主要包括:

        kubectl 客户端命令行工具:

          将接收的命令,发送给kube-apiserver,作为对整个平台操作的入口。

        kube-apiserver REST API服务:

          作为整个系统的控制入口,以REST API的形式公开,可以横向扩展在高可用的架构中。

        kube-controller-manager 多个控制器的合体,用来执行整个系统中的后台任务,多个控制进程的合体:

      • Node Controller 负责整个系统中node up 或down的状态的响应和通知
      • Replication Controller 负责维持Pods中的正常运行的Pod的个数
      • Endpoints Controller 负责维持Pods和Service的关联关系
      • Service Account & Token Controllers负责为新的命名空间创建默认的账号和API访问的Token    

        kube-scheduler 任务调度、命令下发

          负责监视新创建的Pods任务,下发至未分配的节点运行该任务

        kube-proxy 网络代理转发:

          kube-proxy运行在每个节点上,负责整个网络规则的连接与转发,使k8s中的service更加抽象化

        kubelet 容器的管理

          kubelet运行在每个节点上,作为整个系统的agent,监视着分配到该节点的Pods任务,负责挂载Pods所依赖的卷组,下载Pods的秘钥,运行Pods中的容器(通常是docker),周期获取所有容器的状态,通过导出Pod和节点的状态反馈给REST系统;

        etcd 信息存储

        flannel IP地址的分配

    三、k8s架构图

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/caodneg7/p/10139826.html
Copyright © 2011-2022 走看看