Kubernetes

Kubernetes

在这里插入图片描述
K8s官方代码

k8s是什么

  • k8s是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可以促进声明式配置和自动化。
  • Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。
  • K8S用于容器化应用程序的部署,扩展和管理。
  • K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。
  • Kubernetes目标是让部署容器化应用简单高效。
  • 官方网站:https://kubernetes.io/
  • 一个容器平台
  • 一个微服务平台
  • 便携式的平台

Kubernetes集群架构

在这里插入图片描述

一个简单架构图,不含dashboard,只有一个master(主控节点)和两个node(工作节点)

master组件
master本身是不做任何事情的,只提供一些调度等做用,负责管理Node, 控制Node 具体运行什么容器, 同时还承担外部数据访问的角色

master分为三个组件:

  • API server:提供认证,授权,访问控制,API注册,发现等机制
  • controller-manager:做集群中后台的统一的管理,处理集群中常规的任务,比如:故障检测、自动扩展、滚动更新。
  • scheduler:选择合适的node节点来部署,起到节点调度的作用。
  • etcd:算不上是组件,算是一个数据库,用来存储集群当中各种的资源,可以部署在任何能够访问到的地方

node
node分为两个组件:

  • kubelet:master派到node节点的代表,管理本机容器的各种操作
  • kube-proxy:实现Pod的网络代理,用来做服务发现、负载均衡。
  • Docker Engin:docker引擎, 负责Node于和容器有关的操作, K8S原生支持Docker作为容器引擎, 如果要使用其他容器引擎则需要使用对应接口集成
  • Pod:K8S不是直接运行的容器,而是操作Pod, 把Pod作为原子单元管理,一个Pod里面可能会运行多个容器, Pod里面运行的多个容器被捆绑在一起被统一调度不可分割. 一个Pod的所有容器只能同时运行在一个Node 上

Kubernetes优势

  • 容器编排
  • 轻量级
  • 开源
  • 弹性伸缩
  • 负载均衡

Kubernetes的特性

Kubernetes的特性主要有以下几种:

  • 自我修复
      在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。
  • 弹性伸缩
      使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
  • 自动部署和回滚
      K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务。
  • 服务发现和负载均衡
      K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。
  • 机密和配置管理
      管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。
  • 存储编排
      挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如NFS、GlusterFS、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。
  • 批处理
      提供一次性任务,定时任务;满足批量数据处理和分析的场景。

K8s专业术语

pod

  • 运行于Node节点上,若干相关容器的组合。
  • K8s的最小调度逻辑单元
  • pod可以理解为是容器的外壳,它为容器做了一层抽象的封装
  • Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。
  • 一个Pod可以包含一个容器或者多个相关容器。同一个pod中的不同容器可以共享存储卷
  • 一个pod上无论是有一个容器还是有多个容器,一旦将此pod调度到某node上运行时,这一个pod内的所有容器只能运行在同一个node上

可能还是不是挺明白,我举个例子:经常有人把pod比作豌豆荚,容器就是豌豆荚里的豌豆,那么豌豆有可能是一个,也有可能是多个,为什么不直接使用容器呢,而是用pod来封装一个或多个容器呢

我这里举个例子,如果有一套lnmp架构的系统,一般不会运行在一个容器中,而是在多个容器中,但是这样他们之间的相互连接就变得十分困难,而pod提供了共享网络和存储,所以他们可以通过localhost进行内部的通信,虽然网络和存储是共享的,但是cpu和内存就不是,也是就说我们可以单独对pod中的容器做资源使用的限制

node

  • Node是Kubernetes集群架构中运行Pod的服务节点(亦叫agent或minion)。
  • Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。
  • node可以是任何形式的计算设备,只要此设备上能够有传统意义上的CPU、内存、存储空间,并且能装上k8s的集群代理程序,它都可以作为整个k8s集群一个成员
  • 只要能装上kunelet就能成为一个节点

标签

  • 标签是附加到容器,复制控制器和服务的键值,标签也是k8s特色的管理方式,便于分类管理资源对象
  • 一个Label是 一个key=value的键值对,其中key与value由用户自己指定。
    • key:只能使用 字母 数字 _ - . (只能以字母数字开头,不能超过63给字符)
    • value: 可以为空 只能使用 字母 数字开头
  • 一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系。
  • 一个资源拥有多个标签,可以实现不同维度的管理。
  • 可以使用标签选择器来指定能使用哪些标签。

标签选择器

  • 标签选择器是Kubernetes中的核心分组原语。用户使用它们来选择一组对象。
  • 标签选择器就是一种根据标签来过滤符合条件的资源对象的机制
  • 用来控制pod

分别的作用
pod=调度和管理的最小单位,逻辑单元
node=是工作的,运行容器,运行Pod的服务节点的
标签=无非就是给他打个标签,便于分类管理资源
标签选择器=控制pod,根据标签来过滤符合条件的对象进行删除,停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值