天天看點

元件作用與Pod概念

學習自尚矽谷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,即

​ 在給定的時間點隻運作一次

​ 周期性地在給定時間點運作