學習自尚矽谷Kubernetes教程(K8s入門到精通)
API SERVER:所有服務通路統一入口
ControllerManager:維持副本期望數目
Scheduler:負責介紹任務,選擇合适節點配置設定任務
ETCD:鍵值對資料庫,存儲K8S叢集所有重要資訊(持久化)
Kubelet:直接與容器引擎互動實作容器的生命周期管理
Kube-proxy:負責寫入規則至IPTABLES、IPVS實作服務映射通路
CoreDNS:為叢集中的SVC建立一個域名IP的對應關系解析
Dashboard:給K8s叢集提供一個B/S結構通路體系
Ingress Controller:官方隻能實作四層代理,該元件可以實作七層代理
FEDETATION:提供一個可以跨叢集中心多k8s統一管理功能
prometheus:提供k8s叢集的監控能力
elk:提供k8s叢集日志統一分析介入平台
高可用叢集副本資料最好是 >= 3的奇數
自主式Pod
控制器管理的Pod
解決無狀态服務問題
RC:老版本使用;確定容器應用的副本數始終保持在使用者定義的副本數;
當有容器一場退出,自動建立新Pod替代;異常而多出的容器也會自動回收。
RS:與RC無本質差距,但支援集合式的selector,即name:version
Deployment
滾動更新:
操控RS操作多個v1的pod,當使用滾動更新時,生成RS-1,其下每生成一個V2的pod會在原RS下删除一個v1的pod,直到全部完成,停用RS
復原更新:
RS-1下一個v2的pod有問題,deployment會操控啟用原本停止的RS,得到v2 pod轉化為v1 pod
HPA(Horizontal Pod Autoscaling ):僅僅适用于Deployment和ReplicaSet,根據CPU使用率水準自動擴充
解決有狀态服務問題
StatefullSet
穩定的持久化存儲,即Pod重新排程後還能通路到相同的持久化資料,基于PVC實作
穩定的網絡标志,即Pod重新排程後PodName和HostName不變,基于Headless Service(即沒有Cluster IP 的service)實作
有序部署,即Pod是有順序的,在部署或者擴充的時候依據定義的順序依次進行(即從0到N-1,在下一個Pod運作前之前的所有Pod必須是Running和Ready狀态),基于init containers實作
有序收縮,有序删除(N-1到0)
DaemonSet
確定全部或者一些Node上運作一個Pod的副本。當有Node加入叢集時,也會為他們新增一個Pod。當有Node從叢集移除時,這些Pod也會被回收。删除DaemonSet會删除它建立的所有Pod
用法:
運作叢集存儲daemon,例如在每個Node上運作glusterd、ceph
在每個Node上運作日志收集daemon,例如fluentd、logstash
在每個node上運作監控daemon,例如Prometheus、node exporter
Job
負責批處理任務,即僅僅執行一次的任務,保證批處理任務的一個或多個Pod成功結束
CronJob
管理基于時間的job,即
在給定的時間點隻運作一次
周期性地在給定時間點運作