K8s架构入门(一篇就够)

1.为什么要学习k8s

我们的项目现在越来越大,服务越来越多,在有几千个服务的时候,手动来管理容器一是工作量很大,再是容易出错,所以想到要出一个管理容器的工具。那kubernetes应用而生,k8s是kubernetes简称,是用来管理容器的。

使用k8s有以下几个好处:

a.容器化后可减少运维工作量,可以理解k8s就是一套自动化运维平台

b.容器化后能更好利用系统的资源

c.服务的复制迁移更方便

2.服务部署的模式&云架构&云原生

服务部署模式

服务部署模式的发展经历了几个阶段:

a.早期都是单体应用,直接部署服务器,这样的部署方式,我们可以通过服务器的配置,使用qps指标来大概估算下,服务器的资源利用率。

比如200qps,包含100个请求静态资源的请求和100个动态资源的请求

假设:静态请求占用2M内存,动态请求占用10M内存

200qps占用内存= 100*2M + 100*10M = 1200M

扫描二维码关注公众号,回复: 11937920 查看本文章

如果服务器内存是4g, 那最多可用600qps。但这是没有考虑cpu,带宽,线程的其他资源的前提下,如果考虑进来,可能最多支持300qps。但是使用300qps 的时候,内存的资源利用率就不高了。所以虚拟化技术应用而生。

b.虚拟机部署,更高效的利用系统资源

虚拟机就是为了隔离出各种系统资源,比如cpu,内存,当然这里也有操作系统。它能更好的利用系统资源。

虚拟机比较多的时候,就需要一种管理虚拟机的技术,有openstack

c.容器化部署,也是为了高效利用系统资源

但是容器化比虚拟机更轻量级,它不抽象出操作系统,只是隔离cpu,内存等系统资源。

那我们这里所强调的k8s 就是一种容器管理技术。

现在是微服务,同一个服务可能就要部署多份。

但是当发展到现在都是soa系统架构下,微服务越来越多,那也会呈现出很多的问题,比如:

* 容器如何横向扩展?

* 容器与容器之前如何更好的通信(网络交互)?

* 一个容器宕机了怎么办?

* 如何对容器的运行情况进行监控?

那这些都是K8s可以完美解决的问题。接下来我们会一一介绍到。

什么是云?

云就是使用容器构建的一套服务集群网络,可以理解为容器的集合。

比如我们公司在阿里云上购买的ECS,RDS。实际上就是购买的具体容器,这些容器提供这样的基础设施,服务等功能。

云与k8s的关系?

前面我们提到,k8s就是管理容器的技术,它就是来管理云中的容器的。

云架构

就是我们常说的

Iaas 基础设施即服务

Pass 平台即服务

Saas 软件即服务

以及未来的一种发展趋势,serverless 无服务器

未来我们所有的应用都会上云,无非是共有云还是私有云的问题。

云原生

就是在云架构的基础上,系统都上云之后,提供了云上的解决方案,这样的解决方案成为云原生。

现在我们的很多项目都具备这样的 云原生雏形。

但是我们这里提到的云原生还需具备以下的几点特性:

a.微服务

b.容器化

c.CI/CD 持续集成,持续交付

d.DevOpe 开发运维集成,Devlope&Operations

重点强调快速迭代,需求,产品,研发,测试,运维人员的协调沟通发展。

3.k8s基本架构

k8s的架构主要是由master节点和node节点构成

一个master节点可以对应多个node节点。

master节点不存储容器,主要由四个部分构成:

a.api server k8s网关,所有请求指令都必须先到这里

b.scheduler 调度器,控制网关过来的请求路由到哪个node

c.controller 控制器,主要用来维护k8s资源对象

d.etcd 主要用来资源对象

node节点就是存储具体容器的,但是不仅仅只有容器,主要包括:

a.docker 容器引擎,运行容器的基础环境

b.kubelet  在每个node节点都存在一份,主要来执行关于资源操作的指令,负责pod的维护

c.kube-proxy 代理服务,用于负载均衡,在多个pod之间做负载均衡

d.fluentd 日志收集服务

e.pod 是k8s的最小服务单元,pod内部才是容器,k8s通过操作pod来操作容器

那pod的组成结构又是怎么样的呢?

pod 也是一个容器,是封装容器的容器,是一个虚拟化的分组,有自己的ip和port。

那个pod里面的子容器之间的交互,就像在一台机器上的交互。具体的实现是通过pause容器来实现的。

在初始化一个pod容器的时候,就会生成一个pause容器。这个容器使得pod里面的子容器能够共享网络和存储,方便内部容器之间的调用。

4.k8s的核心组件

4.1pod

4.2ReplicaSet

4.3Deployment

4.4StatefulSet

5.k8s的服务注册与发现

5.1service服务发现:pod如何对外网提供服务

5.2service服务发现:负载均衡访问问题的思考

5.3service服务发现:实现负载均衡的原理

5.4service服务发现:实现负载均衡原理的深入

猜你喜欢

转载自blog.csdn.net/u014209205/article/details/106651935
今日推荐