Win10上的Docker應用:Kubernetes(容器集羣)

閱讀目錄:html

 

前言:

  終於出第三篇了,上個月就已經弄好了,一直沒弄上來,步入正題以前有3個建議給想要學習Kubernetes的同窗。web

  一、在國內由於防火牆的緣由,你是不可能在Docker上在線開啓的Kubernetes功能的。因此若是你會fan qiang上網,那萬事大吉。docker

  二、若是你離香港澳門比較近,那建議你週末抽空過去一趟,上午買罐奶粉,在店裏吃個便餐順便上網把Kubernetes功能開啓了,api

一天時間不用。又能旅遊散心、又把事情辦了,一舉多得,仍是萬事大吉。瀏覽器

  三、若是上面2種你都沒有條件,那真的很遺憾,你要控制住你的雙手,一不注意,你可能會把電腦砸掉。還要準備菊花茶,清熱解毒app

以避免怒火攻心長痘痘,板藍根小柴胡也要買點,否則你氣憤身體忽冷忽熱的容易感冒。負載均衡

  好了,說這些是想告訴你,你若是不能在線開啓Kubernetes功能,那將浪費不少不少。。的時間,別人不知道,反正我就是斷斷續續的post

加起來可能至少2個星期才完成。並且我後邊也不會把解決過程發出來,太羅嗦,有怒氣大家直接懟防火牆就對了,機智.jpg學習

 

1、Kubernetes簡單介紹

一、Kubernetes簡單點說就是關於Docker的集羣方案,具體介紹請能夠點擊這裏在以前2章中都只是介紹了單機、單運用的開發狀況,可是ui

很明顯這是不夠的,互聯網時代,一個完整的系統可能由幾10、幾百個子系統組成,這不可能都部署在一臺機器上,因此單機單應用的Docker

部署方案最多運用在企業內部小系統上,超出這個範圍就要考慮docker集羣了,這就引出Kubernetes,他就是專爲Docker集羣而生的。

 

二、Kubernetes功能模塊能夠分爲:

  • Container(容器)
  • Pod(容器組)
  • Label(標籤)
  • Replication Controller(複製控制器)
  • Service(服務)
  • Node(節點)
  • Kubernetes Master(Kubernetes主節點)

  Container、Pod這2個都是關於容器的,比較好理解,Label能夠理解爲對Pod的標識,

  Replication Controller則是實現Pod拷貝的功能,負載均衡應該就是他完成的,Node(節點),Kubernetes Master(Kubernetes主節點)

  比較好理解,主要是yaml格式編寫要熟練,後續講到。

 

三、Kubernetes模塊圖示,直接摘抄了啊

 

 2、開啓Kubernetes

一、先來看看,Kubernetes啓動成功後是有2個running的,啓動失敗那個Kubernetes會一直提示 「** is starting」,直到永遠。

 

二、驗證一下,在PowerShell中輸入如下指令查看Kubernete版本

1 kubectl version

 

 3、部署web鏡像

 一、新建WebMVC項目,修改HomeController

複製代碼
 1     public class HomeController : Controller
 2     {
 3         public IActionResult Index()
 4         {
 5             ViewData["Message"] = string.Format("IP:{0}", Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault());
 6 
 7             return View();
 8         }
 9 
10         ....
11     }
複製代碼

二、編寫Dockerfile

複製代碼
 1 FROM microsoft/dotnet:2.1-sdk AS build
 2 WORKDIR /app
 3 
 4 # copy csproj and restore as distinct layers
 5 COPY *.sln .
 6 COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
 7 RUN dotnet restore
 8 
 9 # copy everything else and build app
10 COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
11 WORKDIR /app/WebApp-HelloWorld
12 RUN dotnet publish -c Release -o out
13 
14 
15 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
16 WORKDIR /app
17 COPY --from=build /app/WebApp-HelloWorld/out ./
18 ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]
複製代碼

運行 docker build -t helloworld . ,要先建立鏡像,後邊的kubernete才能用

三、編寫kubernete-web-pod.yaml

複製代碼
 1 apiVersion: v1
 2 kind: Pod 
 3 metadata:
 4   name: kubernete-web-pod 
 5   labels: 
 6     app: kubernete-web-pod
 7 spec: 
 8   containers: 
 9     - name: helloworld 
10       image: helloworld
11       imagePullPolicy: IfNotPresent 
12       ports:
13         - containerPort: 80 
複製代碼

四、建立Pod

1 kubectl create -f kubernete-web-pod.yaml
2 kubectl get pod

五、暴露容器地址

1 kubectl port-forward kubernete-web-pod 8010:80

六、瀏覽器訪問

搞定!

4、容器集羣

一、建立 kubernete-web-replicaset.yaml

複製代碼
 1 apiVersion: apps/v1
 2 kind: ReplicaSet 
 3 metadata:
 4   name: kubernete-web-replicaset
 5 spec:
 6   replicas: 3 # pod實例的個數
 7   selector:
 8     matchLabels: # 標籤名稱
 9       app: kubernete-web-pod
10   template: 
11     metadata:
12       labels:
13         app: kubernete-web-pod
14     spec:
15       containers:
16       - name: kubernete-web-replicaset
17         image: helloworld
18         imagePullPolicy: IfNotPresent 
複製代碼

二、執行指令

1 kubectl create -f kubernete-web-replicaset.yaml

三、建立Service統一入口

1 kubectl expose replicaset kubernete-web-replicaset --type=loadBalancer --port=8020 --target-port=80 --name kubernete-web-service

這樣就構成了集羣負載均衡了,咱們在瀏覽器上試試

三、開3個窗口http://localhost:8020/

 

 

大功告成!。。。。。回家

 

 

出處:http://www.javashuo.com/article/p-baromygy-eg.html

相關文章
相關標籤/搜索