k8s
Apache mesos :分布式资源统一管控工具 ,需要和Marathon结合使用-- twitter切换到了k8s
docker swarm ,docker自己的容器编排工具-- 阿里云剔除swarm
kubernetes -- 起源于谷歌的borg,Google开源的容器编排工具
k8s特点
轻量级:消耗资源小
弹性伸缩
开源
负载均衡:IPVS
k8s的功能
自我修复
弹性伸缩
服务发现
负载均衡
版本回退
存储编排
k8s本质就是一组集群,它可以在集群上运行特定的程序,来对节点进行管理。它的目的是实现资源管理的自动化。
k8s架构
k8s的组件
k8s集群主要由控制节点和工作节点构成。每个节点上都会安装不同的组件。
1、master集群的控制平面,负责集群的决策:
api server所有服务的访问入口,接受用户输入的命令,提供认证、授权、API注册和发现等机制
controller manager :维护集群的状态,比如:程序部署安排,故障检测,自动扩展,滚动更新等。
scheduler 负责集群资源调度,按照预定的策略将POD调度到相应的节点上。
ETCD:键值对数据库,储存k8s集群的所有重要信息(持久化)。负责存储集群中各种资源对象的信息。
2、node 集群的数据平面,负责为容器提供运行环境
Kubelet:负责容器的生命周期,即通过控制docker,来创建、更新销毁容器
Kube-proxy:负责集群内部的服务发现和负载均衡
Docker:负责节点上的各种操作
重要的插件:
core dns:可以为集群中的SVC创建一个域名IP的对应关系解析
DASHBOARD:给k8s集群提供一个B、S结构访问体系
INGRESS Controller:官方只能实现4层代理,ingress可以实现七层代理
Fedetation:提供一个可以跨集群中心多k8s统一管理功能
prometheus:提供k8s集群的监控能力
ELK:提供K8s集群日志统一分析介入平台
高可用集群副本数据最好是>3的奇数
POD类型:
被控制器管理的POD
不被控制器管理的POD,自主式POD
POD的类型:
ReplicationController (RC) :用来确保容器应用的副本数始终保持在用户定义的副本数。新版本推荐使用RS(ReplicationSet)
ReplicationSet:与RC一样,并且支持集合式的selector。无状态设计。
Deployment:使用Deployment来自动管理RS。无状态设计。
HPA(HorizontalPodAutoScale):仅适用于Deployment和Replicaset,在V1版本中仅支持根据POD的CPU利用率扩缩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容
StatefulSet:为了解决有状态服务的问题。应用场景:稳定的持久化存储,稳定的网络标志,有序部署,有序收缩。
DaemonSet:确保全部(或一些)Node上运行一个POD的副本。当有Node加入集群时,也会为他们新增一个POD。当有Node从集群移除时,这些POD也会被回收。删除DaemonSet将会删除它创建的所有Pod。
Job:保证处理任务的一个或多个POD成功结束
cronJob:基于时间的job
网路通讯方式:
同一POD内的多个容器之间:Lo
各个POD之间的通讯:Overlay Network
POD与Service之间的通讯:各节点的IPTables规则
网络解决方案:Flannel
k8s安装
kubewdm
centos7
Koolshare
harbor