暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

浅谈Kubernetes那些事儿...

火火日记 2019-06-29
215

上周我们谈到了docker,而docker往往不是在单节点环境下运行,规模比较大的企业docker一般都跑在成千上百个节点的集群上。那么问题就来了,这么多节点应该如何部署,如何扩展,如何管理?就在这个时候K8s诞生了...



K8s由谷歌开发并在2014年6月宣布开源。

K8s是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署,扩展和操作,提供以容器为中心的基础架构。


一. K8s由如下特点:

1. 便携性:无论是在On-Prem,公有云,私有云,混合云都可以支持

2. 可扩展性:它是模块化,可插拔,可挂载,可组合的,支持各种形式的扩展

3. 自修复:它可以自保持应用状态,可自重启,自复制,自缩放,通过声明式语法提供强大的自修复能力


二. 为什么我们需要 Kubernetes,它能做什么?

Kubernetes 可以在物理或虚拟机集群上调度和运行应用程序容器。然而,Kubernetes 还允许开发人员从物理和虚拟机’脱离’,从以主机为中心的基础架构转移到以容器为中心的基础架构,这样可以提供容器固有的全部优点和益处。Kubernetes 提供了基础设施来构建一个真正以容器为中心的开发环境。

Kubernetes 满足了生产中运行应用程序的许多常见的需求,例如:

  • Pod 提供复合应用并保留一个应用一个容器的容器模型

  • 挂载外部存储

  • Secret管理

  • 应用健康检查

  • 副本应用实例

  • 横向自动扩缩容

  • 服务发现

  • 负载均衡

  • 滚动更新

  • 资源监测

  • 日志采集和存储

  • 支持自检和调试

  • 认证和鉴权

这提供了平台即服务 (PAAS) 的简单性以及基础架构即服务 (IAAS) 的灵活性,并促进跨基础设施供应商的可移植性。


三. K8s 架构


1. Master Node

Master是控制集群的大脑,包含API Server,Scheduler, Control Manager, etcd。Master运行Linux操作系统,可以是物理机或者虚拟机,为了实现HA(High availability)也可以设置多个Master


  • API Server

    可定义集群网络状态,可对外提供Restful接口

  • Scheduler

    负责内部作业调度,分配工作节点

  • Control Manager

    负责维护集群的状态/比如故障检测,自动扩展,滚动更新等

  • etcd

    存储K8s集群配置和状态



2. Work Node

Workd Node的指责是运行容器应用。Work Node由 Master Node管理。Work Node运行在Linux操作系统,可以是物理机或者是虚拟机。


  • kubelet

    负责维护容器的生命周期,包括创建,修改,监控,删除等

  • kube-proxy

    为Pod对象提供代理及负载均衡

  • pod
    是K8s中最小最小的工作单元。Pod可以理解为Docker单机环境,每个Pod中包含一至多个容器,Pod中的容器会作为一个整体被Master Node调度到一个Work Node上运行。


另外,下面是Youtube上通俗易懂讲K8s架构的视频,可以看下


参考文献:

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

文章转载自火火日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论