【Kubernetes 001】组件说明

Kubernetes是当前企业级别容器管理中炙手可热的明星,从这一节开始我们就一起来学习下它。因为是基于容器的管理工具,所以学习K8s之前应该首先有容器相关的知识,例如docker。首先从k8s的基本介绍开始。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

Kubernetes的特点

顺便提一嘴,之所以kubernetes被称为k8s,单纯因为k和s之间有8个字符,没有别的深意。

之所以k8s能打败MESOS和Docker Swarm,达到现在在容器资源管理领域如日中天的状态,因为其有如下几个特点:

  • 轻量。因为是通过编译型Go语言开发,k8s消耗的资源很小
  • 开源。这个对于企业使用非常重要
  • 弹性伸缩。互联网企业业务量上升下降非常迅速,所以资源的增删也必须要平滑,k8s可以做到
  • 负载均衡。k8s自带IPVS负载均衡框架,不需要再额外进行配置

Borg架构

K8s的前身是Google内部的Borg系统,两者架构类似,所以我们先来看看Borg的整体架构,如下
1-borg.png

几个组件功能如下:

  • BorgMaster - 相当于包工头,不主动干活,主要是管理下面真正干活的Borglet
  • Borglet - 相当于工人,真正干活的
  • borgcfg/clt/web browser - 几种访问Borg的方式
  • scheduler - 任务分发者

仔细观察这个架构会发现有下面这些特点:

  • 凡是需要高可用的节点,子节点个数都是奇数(3/5/7),这是便于以后的投票考虑的,例如上面的BorgMaster
  • scheduler并没有直接和任务接收者Borglet通信,而是将任务信息存储在键值对数据库Paxos中,Borglet去数据库中查看是否有自己的任务

Kubernetes架构

下面再看k8s的架构就比较好理解了
2-k8s.png

k8s和Borg的架构还是有一些区别的

  • 负责调度的scheduler并没有直接和数据库etcd通信了,而是改为和API Server通信,再由API Server和etcd通信
  • 需要注意,按照图中的方式,master是没有参与具体工作的。如果配置master也做为工作节点之一,那么master中也会有kubelet和kube-proxy

Master

API server做为所有交互的统一入口,是非常繁忙的,不过好在其他组件往往有自己的本地缓存。后面我们会详细来看官方是如何给API server来减压的。

Master的controller是replication controller,用来确保Pod副本的数量一直是符合预期的,动态剔除坏掉的并自动补充新的。这里之所以说预期,是因为如果物理机器性能受限的话可能无法承载足够的Pod

scheduler负责接受任务,并选择合适的节点去分配任务。

ETCD因为比较重要,下面单独说。

ETCD

etcd这个名字来源于etc,一个linux系统中存储配置文件的目录名字,加上d,表示distributed。etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。我们知道,在分布式系统中,各种服务的配置信息的管理分享,服务的发现是一个很基本同时也是很重要的问题。CoreOS 项目就希望基于 etcd 来解决这一问题。

需要说明的是,etcd有v2版本和v3版本,v2版本将数据存储于内存中,v3版本可以将数据持久化在硬盘里面。在k8s v1.11之前只支持v2版本,v1.11之后弃用了v2版本,只能用v3版本。所以如果k8s集群版本比较旧,需要注意及时对etcd数据进行备份。

详细的etcd单独的教程可以参考这里

Worker Node

每个node必须要安装3个组件

  • kubelet
  • kube-proxy
  • 容器引擎,例如docker

kubelet负责和docker沟通,来操作和管理容器的生命周期。kube-proxy会操作防火墙,例如iptables,来实现pod与pod之间的沟通,以及pod与外界的沟通。

一些插件

下面是一些为了更加丰富k8s功能而加入的常用插件,以后我们也会一个个去了解

  • CoreDNS

CoreDNS,顾名思义是用来给集群中的各种服务提供域名和IP对应关系的

  • Dashboard

Dashboard,给k8s集群提供一个BS结构的访问体系

  • Ingress Controller

官方只提供了四层代理,而Ingress Controller为我们提供了七层代理

  • Federation

提供一个可以跨集群中心多k8s统一管理功能

  • Prometheus

提供k8s的监控能力

  • ELK

提供k8s集群日志统一分析平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值