k8s學習 - API

軒脈刃發表於2019-07-12

k8s學習 - API

之前對k8s並沒有很深入的瞭解,最近想把手頭一個專案全部放到k8s上,以方便部署,需要研究。這裡記錄一下自己研究過程中頭腦中的理解。

k8s 和 docker

首先,需要先理解下docker。映象把你要的應用和環境打包在一個容器裡面,有了容器之後,部署,擴容等操作就很方便了。但是,隨著微服務化,服務一多,容器就多了,多了之後,就需要對容器進行管理。需要有一套很完善的管理系統。那麼 k8s 就出現了。

k8s 全稱就是kubernets,和 i10n 的名字類似,中間的數字就是英文單詞的數字。它的官網是k8s官網

在 k8s 機器上同時應該安裝docker-server,因為k8s的基礎是docker映象,這些映象需要通過docker-server來從遠端獲取和例項化。

k8s 就是一個分散式系統,你可以在一臺機器上安裝k8s叢集,也可以在多臺機器上安裝k8s 叢集。它是master-node形式的有一個k8s節點充當master,其他k8s節點充當node。這整個分散式系統,就相當於一個服務叢集。我們可以在這個叢集上啟動多個服務,每個服務都有自己的虛擬IP,虛擬埠,各個服務可以通過這些IP和埠進行互動,最終由一個出口IP和出口埠對外提供服務。

k8s API

k8s是分散式系統,它本身有各個元件,各個元件之間的通訊,對外提供的都是rest介面的http服務。這些介面就統稱為 k8s API。k8s的api也很有特點,首先它是分組的,它有很多api組。這些api組都有不同的功能,有的api組負責許可權,有的api組負責儲存。

每個api組還有版本的區分,它其實也有大小版本區分,但是不是我們常用的1.1.1這種版本號,k8s api 大的版本都是以v1, v2 這種為迭代的,每個大的版本里面區別三個等級,一種是Alpha等級,這個等級就是還在除錯的,基本我們不作為開發者的話,這種等級的介面版本不會接觸到。它會在大版本後面直接跟著alpha,比如v1alpha2, 就代表是v1大版本的alpha等級第2小版本。第二個等級就是Beta等級,這個等級說明介面基本可以使用了,也經過完整測試了。會比正常的穩定版本有更多的功能。它的版本格式如v1beta2。第三個等級就是Stable版本,這個等級說明這個是個穩定版,可以放心使用。

所以,我們通過 kubectl api-versions 可以看到很多api組和版本號:

admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
compose.docker.com/v1beta1
compose.docker.com/v1beta2
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

比如 authorization.k8s.io/v1beta1 就代表authorization.k8s.io這個api組的v1大版本下的beta等級1小版本。

我們後續在yaml中寫的apiVerison就是這個版本意思。

那這些版本的api怎麼呼叫呢?官方使用swagger對介面進行管理和說明,首先我們可以啟動kubectl proxy 來啟動k8s server的http代理。預設開啟地址是http://127.0.0.1:8001/。使用http://127.0.0.1:8001/swagger.json 就可以看到k8s的全部api說明了。如果你有swagger-editor的話,你還可以把這個json放到editor裡面,就能看到所有的介面了。(介面特別多,載入比較慢)k8s學習 - API

現在有了k8s介面,我們完全可以自己寫一個客戶端來呼叫。客戶端庫。但是我們最常用的客戶端命令是kubectl。

相關文章