k8s學習 - API

k8s學習 - API

以前對k8s並無很深刻的瞭解,最近想把手頭一個項目所有放到k8s上,以方便部署,須要研究。這裏記錄一下本身研究過程當中頭腦中的理解。node

k8s 和 docker

首先,須要先理解下docker。鏡像把你要的應用和環境打包在一個容器裏面,有了容器以後,部署,擴容等操做就很方便了。可是,隨着微服務化,服務一多,容器就多了,多了以後,就須要對容器進行管理。須要有一套很完善的管理系統。那麼 k8s 就出現了。git

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

在 k8s 機器上同時應該安裝docker-server,由於k8s的基礎是docker鏡像,這些鏡像須要經過docker-server來從遠端獲取和實例化。docker

k8s 就是一個分佈式系統,你能夠在一臺機器上安裝k8s集羣,也能夠在多臺機器上安裝k8s 集羣。它是master-node形式的有一個k8s節點充當master,其餘k8s節點充當node。這整個分佈式系統,就至關於一個服務集羣。咱們能夠在這個集羣上啓動多個服務,每一個服務都有本身的虛擬IP,虛擬端口,各個服務能夠經過這些IP和端口進行交互,最終由一個出口IP和出口端口對外提供服務。json

k8s API

k8s是分佈式系統,它自己有各個組件,各個組件之間的通訊,對外提供的都是rest接口的http服務。這些接口就統稱爲 k8s API。k8s的api也頗有特色,首先它是分組的,它有不少api組。這些api組都有不一樣的功能,有的api組負責權限,有的api組負責存儲。api

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

因此,咱們經過 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接口,咱們徹底能夠本身寫一個客戶端來調用。客戶端庫。可是咱們最經常使用的客戶端命令是kubectl。

相關文章
相關標籤/搜索