简介
它是一个全新的基于容器技术的分布式解决方案,基于强大的自动化机制解决传统系统架构中负载均衡和实施部署的问题,从而节省了30%开发成本,其次具有完备的集群能力,
包括服务注册、服务发现、故障的发现和修复、服务滚动升级、在线扩容、健康监测等能力。使用kubernetes可以是开发人员更多精力在业务实现上,同时全面的拥抱微服务架构
架构
基本概念和术语
1、master 集群的控制节点。
每个kubernetes集群都需要有个master节点负责整个集群的管理和控制。mater节点包括一组关键进程:
- kube-apiserver 资源增删改查操作的入口,门卫
- kube-controller-manage 所有资源的自动化控制中心,大总管
- kube-schedule 负责资源的调度,调度室
2、node 集群的负载节点
每个node都会被master分配一定的工作负载(容器),当node停止运行后,master将容器调度到其他node,node节点包括一组关键进程:
- kubelet 负责pod对应容器的创建、启停任务
- kube-proxy 实现service通信和负载均衡
- docker engine docker引擎负责本机的容器的创建和管理
常用命令
查看集群节点
kubectl get nodes
查看节点详细信息
kubectl describe node xxx
3、pod 资源调用基本单位
每个pod包含一个根容器(Pause) 容器和其他若干的业务容器,其中根容器的状态代表了容器整体的状态,业务容器共享Pause容器的IP和挂在的Volumn 。集群中每个pod都分配了唯一的IP,称pod ip , 一个pod里的多个容器共享Pod IP地址。
pod某个容器停止,k8s检测并重启该pod中的所有容器,所以适合一个POD中存放一个业务相关的容器
(1) Replication Controller (rc) 副本的数量在任何时刻都达到期望值
rc定义包括如下几个部分:
- pod期待的副本数
- 用于筛选目标Pod的label Selector
- 副本数小于期望数量时候,创建新的副本‘
例子:定义了在kubenetes集群中 tier: frontend的副本只有一个
(2)Replication Set (rs) 下一代的RC
与RC区别是RS支持集合类型的Label Selector,而rc只支持基于等式的Label Selector。其他特点类型。
(3)Label和Label Selector
Label和Label Selector概念,kubernetes可以为对应的资源(pod,rc,service,deployment)设置key=value形式的label,简单理解就是分类。同时label selector可以根据指定的label与资源进行管理。例如service可以根据label selector选择具有对应label的pod进行负载均衡。label selector分为等式形式(env=test)和集合形式(env not in[test,dev])
(4)Deployment 在rs的基础上增加服务启动状态的控制和统计
在rc的基础上进行了一次升级,更好解决了服务编排问题。可以知道当前POD的“部署的进度”
常用命令
创建Deployment
kubectl create -f tomcat-deployment.yaml
查看信息’
kubectl get deployments
(5)service kubernetes的核心资源对象,POD RC RS等资源对象都是为service提供服务
kubernetes里面每个service就是我们所说的微服务。
- rc的作用是保证Service的服务能力和服务质量始终处于预期的biaozhun
- service与后端的副本集群通过label selector做负载均衡
service一旦创建,kubernetes就会自动为它分配一个可用的Cluster IP,并且整个service的生命周期内不会改变,service name 和 service ip DNS映射解决了服务发现问题
常用命令
查看service
kubectl get svc -n XXX
创建service
kubectl create -f xxx