k8s和docker學習

引言

最近開週會的時候接觸到了k8s的東西,可是作爲一個小白,決定還是將這方面的知識補全補全,對以後也會有些幫助~

預備知識

軟件開發最麻煩的事情就是配置環境,經常會被弄得吐血。

軟件能夠運行起來用戶必須要保證兩件事:操作系統的設置、各種庫和組件的安裝,只有都正確了,軟件才能夠正確地運行。

通常的解決方案是以下幾種:

虛擬機

虛擬機是帶環境安裝的一種解決方案,它可以在一種操作系用裏面運行另一種操作系統,應用程序對此毫無感知。用戶可以通過虛擬機來還原系統的原始環境。

缺點:

  1. 資源佔用多(虛擬機會佔用部分內存和硬盤控件)
  2. 冗餘步驟多
  3. 啓動步驟多,啓動較慢

Linux容器

lunux容器是對進程進行隔離,在正常進程外面套了一個保護層,對於容器裏面的進程來說,它接觸到的資源都是虛擬的,和底層的操作系統進行了一個隔離。

容器是進程級別的

相比虛擬機的很多優勢

  1. 啓動快:啓動容器就相當於啓動本機的一個進程
  2. 資源佔用少:只佔用需要的資源
  3. 體積小:容器只要包含用到的組件即可

docker

docker屬於Linux容器的一種封裝,提供簡單易用的容器使用接口。

docker將應用程序與該程序的依賴打包在一個文件裏,運行這個文件,就會生成一個虛擬容器。程序在這個容器裏面運行,就像是在真實的物理機上運行一樣。

docker的接口十分簡單,用戶可以方便地創建和使用容器,應用放進容器可以進行版本管理、複製、分享、修改,就和管理普通代碼一樣。

主要用途

  1. 提供一次性的環境
  2. 提供彈性的雲服務:因爲docker容器可以隨開隨關,很適合動態地擴容和縮容
  3. 組建微服務架構:通過多個容器,一臺機器就可以跑多個服務

需要了解:

  • docker hub
  • Dockerfile文件的寫法
  • 創建img文件
  • 生成容器做法
  • cmd命令

kubernets

docker容器技術雖然被炒的熱火朝天,但是想要應用於具體的業務在編排、管理和調度等各個方面,都不容易,人們迫切需要一套管理系統,對docker及其容器進行更高級更靈活的管理

k8s是基於容器的集羣管理平臺;

首先幾個名詞的概念:

  • 節點:Kubernetes集羣中的一臺物理機或者虛擬機。
  • 集羣:位於Internet防火牆後的節點,這是kubernetes管理的主要計算資源。
  • 邊界路由器:爲集羣強制執行防火牆策略的路由器。 這可能是由雲提供商或物理硬件管理的網關。
  • 集羣網絡:一組邏輯或物理鏈接,可根據Kubernetes網絡模型實現羣集內的通信。 集羣網絡的實現包括Overlay模型的 flannel 和基於SDN的OVS
  • 服務:使用標籤選擇器標識一組pod成爲的Kubernetes服務。 除非另有說明,否則服務假定在集羣網絡內僅可通過虛擬IP訪問。

一個k8s系統,通常也稱爲k8s集羣:

master節點主要負責管理和控制,node節點是工作負載節點,裏面是具體的容器

master節點

  • API Server是整個系統的對外接口,供客戶端和其它組件調用,相當於“營業廳”;
  • Scheduler負責對集羣內部的資源進行調用,相當於“調度室”;
  • Controller manage負責管理控制器,相當於“大總管”

Node節點

  • service是指一組提供相同服務的對外訪問接口
  • pod是kubernetes最基本的擦歐總單元,一個pod代表着一個進程,內部封裝了一個or多個緊密相關的容器
  • docker容器
  • kubelet負責監視派到他所在node上的pod,包括創建、修改、監控、刪除等
  • kube-proxy,主要負責爲pod對象提供代理
  • fluenttd負責日誌收集、存儲與查詢

kubernetes ingress解析

通常情況下service和pod只可以在集羣內部網絡中通過IP地址訪問,所有達到邊界路由器的流量或被丟棄或被轉發到其他地方。

     internet
        |
  ------------
   [ Services ]

ingress是授權入站鏈接到達集羣服務的規則集合。

    internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]

可以在裏面配置URL、負載均衡、SSL、基於名稱的虛擬主機等,利用post訪問api server訪問ingress資源。

ingress->service->pod(k8s操作的基本單位)->container(一般都是使用docker)
istio一般是在pod裏面進行更加細緻的流量控制

注意:

  • 你請求自己的服務是到ingress ,請求k8s的配置是api server
  • ingress(可局部配置)配合ingress controller(必須全局配置)使用。

參考

Docker 入門教程

10分鐘看懂Docker和K8S

kubernetes ingress解析(包括配置教程)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章