Kubernetes 设计概要(非完整版)

Kubernetes 设计概要git

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


概述网络

---------------------------------架构

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

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

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


关键概念:Container Podspa

---------------------------------命令行

* 不一样于 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无障碍的通讯

相关文章
相关标签/搜索