kubernetes应用介绍
一、kubernetes应用介绍
1.1.1 kubernetes应用概述
-
kubernetes是goolge开源的一个容器编排管理系统,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡,基于容器的一个平台。
官网地址:https://kubernetes.io/ -
kubernetes的组件介绍:
1、master(控制,主控):kubernetes的管理节点
在master管理节点上有apiserver(接口服务)和scheduler(调度服务)两个服务。
2、apiserver:apiserver是提供接口服务的,用户通过apiserver来管理整个容器集群平台。apiserver负责与etcd交互(其它组件不会直接操作etcd,只有apiserver这么做),整个kubernetes集群的所有交互都是以apiserver为核心的。例如:所有对集群进行查询和管理的操作都要通过apiserver来进行,kubernetes的所有模块之间并不会相互调用,而是通过和apiserver交互来完成自己的那部分工作,apiserver提供的验证和授权保证了整个集群的安全。
3、scheduler:scheduler是kubernetes的调度服务,kubernetes的调度都是scheduler在管理。
4、replication(复制) controller(控制器) 是kubernetes服务中最有用的功能,replication controller可以实现复制多个pod副本,往往一个应用需要多个pod来支撑,并且可以保证器复制的副本数,即使副本所有调度分配的宿主机出现异常,通过replication controller可以保证其它宿主机启用相同数量的pod。replication controller可以通过repcon(复制子)模板来创建多个pod副本,同样也可以直接复制已存在的pod,这个需要通过label selector来关联。
5、minion(爪牙):提供容器container的物理机 ,kubernetes中需要很多minion机器来提供运算。
container(容器):容器,可以运行服务和程序。
pod(豆荚):在kubernetes服务中,调度的最小颗粒不是单纯的容器,而是抽象成一个pod,pod是一个可以被创建,销毁,调度、管理的最小的部署单元。pod中可以包括一个或一组容器。
6、kube_proxy:kubernetes 代理 做端口转发,相当于lvs-nat模式中的负载调度器,kube_proxy解决了同一宿主机,相同服务之间端口冲突的问题呢,还提供对了外服务的能力,kube_porxy后端使用了随机、轮询负载均衡算法。
7、etcd:etcd存储kubernetes的配置信息,存储着kubernetes容器中的所有节点、pods、网络等信息。
- Kubernetes的优势
1、自动装箱,水平扩展,自我修复
2、服务发现和负载均衡
3、自动发布(默认滚动发布模式)和回滚
4、集中化配置管理和秘钥管理
5、存储编排
6、任务批处理运行
- Kubernetes的四组基本概念
1、pod/pod控制器
2、name/namespece
3、label/label选择器
4、service/ingress
- pod/pod控制器
1、Pod是K8S例能够被运行的最小逻辑单元(即原子单元),1个Pod里面可以运行多个容器,
它们共享UTS+NET+IPC名称空间,可以把Pod理解成豌豆荚,
而同一个Pod内的每个容器是一颗颗豌豆,一个Pod里运行多个容器,又叫:边车(SideCar)模式。
2、Pod控制器是Pod启动的一种模板,用来保证在K8S里启动的Pod应始终按照人们的预期运行(副本数、生命周期、健康检查...),
K8S内提供了众多的Pod控制器,常用的有以下几种。
* Deployment
* DaemonSet
* ReplicaSet
* StatefulSet
* Job
*Cronjob
- Name和Namespace
1、Name :由于K8S内部,使用”资源“ 来定义每一种逻辑的概念(功能),故每种“资源”,都应该有自己的“名称”,
“资源”api版本(apiVersion)类别(kind)、元数据(metadata)、定义清单(spce)、状态(status)等配置信息。“名称”通常定义在资源的“元数据”信息里
2、Namespace:随着项目的增多、人员增加、集群规模的扩大,需要一种能够隔离K8S内各种“资源”的方法,这就是名称空间,
名称空间可以理解为K8S内部的虚拟集群组,不同名称空间内的“资源”,名称可以相同,相同名称空间内的同种“资源”,“名称” 不同相同,合理的使用K8S的名称空间,
是的集群管理员能够更好的对交付到K8S里的服务进行分类管理和浏览,
K8S里默认存在的名称空间有:default、kube-system、kube-puublic,查询K8S里特定“资源”要带上相应的名称空间。
- Label(标签)和Label(选择器)
1、Label(标签):标签是K8S特色的管理方式,便于分类管理资源对象,
一个标签可以对应多个资源,一个资源也可以有多个标签,
它们是多对多关系。一个资源拥有多个标签,可以实现不同维度管理,
标签的组成:key=value,与标签类似的,还有一种“注释”(annotations)
2、Label(选择器):给资源打上标签后,可以使用标签选择器过滤指定的标签,
标签选择器目前有两个:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在),
许多资源支持内嵌标签选择字段
* matchLabels
* matchExpressions
- Service和Ingress
1、Service:在K8S的世界里,虽然每个Pod都会被分配一个单独的IP地址,
但是这个IP地址会随着Pod的销毁而消失,
Service(服务)就是用来解决这个问题的核心概念,
一个Service可以看做一组提供相同服务的Pod的对外访问接口。
Service作用于那些Pod是通过标签选择器来定义的
2、Ingress:Ingress是K8S集群里工作在OSI网络参考模型下,
第七层的应用,对外暴露的接口,
Service只能进行L4流量调度,表现形式是ip+port,
Ingress 则可以调度不同业务域,不同URL访问路径的业务流量。