天天看點

K8S 02 快速入門

Pod/Pod控制器

Name / Namespace

Label / Label選擇器

Service / Ingress

Pod: 能夠被運作的最小邏輯單元. 邊車(SideCar)模式, 類似那種帶挎抖的機車.

  1個 Pod 可以運作多個容器, 容器之間共享 UTS + NET + IPC 名稱空間.

Pod 控制器: 管理 副本數,生命周期,健康狀态等, K8S 提供多種控制器:

  Deployment, DaemonSet, ReplicaSet, StatefulSet, Job, Cronjob

每一種功能都是一種 "資源" , 隔離資源 -> Namespace, 在 metadata 中定義了各種資源的 name.

資源與标簽之間是多對多的關系. Label選擇器: 可以通過标簽來過濾資源.

标簽的組成是 key = value

在 K8S 中, 每個 Pod 都會配置設定一個獨立的 IP 位址. 但這個IP位址會随着Pod的銷毀而消失.

一個service 可以看做一組提供相同服務的 Pod 的對外通路接口, service 作用于哪些 Pod 是通過标簽選擇器來定義的。

Ingress 是 K8S 叢集裡的工作在 OSI 網絡參考模型下, 第7層的應用(最上層應用層) 對外暴露的接口.

  abc.od.com/sh,  通過 Ingress 決定這個位址找哪個 service, service -> Pod 決定找哪個 Pod.

Service 暴露的是 ip + port 的形式, 而 Ingress 則可以排程不同業務域,不同 URL 通路路徑的業務流量

配置存儲中心 -> etcd服務, 存儲叢集中繼資料資訊, key-value 形式

主要(master)節點

  kube-apiservice: restful API 接口. 負責資料互動. 通信樞紐, 資源配額入口.

  kube-controller-manager: 管理控制器的,有一系列控制器, Node Controller, Deployment Controller, Service Controller......

  kube-scheduler: 接收排程 pod 到适合的運算節點上. 預先政策(predict), 預選政策(priorities)

運算(node)節點

  kube-kubelet 服務: 定時擷取 pod 的期望狀态, 真正幹活的, 定時彙報目前節點的狀态給 apiserver

  kube-proxy服務:每個節點運作網絡代理,service資源的載體, 管理 clusterip -> podip, 建立pod網絡和叢集網絡的關系. 

    流量排程模式: IPVS 推薦. 

CLI用戶端

  kubectl : 指令行工具

  CNI 網絡插件 -> flanel / calico

  服務發現插件 -> coredns

  服務暴露插件 -> traefik

  GUI管理插件 -> dashboard

K8S 02 快速入門
K8S 02 快速入門

service 網絡是虛拟網絡. 192.168.0.0/16

Pod 網絡: 實際網絡. 172.7.21.0/24 (Node 主機的 IP 位址為 10.4.7.21)

Cluster 節點網絡. 10.4.7.0/24

K8S 02 快速入門
K8S 02 快速入門

實際上, 一個server 上可以同時部署 master 和 node 節點, 當然, 如果資源足夠充分, 可以拆分 master 和 node 到不同機器上.

左下角的2個大框部分才是 K8S, 上邊,右邊的實際上不屬于 K8S 範疇.

K8S 02 快速入門