Red Hat OpenShift
时间 2019-11-19
标签
red
hat
openshift
Core Concepts
基本概念
- Master
- Master监控其余Node和Pod
- 提供Web Console
- Node
- Node是k8s的工做机器
- Node中运行Pod,pod能够在node中进行调配
- Node挂了,其余Node会启动其中的Pod
- Lables
- 标签提供了一种简单的方法用于管理Kubernetes资源。它们有一对键值表示,且能够用于全部资源的分组
- Selector
- Labels
- matchLabels
- matchExpressions
Pod
- Pod概念
- Pod是一个抽象的概念,它包含一个或多个容器组成的容器组,还有这些容器共享的资源
- 共享的存储,例如Volume
- 网络,好比使用惟一的集群IP地址
- 如何运行容器的配置信息,好比镜像版本和容器端口
- 每一个 Pod 能够在 Kubernetes 集群内拥有惟一的 IP 地址
- Pod 能够拥有多个容器。这些容器共享同一个端口空间,因此他们能够经过 localhost 交流(可想而知它们没法使用相同的端口)
- 与其余 Pod 内容器的交流能够经过结合 Pod 的 IP 完成
- Pod能够自动按默认设置建立,也能够经过kind pod自定义设置
- Init Containers: 在app容器启动前作准备工做的容器
- 一种做用是能够延迟app容器启动
- spec.containers.env : 设置Containers环境变量
- spec.restartPolicy
- Always
- OnFailure
- Never
Developer Guide
Pod Presets
- 其余属性
- 阻止Pod被注入 : podpreset.admission.kubernetes.io/exclude: "true"
Deployment
- apiVersion
- apps/v1beta1
- selector : matchLables
ReplicaSet
- apiVersion
- extensions/v1beta1
- selector : matchLables
Secrets
ConfigMaps
其余
Node调配Pod
- Deployment/RC:全自动调度
- Deployment/RC主要是自动部署应用的多个副本,并持续监控,以维持副本的数量。
- 默认是使用系统Master的Scheduler通过一系列算法计算来调度,用户没法干预调度过程与结果。
- 默认使用Deployment/RC
- NodeSelector:定向调度
- 经过Node的标签和Pod的nodeSelector属性相匹配,能够达到将pod调度到指定的一些Node上。
- oc label nodes
env=dev
YAMLnode
kind: Deployment
nodeSelector:
env: 'dev
- NodeAffinity:Node亲和性调度
- PodAffinity:Pod亲和与互斥调度策略
- 能够根据节点上正在运行的其它Pod的标签来进行限制
- Taints与Tolerations(污点与容忍)
- Taints与前面的Affinity相反——它让Node拒绝Pod的运行
- DaemonSet:在每一个Node上调度一个Pod
- 管理集群中每一个Node上仅运行一份Pod的副本实例
- kind: DaemonSet
- Job:批处理调度
- 定义批量任务(并行/串行启动多个计算进程去处理一批工做项)
- kind: Job
- https://www.jianshu.com/p/40050e2a05d4
- Cronjob:定时任务
- kind: CronJob
- 相似Linux Cron的定时任务