kubernetes實戰之運行aspnetcore webapi微服務 - kubernetes


1、預備工作


  • unbuntu 16.04 or above
  • docker for linux
  • kubernetes for linux 集群環境

2、使用vs2017創建一個web api應用程序,並打包鏡像到本地。


 

3、推送本地鏡像到docker hub


4、編寫k8s資源配置文件(yml)


備注:kubernetes使用的是“聲明式模型”,即需要用戶“描述”和“聲明”其所希望實現的系統最終狀態,kubernetes會努力幫你實現這個狀態,模型的聲明是通過編寫yml文件來體現。

hello-world-deployment.yml如下

上面replicas部署兩個副本實例,k8s集群將會自動分配到不同的worker上,等一下我們將對這兩個實例,來探測k8s的負載均衡機制。

hello-world-service.yml如下

為了提供外部訪問,注意需要修改type: NodePort。nodePort端口的范圍:30000-32767。當然除了NodePort,還有其他的方式(LoadBalancer、Ingress)也可以提供service給外網訪問,希望大家下去自己實踐。

5、在k8s集群的master機器上,創建k8s資源對象


也可以通過調用k8s api server 或者 dashboard上面進行創建資源對象,其他方式大家下去自己實踐。

6、通過dashboard查看集群概況


7、測試部署的微服務


瀏覽器上打開地址

到這一步,說明我們的微服務已經部署成功!!!

8、測試k8s內部負載均衡機制


多刷新幾次瀏覽器,然后查看服務日志

從上面分析可以看到兩個副本pod都被不同程度的進行了調用。在某些情況下,kuberproxy組件會使用輪訓調度算法(Round-robin)將請求發送給集群中的多個實例。

到目前為止,已經完成了k8s集群部署並運行微服務,下一篇將與微服務結合實踐k8s的健康探測機制

參考源碼:https://github.com/justmine66/k8s.ecoysystem.apps

kubernetes默認使用iptables實現的負載均衡策略,路由轉發規則可以通過命令 iptables -t nat -L KUBE-SERVICES -n 查看,如下:

9、淺析kubernetes


kubernetes是一個特殊的數據庫,里面存儲的是能夠組成kubernetes模型的各種資源,包括Pods、Deployments、Services、Config Maps、Secrets、Namespaces、Nodes、Service Accounts、Ingress、Jobs等等。K8s中所有的配置都是通過API對象的spec去設置的,也就是用戶通過配置系統的理想狀態來改變系統,這是k8s重要設計理念之一,即所有的操作都是聲明式(Declarative)的而不是命令式(Imperative)的。

下面我們將淺析k8s中一個**非常非常非常**優秀的設計,也是它區別於其他容器編排/調度系統(docker swarm etc.)的顯著優勢。

  • Pod

     容器運行一個或一組應用程序進程,大多數情況下,一個單一的容器可能不夠運行一個完整的應用程序,即使可以通過伸縮增加容器的數量。許多時候,除了運行應用程序主進程外,還需要運行一些輔助進程(例如:監控程序、日志程序等)來運行一個完整的應用程序。這些輔助進程可能需要與主進程住在一起(co-lacated),從而完成工作。為了支持這一特性,kubernetes創造了Pod(英文翻譯豆莢,如下圖很形象。),Pod是kubernetes集群運行部署應用的最小單位。利用這個特性我們可以很容易的實現Side-car模式,例如將日志收集系統完全從業務系統中抽離出來。

如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】。
如果你對 kubernets 感興趣的話可以關注我,我會定期的在博客分享我的學習心得。

 


免責聲明!

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



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