Kubernetes 设计概要(非完整版)

原创
2014/06/11 11:45
阅读数 1.2K

Kubernetes 设计概要

(原文:https://github.com/GoogleCloudPlatform/kubernetes/blob/master/DESIGN.md)


概述

---------------------------------

* Kubernetes 构建于 Docker之上,是基于container集群的调度服务。用户在需要 container 时,会向 Kubernetes 发起请求,Kubernetes 会从worker节点中选取合适的container回应。

* 随着基于container的应用和系统逐渐扩张,已经出现很多便捷的container工具,它们的工作原理大同小异(Kubernetes也不例外)

* 更进一步看 Kubernetes 的架构时,我们更倾向将其作为 worker节点 和 service 的 master 来看


关键概念:Container Pod

---------------------------------

* 不同于 Docker 基于独立的 container,Kubernetes 是基于 pod

* pod 是一组 containers,被调度分配在同一个物理节点之上

* 除上之外,一个 pod 还拥有相同的 IP 、存储 和 端口映射


关键概念:Lables

---------------------------------

* pods 通过 labels 进行组织,每个pod都可以有多个lables(key=>value形式)

* label机制是 services 和 replicationControllers 工作的基础(其操作单元)

* label可以叠加,以集合的形式使用,

如:

有10个节点拥有label{tier=frontend,stack=prod},但想在replicationController 中分为两类

可以其中(假如)9个节点为{tier=frontend,stack=prod,canary=no}

另外1个节点为{tier=frontend,stack=prod,canary=yes}

则可在 replicationController 中分别控制 



Kubernetes 节点

---------------------------------

* Kubernetes 节点上运行 Docker containers, Docker 负责管理下载镜像、运行 container 等细节

* Kubernetes 


Kubelet

* Kubelet 是逻辑中继器,是 Compute Engine image 的一部分

* Kubelet 以 container 为单位,每个 conatiner manifest(manifest示例:https://developers.google.com/compute/docs/containers/container_vms#container_manifest)

  为一个 YAML 文件,在其中描述了 pod 的属性

* Kubelet 包含一簇的 manifest,在其中描述了container/pod的工作机制,并且 Kubelet 要负责保证 containers 依照 manifest 的定义被启动和执行

* manifest 有以下提供方式

- File:通过命令行传入,每20秒检查一次

- HTTP endpoint:作为参数manifest,也是每20秒检查一次

- etcd server:Kubelet 可监察 etcd 上的指定文件,对manifest的更改可以更快的发现并同步

- HTTP server:Kubelet 提供了HTTP接口以提交manifest


Kubernetes Proxy

* 每个worker节点上运行了一个network proxy

* proxy 支持 TCP流转发 或 round-robin 转发


Kubernetes Master

---------------------------------

* etcd

- 稳定可靠地存储所有 master 的状态

* Kubernetes API Server

- pod:每个pod都在API层有表现

- service:service是proxy的配置单元,service会被命名,并指向一个或多个pod

- replicationController:一个复制controller 带有一个模板,并保证时刻都有一定数量的复制器在运行

- API提供的其他功能

-- 将pod调度到worker节点上,目前的调度器实现很简单

-- 维护pod和service配置的一致性

* Kubernetes Controller Manager Server

- repliationController 配置项不是必须的

- repliationController 是基于pod

- 为了更好的层次,repliationController 的逻辑实际由另一个server负责,这个新server会监测etcd对repliationController 的操作,然后用 Kubernetes API 去实施 repliation 


Network Model

---------------------------------

* Kubernetes 扩展了 Docker 的网络模型,为使得每个 pod 在共享的网络中只有一个 IP,并能通过这个IP和其他物理机/container无障碍的通信


展开阅读全文
打赏
2
9 收藏
分享
加载中
更多评论
打赏
0 评论
9 收藏
2
分享
返回顶部
顶部