zoukankan      html  css  js  c++  java
  • centos7下kubernetes(2。kubernetes---start,重要概念)

    Cluster

    cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用

    Master

    Master是cluster的大脑,他的主要职责是调度,即决定应用在哪里运行。master运行linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个master。

    Node

    Node的职责是运行容器应用。Node有master管理,Node负责监控并汇报容器的状态,并根据master的要求管理容器的生命周期。Node运行在linux操作系统,可以是物理机或者虚拟机。

    上一节交互式的教程中我们创建的clusyer只有一个主机host01.它既是master也是node

    Pod

    pod是kubernetes的最小工作单元。每个pod包含一个或者多个容器。pod中的容器会作为一个整体被master调度到一个node上运行

    kubernetes引入pod主要基于下面两个方面

    1.可管理性

    有些容器本来就是需要紧密联系,一起工作。pod提供了比容器更高层次的抽象,将他们封装到一个部署单元中。kubernetes以pod为最小单位进行调度,扩展,共享资源,管理生命周期

    2.通信和资源共享

    pod中的所有容器使用同一个网络namespace,即相同的IP地址和port空间。他们之间通过localhost通信。同样的,这些容器可以共享存储,当kubernet挂载volume到pod,本质上是将volume挂载到pod中的每一个容器

    pods两种使用方法:

    1.运行单一容器。

    one-container-per-pod是kubernetes最常见的模型,这种情况下,只是将单个容器简单封装成pod。即使只有一个容器,kubernetes管理的也是pod,而不是直接管理容器

    2.运行多个容器

    哪些容器应该放到一个pod中?

    答案是:这些容器联系必须非常紧密,而且需要直接共享资源

    举个例子:

    下面这个pod包含两个容器:file puller和web server

    file puller会定期从外部的content manager中拉取最新的文件,将其存放在共享的volume中。web serverv从volume读取文件,响应consumer的请求。

    这两个容器是紧密协作得,他们一起为consumer提供最新得数据;同时他们也通过volume共享数据。所以放到一个pod是合适得

    再看一个反例:是否需要将tomcat和mysql放到一个pod中?

    tomcat从mysql中读取数据,他们之间需要协作,但还不至于需要放到一个pod中一起部署,一起启动,一起停止。他们之间是通过JDBC交换数据,并不是直接共享存储,所以放到各自得pod中更合适。

    Controller

    kubernetes通常不会直接创建pod,而是通过contorller来管理pod。controller中定义了pod得部署特性,比如有几个副本,在什么样得node上运行等。为了满足不同得业务场景,kubernetes提供了多种controller,包括deployment,replicaset,daemonset,statefuleset,job等。

    Deployment

    是最常用的controller,比如前面的教程中就是通过创建deployment来部署应用的。deployment可以管理POd的多个副本,并确保Pod按照期望的状态运行。

    Replicaset

    实现了pod多副本管理。使用dployment时会自动创建replicaset,也就是说deployment是通过replicaset来管理pod的多个副本的,我们通常不需要直接使用replicaset

    daemonset

    用于每个node最多只运行一个pod副本的场景。正如其名称所揭示,daemonset用于daemon

    statefuleset

    能够保证pod的每个副本在整个生命周期中名称是不变的。而其他controller不提供这个功能,当某个pod发生故障需要删除并重启的时候,pod的名称会发生变化。同事statuefulset会保证副本按照固定顺序启动,更新或者删除。

    job

    用于运行结束就删除的应用,而其他controller中的pod通常是长期运行的状态

    service

    定义外界访问一组特定的pod的方式。service有自己的端口和IP。service为pod提供了负载均衡

    Namespace

    可以将一个物理的cluster逻辑上划分成多个虚拟的cluster,每个cluster就是一个namespace。不同的namespace里的资源是完全隔离的

    kubernetes默认创建了两个namespace

    default  --创建资源时如果不指定,将被放到这个namespace中。

    kube-system --kubernetes自己创建的系统资源将放到这个namespace中

  • 相关阅读:
    人生转折点:弃文从理
    人生第一站:大三暑假实习僧
    监听器启动顺序和java常见注解
    java常识和好玩的注释
    182. Duplicate Emails (Easy)
    181. Employees Earning More Than Their Managers (Easy)
    180. Consecutive Numbers (Medium)
    178. Rank Scores (Medium)
    177. Nth Highest Salary (Medium)
    176. Second Highest Salary(Easy)
  • 原文地址:https://www.cnblogs.com/lkun/p/8066313.html
Copyright © 2011-2022 走看看