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無障礙的通訊

相關文章
相關標籤/搜索