1.k8s介紹


1.歷史和現狀

Laas 基礎設施平台服務 --代表廠商 阿里雲

Paas 平台及服務 --新浪 (k8s) docker 是paas 的標准

Saas 軟件及服務

1、發展經歷

以前:mesos apache 分布式資源管理框架 2019-5 twitter > kubernetes

Docker swarm 2019-07 阿里雲宣布 docker swarm 剔除

Kubernetes google 10年容器話基礎框架 borg go語言對borg進行重新編寫

特點:

輕量級(消耗的資源比較少)

開源

彈性伸縮

負載均衡:IPVS(IP虛擬服務器)

適合人群:軟件工程師,測試工程師 ,運維工程師 ,軟件架構師 ,項目經理

雲原生的定義:

實際上,雲原生是一條最佳路徑或者最佳實踐。更詳細的說,雲原生為用戶指定了一條低心智負擔的、敏捷的、能夠以可擴展、可復制的方式最大化地利用雲的能力、發揮雲的價值的最佳路徑。

因此,雲原生其實是一套指導進行軟件架構設計的思想。按照這樣的思想而設計出來的軟件:首先,天然就“生在雲上,長在雲上”;其次,能夠最大化地發揮雲的能力,使得我們開發的軟件和“雲”能夠天然地集成在一起,發揮出“雲”的最大價值。

所以,雲原生的最大價值和願景,就是認為未來的軟件,會從誕生起就生長在雲上,並且遵循一種新的軟件開發、發布和運維模式,從而使得軟件能夠最大化地發揮雲的能力。說到了這里,大家可以思考一下為什么容器技術具有革命性?

其實,容器技術和集裝箱技術的革命性非常類似,即:容器技術使得應用具有了一種“自包含”的定義方式。所以,這樣的應用才能以敏捷的、以可擴展可復制的方式發布在雲上,發揮出雲的能力。這也就是容器技術對雲發揮出的革命性影響所在,所以說,容器技術正是雲原生技術的核心底盤。

2. 知識圖譜

介紹說明:前世今生 kubernetes 框架 kubernetes關鍵字含義

基礎概念:什么是pod 控制器類型 k8s網絡通訊模式

kubernetes:構建k8s集群

資源清單:資源掌握資源清單的語法編寫pod掌握pod 的生命周期***

pod控制器:掌握各種控制器的特點以及使用定義方式

服務發現(servece):掌握svc(交換虛擬鏈路) 原理及其構建方式

存儲:掌握多種存儲類型的特點 ,並且能夠在不同環境中選擇合適的存儲方案(自己的見解)

調度器:掌握調度器原理 , 能夠根據要求把pod定義到想要的節點運行

集群安全機制:集群的認證 鑒權 訪問控制 , 原理及其流程

helm:類型linux里面的yum包管理工具掌握HELM原理 , HELM模板自定義,HELM部署一些常用的插件

運維 : 修改kubeadm達到證書可用期限為10年 能夠構建高可用狀態

服務器分類

  • 有狀態服務:DBMS

  • 無狀態服務:lvs apache

高可用集群副本數據最好是 》=3奇數個

查看 k8s api支持版本的文檔 https://kubernetes.io/docs/reference/

通過api 查看各個控制器的支持版本

kubectl api-versions

api-resources

可以通過查看api-resources來查看受支持的資源。

這里的資源包括Kubernetes自帶的,和用戶自建的CRD
kubectl api-resources 

第三列和第五列就可以看到title為APIVERSIONKIND,其實到此就已經可以明確如何對應使用資源了。

kubectl explain

通過kubectl explain {kind_name}可以參考到某個kind資源擁有的字段以及對應的apiVersion

查看資源支持所有字段

kubectl explain { kind_name } --recursive

如:kubectl explain { kind_name } --recursive

因為太長這里就不列出來了。

查看具體字段里的子字段

kubectl explain { kind_name }.字段名1.字段名2

其中從左往右是父子關系,如:deployment.spec.selector

當在自己寫yaml文件時,沒有參考示例,可以使用這些命令來摸索

3.組件說明

etcd:官方將它定位成一個可信賴的分布式鍵值存儲服務 ,它能夠為整個分布式集群存儲一些關鍵數據 , 協助分布式集群的正常運轉

推薦在kubernetes 集群中使用etcdv3 ,v2 版本已在kubernetsv1.11中棄用

server端安裝:

apiserver:所有服務訪問的統一入口

crontrollermanager:維持副本期望數目

scheduler:負責介紹任務 ,選擇合適的節點進行分配任務

etcd:鍵值對數據庫, 存儲k8s集群所有重要信息(持久化)

kubelet:直接跟容器引擎交互實現容器的生命周期管理

kube-proxy:負責寫入規則至iptables ,IPvs實現服務映射訪問的

coreDNS:可以為集群中的svc創建一個域名IP的對於關系解析

DASHBOARD:給k8s集群提供一個B/s結構訪問體系

INGRESS CONTROLLER:官方只能實現四層代理 , ingress 可以實現七層代理

fedetation:提供一個可以跨幾圈中心多個k8s統一管理

Prometheus :提供k8s集群的監控能力

elk:提供k8s 集群日志統一分析接入平台

4.雲原生

4.1發展史

首先從第一個要的問題,那就是“什么是雲原生?”雲原生、CNCF 都是目前非常熱門的關鍵詞,但是這些技術並不是非常新鮮的內容。

  • 2004 年— 2007 年,Google 已在內部大規模地使用像 Cgroups 這樣的容器技術;
  • 2008 年,Google 將 Cgroups 合並進入了 Linux 內核主干;
  • 2013 年,Docker 項目正式發布。
  • 2014 年,Kubernetes 項目也正式發布。這樣的原因也非常容易理解,因為有了容器和 Docker 之后,就需要有一種方式去幫助大家方便、快速、優雅地管理這些容器,這就是 Kubernetes 項目的初衷。在 Google 和 Redhat 發布了 Kubernetes 之后,這個項目的發展速度非常之快。
  • 2015 年,由Google、Redhat 以及微軟等大型雲計算廠商以及一些開源公司共同牽頭成立了 CNCF 雲原生基金會。CNCF 成立之初,就有 22 個創始會員,而且 Kubernetes 也成為了 CNCF 托管的第一個開源項目。在這之后,CNCF 的發展速度非常迅猛;
  • 2017 年,CNCF 達到 170 個成員和 14 個基金項目;
  • 2018 年,CNCF 成立三周年有了 195 個成員,19 個基金會項目和 11 個孵化項目,如此之快的發展速度在整個雲計算領域都是非常罕見的。

4.2 雲原生的現狀

  1. 雲原生基金會 —— CNCF;
  2. 雲原生技術社區,比如像 CNCF 目前正式托管的 20 多個項目共同構成了現代雲計算生態的基石,其中像 Kubernetes 這樣的項目已經成為了世界第四活躍的開源項目;
  3. 除了前面兩點之外,現在全球各大公有雲廠商都已經支持了 Kubernetes。此外,還有 100 多家技術創業公司也在持續地進行投入。現在阿里巴巴也在談全面上雲,而且上雲就要上雲原生,這也是各大技術公司擁抱雲原生的一個例子。

五、各個版本支持情況說明

  • alpha
    名稱中帶有alpha的API版本是進入Kubernetes的新功能的早期候選版本。這些可能包含錯誤,並且不保證將來可以使用。

  • beta
    API版本名稱中的beta表示測試已經超過了alpha級別,並且該功能最終將包含在Kubernetes中。 雖然它的工作方式可能會改變,並且對象的定義方式可能會完全改變,但該特征本身很可能以某種形式將其變為Kubernetes。

  • stable
    穩定的apiVersion這些名稱中不包含alpha或beta。 它們可以安全使用。

  • v1
    這是Kubernetes API的第一個穩定版本。 它包含許多核心對象。

  • apps/v1
    apps是Kubernetes中最常見的API組,其中包含許多核心對象和v1。 它包括與在Kubernetes上運行應用程序相關的功能,如Deployments,RollingUpdates和ReplicaSets。

  • autoscaling/v1
    此API版本允許根據不同的資源使用指標自動調整容器。此穩定版本僅支持CPU擴展,但未來的alpha和beta版本將允許您根據內存使用情況和自定義指標進行擴展。

  • batch/v1
    batchAPI組包含與批處理和類似作業的任務相關的對象(而不是像應用程序一樣的任務,如無限期地運行Web服務器)。 這個apiVersion是這些API對象的第一個穩定版本。

  • batch/v1beta1
    Kubernetes中批處理對象的新功能測試版,特別是包括允許您在特定時間或周期運行作業的CronJobs。

  • certificates.k8s.io/v1beta1
    此API版本添加了驗證網絡證書的功能,以便在群集中進行安全通信。 您可以在官方文檔上閱讀更多內容。

  • extensions/v1beta1
    此版本的API包含許多新的常用Kubernetes功能。 部署,DaemonSets,ReplicaSet和Ingresses都在此版本中收到了重大更改。

  • policy/v1beta1
    此apiVersion增加了設置pod中斷預算和pod安全性新規則的功能

  • rbac.authorization.k8s.io/v1
    此apiVersion包含Kubernetes基於角色的訪問控制的額外功能。這有助於您保護群集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM