<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>



      前言:本系列博客又更新了,是博主研究很長時間,親自動手實踐過后的心得,k8s集群是購買了5臺阿里云服務器部署的,這個集群差不多搞了一周時間,關于k8s的知識點,我也是剛入門,這方面的知識建議參考博客園大神edisonchou的系列文章《
      .NET Core on K8S學習實踐系列文章索引(Draft版)
      <https://www.cnblogs.com/edisonchou/p/aspnet_core_k8s_artcles_index.html>
      》,為什么我要寫該系列的文章,是因為我之前 工作的幾家公司應用都已經(jīng)容器化了,.net framework 應用也在慢慢遷移到.net core 上,.net
      core
      從1.0就開始使用了,作為開發(fā)人員,有些細節(jié)上的東西對開發(fā)人員是封閉的,我們只知道項目開發(fā)完成通過Jenkins構建,構建完成把鏡像推送到HarBor,然后在禪道上建個發(fā)布任務,貼上鏡像的地址,發(fā)給運維就好了。我就對這個過程很好奇,業(yè)余時間也在研究這方面的東西。好了,暫且聊到這里,下面我就分享一下自己在搭建k8s集群的心得,有說的不對的地方還請糾正。

      ?

      一、k8s高可用集群搭建總結


      我們都知道Kubernetes自身,側重穩(wěn)定性、可擴展性、安全性;核心策略的變化?。恢苓吷鷳B(tài)持續(xù)爆發(fā)。k8s搭建的方式有三種:(1)社區(qū)方案:雜亂、不可靠、升級難(2)kubeadm:優(yōu)雅、簡單、支持高可用、升級方便、不易維護、文檔不夠細致
      (3)二進制部署,建議初學者使用二進制搭建,因為可以快速放棄,哈哈哈,玩笑歸玩笑,二進制的方式易于維護、靈活、升級方便。我的k8s集群使用的是二進制搭建的,5臺阿里云的配置
      如下:



      環(huán)境參數(shù):k8s 1.14.0? Docker 17.03.1-ce? Harbor 1.6.0? Jenkins v2.150.2,一定 要注意版本問題,

      注意:使用云服務器的,跳過keepalived的配置,不要用虛擬ip
      (云環(huán)境一般都不支持自己定義虛擬ip)就直接把虛擬ip設置為第一個master的ip就可以了。


      ?PS:如果是一定要高可用的話可以購買云商的負載均衡服務(比如阿里云的SLB),把backends設置成你的三個master節(jié)點,然后虛擬ip就配置成負載均衡的內(nèi)網(wǎng)ip即可。

      具體的集群搭建細節(jié),我就不列出來了,因為不是重點。

      二、部署WebAPI到k8s

      * 準備Deployment YAML
      這個YAML文件,引用自Edison Zhou(
      https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html
      <https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html>
      ),在這里我們使用了Edison Zhou的鏡像倉庫?
      apiVersion: apps/v1 kind: Deployment metadata: name: k8s-demo namespace:
      aspnetcore labels: name: k8s-demo spec: replicas: 2 selector: matchLabels:
      name: k8s-demo template: metadata: labels: name: k8s-demo spec: containers: -
      name: k8s-demo image: edisonsaonian/k8s-demo ports: - containerPort: 80
      imagePullPolicy: Always--- kind: Service apiVersion: v1 metadata: name: k8s-demo
      namespace: aspnetcore spec: type: NodePort ports: - port: 80 targetPort: 80
      selector: name: k8s-demo



      這里這個deploy.yaml就會告訴K8S關于你的API的所有信息,以及通過什么樣的方式暴露出來讓外部訪問。

        需要注意的是,這里我們提前為要部署的ASP.NET Core
      WebAPI項目創(chuàng)建了一個namespace,叫做aspnetcore,因此這里寫的namespace : aspnetcore。

        K8S中通過標簽來區(qū)分不同的服務,因此這里統(tǒng)一name寫成了k8s-demo。

        在多實例的配置上,通過replicas : 2這個設置告訴K8S給我啟動2個實例起來,當然你可以寫更大的一個數(shù)量值。

        最后,在spec中告訴K8S我要通過NodePort的方式暴露出來公開訪問,因此端口范圍從上一篇可以知道,應該是 30000-32767這個范圍之內(nèi)。

      ?

      * 通過kubectl 部署到k8s
      需要先后執(zhí)行以下命令:
      kubectl create namespace aspnetcore // 創(chuàng)建一個命名空間“aspnetcore” mkdir aspnetcore
      cd aspnetcore/ vim deploy.yaml //將上面的配置寫入該文件中 kubectl create -f deploy.yaml
      ?
      [root@m7-a2-15-43 aspnetcore]# kubectl get svc -n aspnetcore NAME TYPE CLUSTER
      -IP EXTERNAL-IP PORT(S) AGE k8s-demo NodePort 10.254.180.117 <none> 80:8671/TCP
      4h55m
      ?

      可以看到在命名空間aspnetcore下,就有一個k8s-demo的服務運行起來了,并通過端口號8671向外提供訪問。

      * 驗證WebAPI是否可以訪問
      首先,在瀏覽器中訪問API接口,看看是否能正常訪問:http://公網(wǎng)IP:8671/api/values



      然后,我們再到Dashboard中,看看k8s-demo的狀態(tài):





      我們點擊命名空間,選擇:aspnetcore




      當然了,你也可以直接點擊:“集群”選項下面的“命名空間”,點擊對應的名稱,里面可以看到詳細的信息。從Dashboard中可以看到更為詳細的信息,包括運行的Deployment、容器組(由于我們設置的replicas=2,因此會有2個容器運行起來)、副本集等等,也可以通過Dashboard實時初步地監(jiān)控我們的API的運行情況。

      * 通過Dashboard伸縮WebAPI
      在Dashboard中,我們可以可視化地對我們的Deployment進行容器實例的伸縮,具體操作可以參考:
      https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html
      <https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html>
      ,這里我就不再多說了。

      ?

      ?三、總結


      本文,簡單總結了一下使用阿里云部署高可用k8s集群,可能有同學說怎么不詳細寫一下部署的過程呢?由于時間倉促,部署的過程文檔還在整理中,況且,部署的過程和該系列文章的主題不符,大家可以參考其他文章,關于Dashboard,一般企業(yè)內(nèi)部是不會使用的,都是自研的,只需要了解即可。該篇文章的目的,是
      想讓大家體驗一下所謂的容器編排,以及asp.net core on k8s。筆者也是剛接觸,有很多東西需要學習,這只是k8s的一點點,因為還沒用到生產(chǎn)
      環(huán)境,需要觀察一段時間,后期,我把部署的過程整理一下,再分享給大家。提前預告一下篇博客的主題:Jenkins+k8s,實現(xiàn)CI/CD,敬請期待。

      這是該系類博客要使用的項目:https://github.com/guozheng007/asp.net-core2.1-miaosha-project
      <https://github.com/guozheng007/asp.net-core2.1-miaosha-project>

      參考資料:

      Edison Zhou:
      https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html
      <https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html>

      劉果國:https://coding.imooc.com/class/335.html
      <https://coding.imooc.com/class/335.html>(付費課程366.00)

      ?

      ?

      作者:郭崢

      出處:http://www.cnblogs.com/runningsmallguo/

      本文版權歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          91蝌蚪| 丁香激情五月 | 特黄一级毛片 | 在车上做爰吃奶全过程图片 | 二级黄色 | f性欧美| 国产精品jk扒开腿做爽爽的视频 | 亚洲精品18 | 还小没发育嫩紧在线播放 | yy1111111少妇影院乱码 |