Red Hat OpenShift

Core Concepts

基本概念

  • Master

    1. Master监控其他Node和Pod
    2. 提供Web Console
  • Node

    1. Node是k8s的工作机器
    2. Node中运行Pod,pod可以在node中进行调配
    3. Node挂了,其他Node会启动其中的Pod
  • Lables

    1. 标签提供了一种简单的方法用于管理Kubernetes资源。它们有一对键值表示,且可以用于所有资源的分组
  • Selector

    1. Labels
    2. matchLabels
    3. matchExpressions

Pod

  • Pod概念
    1. Pod是一个抽象的概念,它包含一个或多个容器组成的容器组,还有这些容器共享的资源
      1. 共享的存储,例如Volume
      2. 网络,比如使用唯一的集群IP地址
      3. 如何运行容器的配置信息,比如镜像版本和容器端口
    2. 每个 Pod 可以在 Kubernetes 集群内拥有唯一的 IP 地址
    3. Pod 可以拥有多个容器。这些容器共享同一个端口空间,所以他们可以通过 localhost 交流(可想而知它们无法使用相同的端口)
    4. 与其他 Pod 内容器的交流可以通过结合 Pod 的 IP 完成
    5. Pod可以自动按默认设置创建,也可以通过kind pod自定义设置
    6. Init Containers: 在app容器启动前做准备工作的容器
      1. 一种作用是可以延迟app容器启动
  • spec.containers.env : 设置Containers环境变量
  • spec.restartPolicy
    1. Always
    2. OnFailure
    3. Never

Developer Guide

Pod Presets

  • 其他属性
    1. 阻止Pod被注入 : podpreset.admission.kubernetes.io/exclude: "true"

Deployment

  • apiVersion
    1. apps/v1beta1
  • selector : matchLables

ReplicaSet

  • apiVersion
    1. extensions/v1beta1
  • selector : matchLables

Secrets

ConfigMaps

其他

Node调配Pod

  • Deployment/RC:全自动调度
    1. Deployment/RC主要是自动部署应用的多个副本,并持续监控,以维持副本的数量。
    2. 默认是使用系统Master的Scheduler经过一系列算法计算来调度,用户无法干预调度过程与结果。
    3. 默认使用Deployment/RC
  • NodeSelector:定向调度
    1. 通过Node的标签和Pod的nodeSelector属性相匹配,可以达到将pod调度到指定的一些Node上。

    2. oc label nodes env=dev

    3. YAML

       kind: Deployment
      nodeSelector:
      env: 'dev
  • NodeAffinity:Node亲和性调度
  • PodAffinity:Pod亲和与互斥调度策略
    1. 可以根据节点上正在运行的其它Pod的标签来进行限制
  • Taints与Tolerations(污点与容忍)
    1. Taints与前面的Affinity相反——它让Node拒绝Pod的运行
  • DaemonSet:在每个Node上调度一个Pod
    1. 管理集群中每个Node上仅运行一份Pod的副本实例
    2. kind: DaemonSet
  • Job:批处理调度
    1. 定义批量任务(并行/串行启动多个计算进程去处理一批工作项)
    2. kind: Job
    3. https://www.jianshu.com/p/40050e2a05d4
  • Cronjob:定时任务
    1. kind: CronJob
    2. 类似Linux Cron的定时任务
上一篇:从1到n整数中1出现的次数


下一篇:在Ubuntu上为Android系统编写Linux内核驱动程序