掌握Kubernetes
k8s的对照和资源分为3个API轨道,alpha、beta、stable,用于表示成熟度
Job和CronJob
高级Pod控制器,允许运行最终将终止的容器
Job确保一定数量的Pod成功完成,CronJob确保在给定时间调用Job,如需运行批处理工作负载或计划任务,内置控制器可以发挥作用
Pod和节点之间的亲和性与反亲和性
可以使用节点选择器手动将Pod分配给某些节点
节点可以拒绝具有容忍(Taint)的Pod
当遇到更灵活的情况,如将Pod放一起、Pod可在可用作区域内平均分配,通过节点选择器或节点选择Pod会更好,亲和性(或反亲和性)可解决
Pod的自动伸缩
自动扩展运行应用程序的实例组
Pod水平伸缩器(PodHorizontalScaler)能在诸如部署(Deployment)之类的控制器中扩展具有CPU/内存指标的Pod副本,k8s 1.6始,伸缩器支持基于自定义指标的缩放,如每秒事务数
防止和缓解Pod中断
Pod是不稳定的,随着集群的大小会被终止并在节点间重新启动
如一个程序有太多的pod同时被中断,可能导致服务水平降低,甚至导致应用程序启动失败
应用程序是有状态或基于仲裁的,无法容忍Pod的中断
为减少干扰,利用PodDisruptionBudget通知k8s,在应用程序允许的时间内,有多少不可用Pod,以便k8s采取适当行动
PodDisruptionBudget是一个托管对象,但可能有k8s以外的因素导致中断,如硬件故障、内存不足,可将如节点问题探测器类工具整合到监控栈中,适当配置节点资源上的阈值,以通知k8s,该节点开始耗尽节点或驱逐过多的Pod
Kubernetes集群联邦(federation)
集群联邦是集群的集群,多个集群组成,可从单个控制平面访问
集群联调上创建的资源将在所有连接的集群中同步
k8s 1.7始,联合的资源包括:命名空间namespace、ConfigMap、秘钥Secret、部署Deployment、DaemonSet、服务Service、Ingress
集群联邦构建混合平台的能力为软件构建提供灵活性
集群附加组件
为增加Kubernetes集群而设计或配置的程序,是k8s的固有部分
集群附加组件可能在某些关键功能中使用,某些托管的k8s服务(如GKE)会部署附加组件管理器,以保护附加组件的状态不被修改或删除
Kubernetes和社区
起源于Google,由云原生计算基金会CNCF管理,CNCF下所有项目都基于容器的
Kubernetes孵化器
如Heapster、cAdvisor、dashboard、minikube、kops、kube-statemetrics、kube-problem-detector
Helm和chart
helm是包管理器(管理集群中的软件包)、helm中的包称为chart
char是运行应用程序的配置、定义和清单的集和
helm还建立为共享软件包的标准,运行直接安全流行软件如wordpress
未来基础设施
Docker Swarm
集成在Docker引擎中的Docker编排工具,它与Docker本身共享相同的API和用户界面,包括使用Docker Compose文件,Swarm简单易用,但缺乏灵活性
Swarm集群有manager和worker组成,manager是维护集群状态的共识组的一部分,同时保持高可用性
Swarm集群模式附带的功能:容器生命周期管理、两种调度策略(复制和全局,类似k8s中Deployment和DaemonSet)、服务发现、秘钥管理等;Ingress网络(类似k8s中NodePort服务,但需要L7负载均衡,需引入nginx或Traefik)
Amzon Elastic Container Service
集群管理器,好处由AWS管理,不过多关注管理
通过AWS控制台或API创建ECS集群
Apache Mesos
解决资源管理方面的困难,包括通用硬件,支持各种工作负载
双层架构来划分、分配资源和执行任务