1. 程式人生 > >k8s系列0--Kubernetes基礎知識

k8s系列0--Kubernetes基礎知識

Once 基於 輪詢 系列 com 多個 href daemon 負載

Kubernetes介紹

  • 參考:Kubernetes核心組件解析
  • Pod是k8s的最小調度單元
  • 每個pod有獨立的IP,但是pod的IP是不可靠的,重新調度pod就會改變IP,service概念就是為了解決這些問題。
  • 給service會分配虛擬IP即ClusterIP,通過ClusterIP和端口,訪問會自動負載均衡到後端的pod上。
  • 目前k8s提供兩種負載均衡策略:RoundRobin和SessionAffinity。
    • RoundRobin:輪詢模式
    • SessionAffinity:基於客戶端IP的會話保持
  • 也可以通過Headless Service的概念,不設置ClusterIP只給出後端Pod列表,由用戶自己選擇。
  • service也可以不綁定選擇pod,單獨定義Endpoints類型的資源來提供服務。即可實現跨namespace的服務訪問。
  • Pod和Service都是集群內的虛擬概念,包括IP等信息。故集群外部無法訪問Pod或Service,可以將端口映射到宿主機實現訪問。

    基本資源類型

  • Kubernetes中StatefulSet介紹
  • Kubernetes中的親和性與反親和性對應於pod調度到那些node節點上。
  • Kubernetes1.3新特性:POD中的初始化容器,該文介紹了初始化容器的類結構,及相關特性。
    • 下文基於kubernetes 1.5.2版本編寫
    • 概念:Init Container就是做初始化工作的容器。可以有一個或多個,如果有多個,這些 Init Container 按照定義的順序依次執行,只有所有的InitContainer 執行完後,主容器才啟動。由於一個Pod裏的存儲卷是共享的,所以 Init Container 裏產生的數據可以被主容器使用到。
    • Init Container可以在多種K8S資源裏被使用到如Deployment、DaemonSet, PetSet/StatefulSet、Job等,但歸根結底都是在Pod啟動時,在主容器啟動前執行,做初始化工作。
  • k8s init-Containers,該文使用的k8s版本是1.9
  • 官方關於init-containers的說明:Init Containers

    cron Job類型

  • 該文更新,參考:Kubernetes中的Job和CronJob,批量任務執行
  • 該文老舊,不宜參考。參考:Kubernetes的Cron Job定時任務小試

k8s系列0--Kubernetes基礎知識