小新学习K8s第一天之K8s基础概念

目录

一、Kubernetes(K8s)概述

1.1、什么是K8s

1.2、K8s的作用

1.3、K8s的功能

二、K8s的特性

2.1、弹性伸缩

2.2、自我修复

2.3、服务发现和负载均衡

2.4、自动发布(默认滚动发布模式)和回滚

2.5、集中化配置管理和密钥管理

2.6、存储编排

2.7、任务批处理运行

三、kubernetes的集群架构与组件

3.1、Master 组件

①kube-apiserver(资源操作的唯一入口)

②Kube-controller-manager(负责维护集群的状态)

③Kube-scheduler(负责集群资源调度)

3.2、配置存储中心

Etcd(配置存储中心)

3.3、Node 组件

①Kubelet(负责维护容器的生命周期)

②Kube-proxy(负责提供集群内部的服务发现和负载均衡)

③docker/rocket(容器引擎)

四、K8s工作流程

五、Kubernetes 核心概念

5.1、Pod

5.2、Pod 控制器

5.3、Deployment—无状态应用部署

5.4、Statefulset—有状态应用部署

5.5、Label-标签

5.6、Label 选择器(Label selector)

5.7、Service

5.8、Ingress

5.9、Name

5.10、Namespace


一、Kubernetes(K8s)概述

1.1、什么是K8s

kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。kubernetes服务,支持和工具随处可见。

作用:用于自动部署,扩展和管理“容器化应用程序”的开源系统。

可以理解成k8s是负责自动化运维管理多个容器化程序(比如docker)的集群,是一个生态及其丰富的容器编排框架工具。

由来:k8s由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。

含义:来源于希腊语中的舵手,飞行员

官网:
https://kubernetes.io    英文
https://kubernetes.io/zh-cn/docs  中文

1.2、K8s的作用

传统的后端部署是把程序包放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态,必要的话重新拉起程序。

①案例:如果服务器的请求量上来了,已经部署的服务响应不过来怎么办?

传统的做法是,如果请求量,内存,cpu超过了阈值做了警告,运维人员就会马上增加服务器,部署好服务之后接入负载均衡来分担已有服务的压力。

这样做的弊端就是,需要人力的介入,而k8s要做的事情就是:自动化运维管理容器化的程序。

②k8s的目的就是让部署容器化应用简单高效。

k8s解决了裸跑docker的若干痛点:

单机使用,无法有效集群;

随着容器数量的上升,管理成本攀升;

没有有效的容灾,自愈的机制;

没有预设编排模板,无法实现快速,大规模容器的调度;

没有统一的配置管理中心工具;

没有容器生命周期的管理工具;

没有图形化运维管理工具。

1.3、K8s的功能

K8S是Google开源的容器集群管理系统,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

1、使用 Docker 等容器技术对应用程序包装(package)、实例化(instantiate)、运行(run)。
2、以集群的方式运行、管理跨机器的容器。
3、解决 Docker 跨机器容器之间的通讯问题。
4、K8S 的自我修复机制使得容器集群总是运行在用户期望的状态。

二、K8s的特性

2.1、弹性伸缩

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

2 台机器 提供 web 服务  网站高并发 系统资源占比来 自动扩展机器  10 
并发一旦过去了 自动收  1

2.2、自我修复

在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前都不会处理客户端请求,确保线上服务不中断。

2.3、服务发现和负载均衡

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

2.4、自动发布(默认滚动发布模式)和回滚

K8S采用滚动更新策略更新应用,一次更新一个或者部分Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不影响业务。

2.5、集中化配置管理和密钥管理

管理机密数据和应用程序配置,而不是需要把敏感数据暴露在镜像里,提高敏感数据的安全性,并可以将一些常用的配置存储在k8s中,方便应用程序使用。

2.6、存储编排

支持外挂存储并对外挂存储资源进行编排,挂载外部存储系统,无论是来自本地存储,共有云(如:AWS),还是网络存储(如:NFS,Glusters,Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。

2.7、任务批处理运行

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

三、kubernetes的集群架构与组件

K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运算工作负载节点。
在 K8S 中,主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,每个 Node 都会被 Master 分配一些工作负载。

Master 组件可以在群集中的任何计算机上运行,但建议 Master 节点占据一个独立的服务器。因为 Master 是整个集群的大脑,如果 Master 所在节点宕机或不可用,那么所有的控制命令都将失效。除了 Master,在 K8S 集群中的其他机器被称为 Worker Node 节点,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

3.1、Master 组件

①kube-apiserver(资源操作的唯一入口)

用于暴露 Kubernetes API,任何资源请求或调用操作都是通过 kube-apiserver 提供的接口进行。以 HTTP Restful API 提供接口服务,所有对象资源的增删改查和监听操作都交给 API Server 处理后再提交给 Etcd 存储。

可以理解成 API Server 是 K8S 的请求入口服务。API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行工具), 然后根据用户的具体请求,去通知其他组件干活。可以说 API Server 是 K8S 集群架构的大脑。

②Kube-controller-manager(负责维护集群的状态)

运行管理控制,是k8s集群中处理常规任务的后台线程,是k8s集群里所有资源对象的自动化控制中心。

在k8s集群中一个资源对应一个控制器,而controller manager就是负责管理这些控制器的。

由一系列控制器组成,通过api server监控整个集群的状态,并确保集群处于预期的工作状态,比比如当某个node意外宕机时,controller manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

这些控制器主要包括:

•Node Controller(节点控制器):负责在节点出现故障时发现和响应。
•Replication Controller(副本控制器):负责保证集群中一个 RC(资源对象 Replication Controller)所关联的 Po

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值