一、概述
kubernetes,簡稱k8s
二、知識圖譜
2.1、基礎介紹
發展:服務說明、資源管理器、k8s優勢
k8s組件說明:Borg組件說明、k8s結構說明【網絡結構、組件結構】
關鍵字以及含義
2.2、基礎概念
Pod概念:自主式Pod、管理器管理的Pod【RS、RC、deployment、HPA、StatefullSet、DaemonSet、Job,CronJob】、服務發現、Pod協同
通訊模式:網絡通訊模式、組件通訊模式
2.3、k8s安裝
系統初始化
Kubeadm部署安裝
常見問題分析
2.4、資源清單
k8s中資源概念:什麼是資源、名稱空間級別的資源、集羣級別的資源
資源清單:yam語法格式
通過資源清單編寫Pod
Pod生命週期:initC、Pod phase、容器探針【livenessProbe、readinessProbe】、Pod hook、重啓策略
2.5、Pod控制器
類型:ReplicationController和RelicaSet、Deployment、DaemonSet、Job、CronJob、StatefulSet、Horizontal Pod Autoscalling
2.6、服務發現
Service原理:分類【ClusterIP、NodePort、ExternalName】、實現方式【userspace、iptables、ipvs】
Ingress:nginx【http代理訪問、https代理訪問、使用cookie實現會話關聯、BasicAuth、Nginx進行重寫】
2.7、存儲
configMap【配置文件】:創建【使用目錄創建、使用文件創建、使用字面值創建】、Pod中使用configMap【ConfigMap來替代環境變量、ConfigMap設置命令行參數、通過數據卷插件使用COnfigMap】、熱更新【實現、更新觸發】
Secret【需要加密的】:分類、Service Account、Opaque Secret【創建、Secret掛載到Volume、Secret導出到環境變量】、kubernetes.io/dockerconfigjson
volume:卷的類型、emptyDir【說明、用途、實戰】、hostPath【說明、用途、實戰】
PV:概念【PV、PVC、類型】、後端類型、訪問模式、回收策略、狀態、實戰
2.8、調度器【把pod定義到想要的節點運行】
基礎:概念、調度過程、自定義調度器
調度親和性:親和性運算符、nodeAffinity【[preferred/required]DuringSchedulingIgnoredDuringExecution】、podAntiAffinity【[preferred/required]DuringSchedulingIgnoredDuringExecution】
污點:概念、Taint【組成、設置、查看、去除】、Tolerations【設置】
固定節點調度:PodName指定調度、標籤選擇器調度
2.9、集羣安全機制
機制說明
認證:http token、http base、https
鑑權:AlwaysDeny、AlwaysAllow、ABAC、Webhook、RBAC【Role and ClusterRole、RoleBinding and CluesterRoleBinding、Resources、to Subjects、創建一個系統用戶管理k8s Dev名稱空間】
准入控制
2.10、HELM
概念:組成構成、HELM部署、自定義
部署實例:部署dashboard、metrics-server【HPA演示、資源限制(Pod、名稱空間)】、Prometheus、EFK
2.11、運維
Kubeadm源碼修改:默認證書只有一年
k8s高可用構建
三、基礎介紹
3.1、發展
IaaS[Infrastructure as a Service,阿里雲]→PaaS[Platform as a Service ,新浪雲]→SaaS[Software as a Service ,office 365]
docker 是 PaaS層面的,平臺管理層,
3.2、資源管理器
→Apache mesos【分佈式資源管理框架,Twitter 2019年放棄,轉k8s】
→swarm【docker 推,輕量,功能少,實現架構好,2019年阿里雲放棄使用,轉k8s】
→k8s【Google,10年容器化基礎架構borg,go語言翻寫borg】
特點:輕量級【消耗資源小】、開源、彈性伸縮、負載均衡【IPVS】
3.3、組件介紹
3.3.1、borg架構介紹
集羣,選舉,奇數
3.3.2、k8s架構
1》核心組件
api server :所有服務訪問統一入口
ControllerManager:維持副本期望數目
Scheduler:負責介紹任務,選擇合適節點進行任務分配
Kubelet:直接跟容器引擎交互實現容器的生命週期管理
Kube-proxy:負責寫入規則值IPtabbles、ipvs實現服務映射訪問
etcd:存儲k8s集羣所有重要信息【持久化】
etcd:可信賴的分佈式鍵值存儲服務,能夠爲整個分佈式集羣存儲一些關鍵數據,協助分佈式集羣的正常運轉。v2版本 內存存儲,v3版本db,在v1.11中開始使用v3
2》其他插件
CoreDNS:可以爲集羣中的SVC創建一個域名IP的對應關係解析
DashBoard:給k8s提供一個bs結構訪問體系
Ingress controller:官方只能實現4層代理,他可以實現7層代理
Federation:提供一個可以跨集羣中心多k8s統一管理功能
Prometheus:提供k8s集羣的監控能力
ELK:提供k8s集羣日誌統一分析接入平臺