在k8s中,有各類各樣的概念和術語。這些概念是必需要學習和掌握的。咱們先羅列下全部概念,而後再一個個看具體實例。html
大概說一下這些概念:node
若是不理解沒啥關係,看一遍有印象下,下面咱們一個個琢磨琢磨。mysql
k8s的master節點上有三個進程,它們都是以docker的形式存在的。咱們在k8s的master節點看docker ps
就能夠看到這幾個進程:sql
8824aad1ee95 e851a7aeb6e8 "kube-apiserver --ad…" 3 days ago Up 3 days k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f23c0965aad6df9f61b1c9c4bb953cf5_0 a9ce81ec9454 978cfa2028bf "kube-controller-man…" 3 days ago Up 3 days k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_1dc44822f21a9cbd68cc62b1a4684801_0 85da3f6e700f d2c751d562c6 "kube-scheduler --ad…" 3 days ago Up 3 days k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_b6155a27330304c86badfef38a6b483b_0
其中的 apiserver 是提供 k8s 的 rest api 服務的進程。固然它也包括了 restapi 的權限認證機制。 k8s 的 apiserver 提供了三種權限認證機制:docker
咱們也能夠經過使用kubectl proxy
在 master 上來建立一個代理,從而外部能夠訪問這個 k8s 集羣。api
kube-controller-manager 是用來管理全部的 controller 的。以前咱們說的 Replication Controller 就是一種管控 Pod 副本的Controller, 其餘相關的 Controller 還有:網絡
kube-scheduler 負責 Pod 調度,接收 Controller Manager 建立的新的Pod,爲其選擇一個合適的Node,而且在Node上建立Pod。學習
一個k8s集羣只有一個master節點,因此 master 節點的高可用性是一個問題,一旦 master 節點掛了,整個集羣也就掛了。這點真有點神奇。因此網上關於搭建高可用的k8s Master 節點的方案有不少:spa
https://jishu.io/kubernetes/kubernetes-master-ha/
https://blog.51cto.com/ylw6006/2164981
https://jimmysong.io/kubernetes-handbook/practice/master-ha.html命令行
Node 是 k8s 的工做節點,Node 通常是一個虛擬機或者物理機,每一個 node 上都運行三個服務:
docker 就是 docker server,它提供
kubelet 是一個管理系統,它管理本個node上的容器的生命週期。它主要功能就是定時從某個地方獲取節點上pod/container的指望狀態,並調用對應的容器平臺接口,來達成這個狀態。它能夠設置 http 監控,命令行監控等方式。
kube-proxy 是管理 service 的訪問入口,包括集羣內 pod 到 service 的訪問,以及集羣外訪問service。
其實k8s自身的可用性是比較弱的,若是master掛了,那麼master上的三個服務也就掛了。node掛了,若是node上的pod是被 controller控制住的話,controller會在其餘node上啓動對應的pod。