Kubemetes基础概念
Posted ryhonour
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubemetes基础概念相关的知识,希望对你有一定的参考价值。
Kubemetes基础概念
1.1 K8s基础介绍
k8s是一个完备的分布式系统支撑平台,具有完备的集群管理能力。
-
K8s service
service(服务)是分布式集群架构的核心,一个server对象拥有如下关键特征
- 拥有一个唯一指定的名字(如:mysql-server)
- 拥有一个虚拟IP的端口号
- 能够提供某种远程服务的能力
- 被映射到了提供这种服务能力的一组容器应用上
1.2 K8s架构原理
-
kubernetes 架构
-
master 节点
- api server :k8s网关,所有指令请求必须要经过api server
- scheduler :调度器,使用调度算法,把请求资源调度某一个node节点
- controller :控制器,维护k8s资源对象,比如故障检测、自动扩展、滚动更新。
- etcd :存储资源对象
-
-
node 节点
- docker :运行容器的基础环境,容器引擎。
- kubelet :在每个node 节点都存在一份,在node节点上的资源指令由kubelet来执行。
- kube-proxy :代理服务,负载均衡。
- fluent :日志收集服务。
- pod :是k8s管理的基本单位(最小单元),pod内部是容器。k8s不直接管理容器,而是管理pod。
- docker :运行容器的基础环境,容器引擎。
-
特点:
- 一个master 对应一群 node 节点
- master 节点不存储容器,只负责调度、网关、控制器、存储资源对象。
- 容器是存储在 node 节点(容器是存储在pod内部的)
- pod 内部可以有一个容器,或者是多个容器
- kubelet负责本地的pod的维护
- kube-proxy 负责负载均衡,在多个pod之间来做负载均衡
1.3 k8s核心组件原理
-
pod 的核心管理(封装一个或一组容器)
- pod的结构是什么?
- pod相当于一个容器,pod有独立的ip地址,也有自己的hostname,利用namespace进行资源隔离,独立沙箱环境。
- pod内部封装的是容器,可以是一个或者多个容器(一组相关的容器)。
- pod的网络
- pod有自己独立的ip地址
- pod内部容器之间的访问采用localhost访问
- pod的用途?
- 通常,在服务部署的时候,使用pod来管理一组相关的服务(一个pod中部署一个服务或一组有关系的服务)
- 实现服务集群:
- 只需要复制多份pod的副本即可。k8s如果继续扩容、缩容,只需要控制pod的数量即可。
- pod 底层:
- pod 内部容器创建之前,必须先创建pause容器。每个pod里运行着一个pause容器,其它容器则为业务容器,这些容器共享pause容器中的网络与Volume挂载卷,因此pod内部容器的通信和数据交换更加高效。
- 服务容器之间访问使用localhost访问,相当于访问本地服务器一样,性能非常高
- pod的结构是什么?
-
ReplicaSet 副本控制器(控制pod的数量)
控制pod副本(服务集群)的数量,永远与预期设定的数量保持一致即可。当有pod服务宕机时,副本控制器会立马重新创建一个新的pod,永远保证副本与预期的一致。
- 副本控制器:通过标签选择器(selector)--来维护一组相关的pod。每个pod可以指定一组相关的标签。
-
Deployment 资源部署对象(部署无状态服务)
-
服务部署结构模型
Deployment对象支持滚动跟新,通常和RplicaSet一起使用。
-
-
StatefuSet(部署有状态服务)
-
状态服务的解释:
- 有状态服务:
- 有 实时 的数据需要存储。
- 有状态服务集群中,把某一个服务抽离出去,一段时间后在加入机器网络,集群网络会无法使用。
- 无状态服务:
- 没有 实时 的数据需要存储。
- 无状态服务集群中,把某一个服务抽离出去,一段时间后在加入机器网络,对集群服务没有任何影响。
- 有状态服务:
-
部署模型
- StatefulSet保证pod重新建立后,hostname不会发生改变,pod就可以通过hostname来关联的数据。
-
1.4 K8s服务的注册于发现
-
pod在生产环境中的访问流程
-
pod如何对外提供服务访问?
-
pod如果想要对外提供服务的,必须绑定物理机的端口(在物理机上开启端口,让这个端口和pod的端口进行映射),这样可以通过物理机进行数据包的转发。
-
-
-
service如何实现负载均衡
-
什么是service资源对象
- POD IP :pod的ip地址
- NODE IP :物理机的IP地址
- cluster IP : 虚拟IP,是由kubernetes抽象出service对象,这个service对象就是一个VIP的资源对象。
-
如何利用service来实现负载均衡
-
service VIP 原理:
- service 和 pod 都是一个进程,service也不能对外网提供服务。
- service 和 pod 之间可以直接进行通信,它们的通信属于局域网通信
- 把请求交给service后,service使用(iptable,ipvs)做数据包的分发
- service通过标签选择器与pod进行关联。
-
以上是关于Kubemetes基础概念的主要内容,如果未能解决你的问题,请参考以下文章