Kubernetes--系统架构

一. 前言

kubernetes其实源于希腊语意思(舵手,领航员)。由于不太好读也不太好写,就有了另一个名称叫k8s,kubernetes是谷歌在2014年开始实施的一个项目,当时google已经有了大规模服务容器管理的经验,内部Borg系统,负责对google内部的一些服务进行调度和管理,它的目的是让用户不必操心资源管理的问题,让他们专注自己的核心业务, 并且最大化数据中心的利用率。
k8s是一个自动开源系统,自动化部署,扩缩容,管理容器化的应用。相比前面的mesos 和swarm,k8s的目的非常的单纯和明确,简单的来说他的目的就是为了服务编排,没有别的。这么明确的目的。虽然目的简单但专注所以专业,非常灵活的使用方式,它考虑到服务落地过程中可能遇到的各种各样的问题,各种各样的场景。

二. 通俗易懂的解读kubernetes

假设某个小区里面有三栋单元楼(称之为node)和一套别墅(称之为master),正好被一个煤老板(称之为k8s)全部买了下来。煤老板单独住别墅,剩下的三栋单元楼全部出租。每栋单元楼包含若干个房间(称之为pod),每个房间都有唯一的门牌号,那么对应的每一个pod都有一个独立的ip地址,被煤老板租出去的某个房间里有非常多的家庭成员(称之为container),例如爸爸,妈妈,兄弟姐妹,爷爷奶奶,姥爷姥姥,女儿儿子等,所有家庭成员共享房间里面的资源,例如水电,网络等等(container共享pod中的cup,内存,硬盘)。对于煤老板k8s,他最主要的功能就是管理所有的租客,假设某个楼里面的住户太多了,水供应不上,那么可以把这栋楼里面的住户移动住户比较少的另一栋楼。
在这里插入图片描述

三. kubernetes元素概念

1. pod

pod 是k8s中非常重要的一个概念,所有的应用和服务都是运行在pod里面的,pod是k8s中最小的一个单元,可以理解为k8s的一个原子,pod里面就是容器。
第一个pod有独立的IP地址,一个容器
第二个pod有独立的Ip地址,一个容器,一个磁盘存储
第三个pod有独立的Ip地址,两个容器,一个磁盘存储,这2个容器可以共享IP的,共享网络,共享磁盘的。
第三个pod有独立的Ip地址,三个容器,2个的磁盘存储,这3个容器可以共享IP的,共享网络,共享磁盘的。
在这里插入图片描述
pod运行在node,通过kubelet来进行的,调度kuelet把pod运行起来。一个node上面可以运行多个pod。只要资源足够可以建立多个pod.
在这里插入图片描述

2. service

a. 中间是master节点
b. 其余的是node节点
c.下面的这个node,里面运行了一个pod,pod的外边,有一层虚线,虚线标识service,pod的Ip(10.10.10.1),service(10.10.9.1),service和pod的Ip不同,pod是具体运行在一个node上的,如果pod或者node突然挂掉了,编排工具肯定在其他的node节点下重新起一个pod,这个pod肯定的ip也就变了。所以就需要一个serivce的概念,当pod出问题了,产生一个新的pod,新的pod就是一个新的ip,我们就可以通过service的方式找到pod。
d. serivce的Ip跟service的生命周期是一致的,如果service不被删除的话,IP一直不发生变化。
e. 上边这个2个node,三个pod,其实就是从一个实例变成了3个实例,进行了扩容,对外提供相同的服务,这时这个service,ip就有了另外2个作用,除了可以定位pod的地址,可以对pod地址进行负载均衡,进行轮询
在这里插入图片描述
service的概念基本了解了,怎么确定哪些pod属于一个service,提出一个service的概念,service可能有一个或者是多个pod组成,如何定义service,怎么定义service。在k8s上通过Master的Label Selector的方式,比如s:app=A,s:app=B,有这种标签的确定输入pod等于A 或者pod等于B,所有标签一样的都属于我的小弟。这样service和pod的耦合就非常松。
在这里插入图片描述
创建pod和service的时候,其实已经制定了pod和service的关系
在这里插入图片描述
PS:(梳理概念)pod里面包括N个容器,service里面包括pod,Deployment可能包括service或者是pod

3. deployment

a. Master里面发布了一个Deplyment,想给service 进行扩容
b. 其实内部是扩容的pod,service只是一个逻辑存在的东西
c. 把一组pod形成一个逻辑组就是service,扩容完成后,其他两个节点就有了pod实例。
d. service就开始对外的负载均衡endpoint找到对应的pod
在这里插入图片描述
在这里插入图片描述
滚动更新,停掉了一个旧的pod,启动一个新的pod,这时service既有新的,也有旧的存在,直到所有的旧的都更新完毕才结束。所有的更新和扩容的过程serivce的Ip始终是保持不变的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四. Namespace

一般在开发中有开发,测试,准生产,生产环境。Namespace 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的 pods, services,deployments 等都是属于某一个 namespace 的(默认是default),而 Node, PersistentVolumes 等则不属于任何 namespace。相互之前是隔离的。

参考官网:k8s中文文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

victor-维克特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值