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. YAMLnode

      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的定時任務
相關文章
相關標籤/搜索