初识Kubernetes(K8S)

一.简介

  • Kubernetes简称k8s, 是Google在2014年开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件
  • k8s是为容器服务而生的一个可移植容器的编排管理工具,当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地
  • 从架构设计层面,我们关注的可用性,伸缩性都可以结合k8s得到很好的解决
  • 从部署运维层面,服务部署,服务监控,应用扩容和故障处理,k8s都提供了很好的解决方案,k8s可以使我们应用的部署和运维更加方便

二.kubernetes特性

1.自我修复

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

2.弹性伸缩

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

3.自动部署和回滚

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

4.服务发现和负载均衡

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

5.机密和配置管理

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

6.存储编排

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

7.批处理

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

三.Kubernetes集群架构

在这里插入图片描述
工作流程

  • 通过Kubectl提交一个创建RC的请求,该请求通过API Server被写入etcd中,此时Controller Manager通过API Server的监听资源变化的接口监听到这个RC事件,分析之后,发现当前集群中还没有它所对应的Pod实例,于是根据RC里的Pod模板定义生成一个Pod对象,通过API Server写入etcd,接下来,此事件被Scheduler发现,它立即执行一个复杂的调度流程,为这个新Pod选定一个落户的Node,然后通过API Server讲这一结果写入到etcd中,随后,目标Node上运行的Kubelet进程通过API Server监测到这个“新生的”Pod,并按照它的定义,启动该Pod并任劳任怨地负责它的下半生,直到Pod的生命结束。

  • 随后,我们通过Kubectl提交一个新的映射到该Pod的Service的创建请求,Controller Manager会通过Label标签查询到相关联的Pod实例,然后生成Service的Endpoints信息,并通过API Server写入到etcd中,接下来,所有Node上运行的Proxy进程通过API Server查询并监听Service对象与其对应的Endpoints信息,建立一个软件方式的负载均衡器来实现Service访问到后端Pod的流量转发功能。

四.Kubernetes集群组件

1.Master组件

Kube-apiserver

  • Kubernetes API,集群的统一入口, 各组件协调者,以 RESTful API提供接口服务(支持网站标准协议)所有对象资源的增删改查和监听操作都交给 APIServer 处理后再提交给 Etcd 存储数据

Kube-controller-manager

  • 处理集群中常规后台任务,一个资源对应一个控制器,比如容器资源(pod)挂了,若控制器还存活,则会重新创建该资源,所以修复能力依赖于控制完成,controllerManager 负责管理这些控制器

kube-scheduler

  • 根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署可以部署在同
    一个节点上,也可以部署在不同的节点上,所有资源的创建不一定都要经过调度器

etcd

  • 分布式键值存储系统
    用于保存集群状态数据,比如 Pod、Service 等对象信息

2.Node组件

kubelet

  • kubelet 是 Master 在 Node 节点上的 Agent(代理),管理本机运行容器的生命周期,比如创建容器、Pod 挂载数据卷、下载 secret、获取容器和节点状态等工作,kubelet 将每个 Pod 转换成一组容器

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

docker 或 rocket(容器类型)

  • 容器引擎
  • 运行容器

五.Kubernetes核心概念

在这里插入图片描述

1.Pod

  • K8s 中最小的部署单元,是一组容器的集合
    一个 Pod 中的容器共享网络命名空间,像一个小型局域网一样,所以其中容器之间可以彼此通讯
    Pod 是短暂的,因为其一旦故障,会重新创建新的
    K8s 管理的基本都是业务,而业务都是跑在 Pod 上

2.Controllers(控制器)

  • ReplicaSet:创建资源,确保预期的 Pod 副本数量
  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaemonSet:确保所有 Node 运行同一个 Pod,即管理进程资源
  • Job:一次性任务
  • Cronjob:周期性计划定时任务

更高级层次对象,部署和管理Pod

3.Service

  • 对外提供服务,防止 Pod 失联,定义一组 Pod 的访问策略,方便访问

4.Label

  • 标签,附加到某个资源上,用于关联对象、查询和筛选

5.Namespaces

  • 命名空间,将对象逻辑上隔离,用于角色管理和控制

6.Annotations

  • 注释,方便阅读
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值