01.Kubernetes概述


云计算的三种模式

单机到云原生的演变

IAAS

Infrastructure as a Service 基础设施即服务

PAAS

platform as a service 平台即服务

SAAS

Software as a Service

容器编排工具

Borg

Borg 是 Google 早期开发的集群管理系统,用于管理大规模的容器化⼯作负载。它是 Google 内部的⼀个关键基础设施,自 2003 年开始使用。

Omega

Omega 是 Borg 的⼀个后继系统,于 2013 年开始开发,旨在解决 Borg 在大规模、动态、多租户环境下多租户、声 明 式 配 置。

kubernetes

Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。kubernetes拥有一个庞大且快速增长的生态系统。kubernetes的服务、支持和工具广泛可用。

kubernetes这个名字源于希腊于,意为舵手或飞行员。k8s这个缩写是因为k和s之间有八个字符的关系。google在2014年开源了kubernetes项目。kubernetes建立在google在大规模运行生产工作负载方面拥有十几年的经验的基础上,结合了社区中最好的想法和实践。

kubernetes优势

  • 服务发现和负载均衡
  • 存储编排(添加任何本地或云服务器)
  • 自动部署和回滚

  • 自动分配 CPU/内存资源

  • 弹性伸缩
  • 自我修复(需要时启动新容器)
  • Secret(安全相关信息)和配置管理
  • 大型规模的支持
    • 每个节点的Pod数量不超过 110
    • 节点数不超过 5000
    • Pod总数不超过 150000
    • 容器总数不超过 300000
  • 开源

kubernetes现状

kubernetes组件

一个kubernetes集群由一组被称作节点的机器组成。这些节点上运行Kubernetes所管理的容器化应用。集群具有至少一个工作节点。

工作节点托管作为应用负载的组件的Pod。控制平面管理集群中的工作节点和pod。为集群提供故障转移和高可用性,这些控制平面一般跨多主机运行,集群跨多个节点运行。

Mater:集群中的一台服务器用作Master,负责管理整个集群。Master是集群的网关和中枢,负责诸如为用户和客户端暴露API、跟踪其他服务器的健康状态、以最优方式调度工作负载,以及编排其他组件之间的通信任务,它是用户或客户端与集群之间的核心联络点,并负载Kubernetes系统的大多数集中式管控逻辑。单个master节点即可完成其所有的功能,但出于冗余及负载均衡等目的,生产环境中通常需要协同部署多个此类主机。

Node: Node是Kubernetes集群的工作节点,负责接收来自master的工作指令相应地创建或销毁Pod对象,以及调整网络规则以合理地路由和转发流量等。理论上讲,Node可以是任何形式的计算设备,不过Master会统一将其抽象为Node对象进行管理。

Kubernetes将所有Node资源集结于一处形成一台更加强大的服务器,在用户将应用部署于其上时,Master会使用调度算法将其自动指派至某个特定的Node运行。在Node加入集群或从集群中移除时,Master也会按需重新编排影响到的Pod,于是用户无须关心其应用究竟运行何处。

kubernetes核心组成

控制平面组件可以在集群中的任何节点上运行。然后,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件,并且不会在此计算机上运行用户容器。

Master组件

kube-apiserver

Api server负责输出restful风格的kubernetes API,它是发往集群的所有REST操作命令的接入点,并负责接收、校验并响应所有的REST请求,结果状态被持久存储于etcd中。因此,api server是整个集群的网关。

etcd

kubernetes集群的所有状态信息都需要持久存储于存储系统etcd中,不过,etcd是由CoreOS基于Raft协议开发的分布式键值存储,可用于服务发现、共享配置以及一致性保障(如数据库主节点选择、分布式锁等)。因此,etcd是独立的服务组件,并不隶属于Kubernetes集群自身。

etcd不仅能够提供键值数据存储,而且还为其提供了监听机制,用于监听和推送变更。Kubernetes集群系统中,etcd中的键值发生变化时会通知到api server。

kube-controller-manager

kubernetes中,集群级别的大多数功能都是由几个被称为控制器的进程执行实现的,这几个进程被集成于kube-controller-manager守护进程中。由控制器完成的功能主要包括生命周期功能和api业务逻辑。

kube-scheduler

Kubernetes是用于部署和管理大规模容器应用的平台,根据集群规模的不同,其托管运行的容器很可能会数以千计甚至更多。api server确认pod对象的创建请求之后,便需要由scheduler根据集群内各节点的可用资源状态,以及要运行的容器的资源需求做出调度决策。

Node组件

kubelet

kubelet是运行于工作节点上的守护进程,它从api server接收关于pod对象的配置信息并确保他们处于期望的状态,kubelet会在api server上注册当前的工作节点,定期向master汇报节点资源使用情况。

kube-proxy

每个工作节点都需要运行一个kube-proxy守护进程,它能够按需为service资源对象生成iptables或者ipvs规则,从而捕获当前service的流量并将其转发至正确的后端pod对象。

容器运行时环境

每个node都要提供一个容器运行时环境(CRI),它负责下载镜像并运行容器。kubernetes支持多个容器运行时环境。

kubernetes插件与附件

组件

  • apiserver
  • scheduler
  • controller-manager
  • kubelet
  • kubeproxy

插件

  • Docker
  • CoreDNS
  • Ingress Controller

附件

  • premetheus
  • dashboard
  • federation

补充知识Restful

对应的中文是rest式的;Restful web service是⼀种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是⼀种ROA(The Resource-Oriented Architecture)(面向资源的架构)。

在Restful之前的操作:

RESTful用法:


文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
 上一篇
02.Pod与网络 02.Pod与网络
pod概念.ynkhgndorpoq{zoom:33%;} 首先我们要明确一个概念,Kubernetes并不是只支持Docker这一个容器运行时,Kubernetes通过CRI这个抽象层,支持除Docker之外的其他容器运行时,比如rkt甚
2024-09-17
下一篇 
手动安装btop程序 手动安装btop程序
简介btop是一个界面美观的资源查看器,有丰富的功能选项,可视化的配置菜单。还是非常好的top平替工具。 安装好之后界面是这样的。
  目录