带你走进k8s的世界----------什么是k8s?

目录

  • 一、k8s概念
    • 1.1 公有云类型说明:IAAS,PAAS,SAAS
      • 1.1.1 IAAS:基础设施即服务。
      • 1.1.2 PAAS:平台即服务。
      • 1.1.3 SAAS:软件即服务。
    • 1.2 资源管理器的诞生
    • 1.3:K8S优势
  • 二、K8S的特性
    • 2.1 自我修复
    • 2.2 弹性伸缩
    • 2.3 自动部署和回滚
    • 2.4 服务发现和负载均衡
    • 2.5 机密和配置管理
    • 2.6 存储编排
    • 2.7 批处理
  • 三、kubernetes的集群
    • 3.1 集群架构
    • 3.2 组件介绍
      • 3.2.1 master 组件
      • 3.2.2 node组件
    • 3.3 kubernetes核心概念

一、k8s概念

1.1 公有云类型说明:IAAS,PAAS,SAAS

在云计算的概念中,我们可以把公有云分为三个层面,IAAS(基础设施即服务),PAAS(平台即服务),SAAS(软件即服务).

1.1.1 IAAS:基础设施即服务。

Infrastructure-as-a-Service(IAAS),国内做的最好的就是阿里云。
还有其他的大的IAAS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat。
但是这些公司又都有自己的专长,比如Amazon和微软给你提供的不只是IAAS,他们还会将其计算能力出租给你来host你的网站。

1.1.2 PAAS:平台即服务。

Platform-as-a-Service(PAAS),某些时候也叫做中间件, PAAS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。
一些大的PAAS提供者有Google App Engine,Microsoft Azure,Force.com,Heroku,Engine Yard等
国内做的最好的就是新浪云

1.1.3 SAAS:软件即服务。

Software-as-a-Service(SAAS),列举一些例子:如Google Apps、Dropbox、Salesforce、Cisco WebEx、Concur和GoToMeeting等
做的比较好的是Microsoft Office 365

1.2 资源管理器的诞生

有了以上这些公有云之后,我们需要对其进行资源管理,那么此时就诞生了资源管理器:MESOS–Docker Swarm–Kubernetes

MESOS:Mesos是Apache旗下的开源分布式资源管理框架,它被称为是分布式系统的内核,后来在twitter得到广泛使用。

Twitter也是mesos的最大客户,但是大概在2019年5月份,Twitter 宣布不再使用MESOS,而改用 Kubernetes,至此,Mesos已经是慢慢的被淘汰了

Docker Swarm,是一个非常轻量的群集管理工具,只有几十MB大小

Swarm 是 Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。

但是Swarm 和 Kubernetes 比较类似,因为更加轻,所以具有的功能也较 kubernetes 更少一些。

大概在2019年7月份,阿里云宣布将Docker Swarm 从选择列表中剔除,这也意味着在不就得将来,Docker Swarm 也会像Mesos一样慢慢被淘汰掉

Kubernetes,作为压轴的选手,其成为主流已是必然
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本
Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”

1.3:K8S优势

●轻量级:消耗资源小,开源,弹性伸缩,负载均衡:IPVS

●可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

●可扩展: 模块化, 插件化, 可挂载, 可组合

●自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

二、K8S的特性

2.1 自我修复

●在节点故障时可以删除失效容器,重新创建新的容器,替换和重新部署,保证预期的副本数量,kill掉健康检查失败的容器,并且在容器未准备好之前不会处理客户端情况,确保线上服务不会中断

2.2 弹性伸缩

●使用命令、UI或者k8s基于cpu使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性,业务低峰时回收资源,以最小成本运行服务

2.3 自动部署和回滚

●k8s采用滚动更新策略更新应用,一次更新一个pod,而不是同时删除所有pod,如果更新过程中出现问题,将回滚恢复,确保升级不影响业务

2.4 服务发现和负载均衡

●k8s为多个容器提供一个统一访问入口(内部IP地址和一个dns名称)并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题

2.5 机密和配置管理

●管理机密数据和应用程序配置,而不需要把敏感数据暴露在径向力,提高敏感数据安全性,并可以将一些常用的配置存储在k8s中,方便应用程序调用

2.6 存储编排

●挂载外部存储系统,无论时来自本地存储、公有云(aws)、还是网络存储(nfs、GFS、ceph),都作为集群资源的一部分使用,极大提高存储使用灵活性

2.7 批处理

●提供一次性任务,定时任务:满足批量数据处理和分析的场景

三、kubernetes的集群

3.1 集群架构

node:业务节点
主控节点master

主控节点的API server是其中唯一入口
apiserver管理所有的事务,并把信息记录到etcd数据库中
etcd有一个自动服务发现的特性机制,etcd会搭建有三个节点的集群,实现三副本
scheduler 调度器用来调度资源,查看业务节点的资源情况,确定在哪个node上创建pod,把指令告知给api server
控制管理器controller-manager管理pod
pod可以分为有状态和无状态的pod,一个pod里最好只放一个容器
api server 把任务下发给业务节点的kubelet去执行
客户访问通过kube-proxy去访问pod
pod下面的不一定是docker,还有别的容器
一般pod中只包含一个容器,除了一种情况除外,那就是elk
elk会在pod内多放一个logstash去收集日志

3.2 组件介绍

3.2.1 master 组件

●kube-apiserver:集群的统一入口,各组件之间的协调者,以restful api提供接口服务,所有对象资源的增删改查和监听操作都交给apiserver处理后在提交给etcd存储记录

●kube-controller-manager
处理集群中常规的后台任务,一种资源对应一个控制器,controller-manager就是负责管理这些控制器的

●kube-scheduler
根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同节点上

●etcd:分布式键值存储系统,用户保存集群状态数据,比如pod、service等对象信息

3.2.2 node组件

●kubelet
kubelet是master在node节点上的代理agent,管理本node运行容器的生命周期
比如创建容器、pod挂载数据卷、下载sercet、获取容器和节点状态等工作,kubelet将每个pod转换成一组容器

●kube-proxy
在node节点上实现pod的网络代理,维护网络规则和四层的负载均衡工作

●docker或rockert
容器引擎,运行容器

3.3 kubernetes核心概念

pod
最小部署单元
一组容器的集合
一个pod中的容器共享网络命名空间
pod是短暂的

controllers:
replicaset:确保预期的pod副本数量
deployment:无状态应用部署,比如nginx、apache,一定程度上的增减不会影响客户体验
statefulset:有状态应用部署,是独一无二型的,会影响到客户的体验
daemonset:确保所有node运行同一个pod,确保pod在统一命名空间
job:一次性任务
cronjob:定时任务
更高级层次对象:部署和管理pod

service:
防止pod失联
定义一组pod的访问策略
确保了每个pod的独立性和安全性

other:
label:标签,附加到某个资源上,用户关联对象、查询和筛选
namespaces:命名空间,将对象从逻辑上隔离
annotations:注释

●核心层:是Kubernetes最核心的层面,对外提供API构建高层的应用,对内提供插件式应用执行环境;

●应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等);

●管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等);

●接口层:kubectl命令行工具、客户端SDK以及集群联邦;

●生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴:
●Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等;

●Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等;

你可能感兴趣的:(k8s,k8s)