成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用K8S技術(shù)棧打造個人私有云(連載之:K8S資源控制)

Reducto / 1323人閱讀

摘要:將用戶命令通過接口傳送給,從而進行資源的增刪改等操作。要使用編寫應(yīng)用程序,當下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。


【利用K8S技術(shù)棧打造個人私有云系列文章目錄】

利用K8S技術(shù)棧打造個人私有云(連載之:初章)

利用K8S技術(shù)棧打造個人私有云(連載之:K8S集群搭建)

利用K8S技術(shù)棧打造個人私有云(連載之:K8S環(huán)境理解和練手)

利用K8S技術(shù)棧打造個人私有云(連載之:基礎(chǔ)鏡像制作與實驗)

利用K8S技術(shù)棧打造個人私有云(連載之:資源控制研究)

利用K8S技術(shù)棧打造個人私有云(連載之:私有云客戶端打造)

注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按掃描 下面的 小心心 來訂閱 ↓ ↓ ↓


私有云K8S資源控制原理

基于前面系列文章的詳細闡述,我們已經(jīng)可以手工去K8S集群的命令行下將CentOS 7.4操作系統(tǒng)的Docker鏡像啟動起來,然后用戶可以通過SSH登錄到CentOS容器之中進行使用。但實際使用過程中不同的用戶不可能每次都手動去命令行啟動一個CentOS鏡像,然后用命令去查看該容器的IP地址和端口是多少,然后再通過ssh去連接。我們最好可以將Docker容器的啟動、查詢、刪除等再封裝一層,然后通過WEB頁面去提供給用戶操作,這才符合用戶行為需求!

由于在我們的實踐中Docker容器是放在kubernetes集群中進行管理,所以這里的資源控制涉及的資源主要就是kubernetes的資源,如Pod、RC、Service等。

kubernetes中的Master節(jié)點運行kube-apiserver模塊,該模塊對外提供restful接口,我們可以基于該接口進行編程,從而完成對集群資源的控制管理、如Pod、RC、Service等的申請、查詢、刪除等任務(wù)。

要CRUD一個 kubernetes 資源,比如一個 pod,首先要知道和 kubernetes 集群交互的接口。在 kubernetes 的 master 節(jié)點上安裝有 kubectl 客戶端程序,該程序面向用戶提供命令行接口,供用戶和 kubernetes 集群交互。 kubectl 將用戶命令通過 restful 接口傳送給 apiserver,從而進行資源的增、刪、改等操作。該過程可以示意如下:

原理講完了,接下來講講代碼級別如何實現(xiàn)。


K8S資源控制客戶端

總結(jié)上文不難看出,k8s相關(guān)資源的CRUD控制可以通過restful接口來實現(xiàn)。要使用Kubernetes REST API編寫應(yīng)用程序,當下大多語言都可以很方便地去實現(xiàn)HTTP請求來操作kubernetes的restful接口從而控制和查詢資源,但本文主要是利用已有的kubernetes客戶端來更加優(yōu)雅地實現(xiàn)kubernetes的資源控制。你不需要自己編寫API來調(diào)用、請求/響應(yīng)等類型,可以直接使用現(xiàn)成的客戶端庫來實現(xiàn)。

k8s的客戶端開源項目有很多,官方有支持,社區(qū)也維護了很多。

官方支持的Kubernetes客戶端庫比較有限,有下面幾種:

社區(qū)維護的客戶端庫則更加豐富,基本熱門的編程語言都支持,下面的這些Kubernetes API客戶端庫由社區(qū)創(chuàng)建者維護,Kubernetes團隊不會提供支持和維護:

本實踐選用的是Fabric8的k8s-client,基于Java實現(xiàn)。

下面就基于該Clinet講講代碼級別的實現(xiàn)


K8S資源控制代碼實現(xiàn)舉例

下面結(jié)合代碼來闡述一下Fabric8常用的k8s資源控制操作:

創(chuàng)建K8S客戶端

String namespace = "default";    // namespace名
String master = "http://XXXX/";  // 配置為你的k8s集群的主節(jié)點地址
Config config = new ConfigBuilder().withMasterUrl(master).build();
KubernetesClient client = new DefaultKubernetesClient(config);

接下來對K8S資源的控制、查詢等操作基本都靠該client來完成!

創(chuàng)建Pod

我們從一個pod.yaml文件來創(chuàng)建Pod資源:

  List resources = client.load(new FileInputStream(fileName)).get();  // fileName為一個外部的pod.yaml文件
  if (resources.isEmpty()) {
    System.err.println("No resources loaded from file: " +fileName);
    return;
  }
  HasMetadata resource = resources.get(0);
  if (resource instanceof Pod){
    Pod pod = (Pod) resource;
    System.out.println("Creating pod in namespace " + namespace);
    NonNamespaceOperation> pods = client.pods().inNamespace(namespace);
    Pod result = pods.create(pod);  // 此處創(chuàng)建pod資源!?。?    System.out.println("Created pod " + result.getMetadata().getName());
  } else {
    System.err.println("Loaded resource is not a Pod! " + resource);
  }

刪除Pod

刪除很簡單,只要知道Pod所在的namespace和name,一行代碼即可搞定

client.pods().inNamespace("namespace名字").withName("pod名").delete();

查詢Pod

查詢Pod的log日志并于控制臺打?。?/p>

client.pods().inNamespace("namespace名字").withName("pod名").tailingLines(10).watchLog(System.out))

欲查詢Pod的一些其他信息,可以參考創(chuàng)建Pod步驟中的代碼:

Pod result = pods.create(pod);  // 此處創(chuàng)建pod資源!?。?System.out.println("Created pod " + result.getMetadata().getName()); // 類似于此處,除了獲取Pod的名字外還可以獲取很多類似信息

修改Pod配置

Pod updatedPod = client.pods().inNamespace("namespace名字").withName("pod名").edit()
          .editMetadata()
          .addToLabels("server2", "nginx2")
          .and().done();
log("Replaced testPod:", updatedPod);
上文從創(chuàng)建一個K8S客戶端開始比較完整地介紹了一個Pod資源的CRUD操作,限于篇幅原因,其他資源如RC、Service、Deployment等等的增刪改查操作都類似,只是名字不同而已,其接口稍微類比一下Pod即可寫出對應(yīng)的資源控制代碼,此處不再贅述了,舉一反三很重要。

后記

作者更多的原創(chuàng)文章在此,歡迎觀賞

My Personal Blog

作者更多的SpringBt實踐文章在此:

Spring Boot應(yīng)用監(jiān)控實戰(zhàn)

SpringBoot應(yīng)用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的實踐

初探Kotlin+SpringBoot聯(lián)合編程

Spring Boot日志框架實踐

SpringBoot優(yōu)雅編碼之:Lombok加持


如果有興趣,也可以抽點時間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:

利用K8S技術(shù)棧打造個人私有云 連載文章

從一份配置清單詳解Nginx服務(wù)器配置

Docker容器可視化監(jiān)控中心搭建

利用ELK搭建Docker容器化應(yīng)用日志中心

RPC框架實踐之:Apache Thrift

RPC框架實踐之:Google gRPC

微服務(wù)調(diào)用鏈追蹤中心搭建

Docker容器跨主機通信

Docker Swarm集群初探

高效編寫Dockerfile的幾條準則



文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28039.html

相關(guān)文章

  • 利用K8S技術(shù)打造個人私有連載K8S資源控制

    摘要:將用戶命令通過接口傳送給,從而進行資源的增刪改等操作。要使用編寫應(yīng)用程序,當下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...

    Render 評論0 收藏0
  • 利用K8S技術(shù)打造個人私有連載私有客戶端打造

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來造出一輛車,所以我選擇了進行實踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來管理的所有組件狀態(tài)。私有云客戶端打造主頁面首先是主頁面,可以打開任何一個云主機系統(tǒng)的頁面看,基本類似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個人私有...

    Jingbin_ 評論0 收藏0
  • 利用K8S技術(shù)打造個人私有連載私有客戶端打造

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來造出一輛車,所以我選擇了進行實踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來管理的所有組件狀態(tài)。私有云客戶端打造主頁面首先是主頁面,可以打開任何一個云主機系統(tǒng)的頁面看,基本類似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個人私有...

    shiina 評論0 收藏0
  • 利用K8S技術(shù)打造個人私有連載:基礎(chǔ)鏡像制作與實驗)

    摘要:因此本篇博文將講解如何在本地構(gòu)建一個帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S技術(shù)棧打造個人私有云(連載之:初章) 利用K8S技術(shù)棧打造個人私有云(連載之:K8S集群搭建) 利用K8S技術(shù)棧打造個人私...

    tabalt 評論0 收藏0
  • 利用K8S技術(shù)打造個人私有連載:基礎(chǔ)鏡像制作與實驗)

    摘要:因此本篇博文將講解如何在本地構(gòu)建一個帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S技術(shù)棧打造個人私有云(連載之:初章) 利用K8S技術(shù)棧打造個人私有云(連載之:K8S集群搭建) 利用K8S技術(shù)棧打造個人私...

    hot_pot_Leo 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<