Kubernetes理论基础
1 介紹
高可用集群副本數據最好是 >= 3 奇數個
2 組件介紹
k8s架構
2.1 核心組件
2.1.1 api server
所有服務訪問統一入口
2.1.2 ControllerManager
維護副本的期望數
2.1.3 Scheduler
負責介紹任務,選擇合適的節點進行分配任務
2.1.4 etcd
鍵值對數據庫,存儲K8S集群的所有重要信息(持久化)
- ETCD
etcd 的官方將它定位程一個可信賴的分布式鍵值存儲服務,它能夠為整個分布式集群存儲一些關鍵服務數據,協助分布式集群的正藏運轉。
架構圖
AWL:日志
Store:持久化寫入本地磁盤
2.1.5 Kubelet
直接跟容器交互實現容器的生命周期管理
2.1.6 Kube-proxy
負責寫入規則至IPTABELS、IPVS,實現服務映射訪問的
2.2. 其他插件
2.2.1 CoreDNS
可以為集群中的SVC創建一個域名、IP對應關系解析
2.2.2 dashboard
給K8S集群提供一個B/S結構的訪問體系
2.2.3 Ingress Controller
官方只能實現四層代理,Ingress可以實現7層
2.2.4 fedetation
提供一個可以跨集群中心多K8S統一管理功能
2.2.5 prometheus
提供一個K8S集群監控能力
2.2.6 ELK
提供K8S集群日志統一分析介入平臺
3 Pod
3.1 Pod概念
- 自主式Pod
- 控制器管理的Pod
注:官方不是安上面的分類的
3.1.1 Pod服務類型
HPA
Horizontal Pod Autoscaling僅適用于Deployment和ReplicaSet,在V1版本中僅支持根據Pod的CPU利用率擴縮容,在vlalpha版本中,支持根據內存和用戶自定義的metric擴縮容。
StatefulSet
是為了解決有狀態服務的問題(對應Deployments和ReplicaSets是為了無狀態服務而假設),其場景包括:
- 穩定的持久化存儲:即Pod重新調度后還是能訪問到相同的持久化數據,基于PVC來實現。
- 穩定的網絡標志,即Pod重新調度后其PodName和HostName不變,基于Headless Service(即沒有Cluster Ip的Service)來實現。
- 有序部署,有序擴展,即Pod是有順序的,在部署或者擴展的時候要依據定義的順序依次進行(即從0到N-1,在下一個運行之前所有的Pod必須都是Running和Read狀態),基于init containers來實現
- 有序收縮,有序刪除(即從N-1到0)
DaemonSet
確保全部(或者一些)Node上運行一個Pod的副本。當有Node加入集群時,也會為他們新增一個Pod。當有Node從集群移除時,這些Pod也會被回收。刪除DaemonSet將會刪除它創建的所有Pod
使用DaemonSet的一些典型用法
- 運行集群存儲daemon,例如在每個Node上運行glusterd、ceph
- 在每個Node上運行日志手機daemon,例如fluentd、logstash
- 在每個Node上運行監控daemon,例如Prometheus Node Exporter
Job
負責批處理任務,即執行一次任務,它保證批處理任務的一個或多個Pod成功結束
Cron Job
管理基于時間的Jod,即
- 在給定的時間點只運行一次
- 周期性地在給定的時間點運行
3.1.2 Pod 服務發現
4 網絡通訊方式
Kubernetes的網絡模型假定了所有的Pod都在一個可以直接連通的扁平的網絡空間中,這在GCE(Google Comute Engine)里面是現成的網絡模型,Kubernetes假定這個網絡已經存在。而在私有云里面搭建Kubernetes集群,就不能假定這個網絡已經存在了。我們需要自己實現這個網絡假設,將不同節點上的Docker容器之間的互相訪問先打通,然后運行Kubernetes。
- 同一個Pod內的多個容器之間:lo
- 各Pod之間的通訊:Overlay Network
- Pod與Service之間通訊:各節點的Iptables規則
Flannel是CoreOS團隊針對Kubernetes設計的一個網絡規劃服務,簡單來說,它的功能是讓集群中的不同節點主機創建的Docker容器都具有全集群唯一的虛擬IP地址。而且它還能在這些IP地址之間建立一個覆蓋網絡(Overlay Network),通過這個覆蓋網絡,將數據包原封不動地傳遞到目標容器內。
etcd之Flannel提供說明
- 存儲管理Flannel可分配的IP地址段資源
- 監控etcd中每個Pod的實際地址,并在內存中建立維護Pod節點路由表
學習地址:
https://www.bilibili.com/video/BV1w4411y7Go
總結
以上是生活随笔為你收集整理的Kubernetes理论基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux服务器各种后门查杀
- 下一篇: kubernetes集群命令行工具kub