在上一篇文章 Ubuntu 18 Kubernetes的Install and Deploy 咱們在ubuntu在部署了k8s集羣, 今天來看看windows下怎麼搞。html
主要點有:node
1) windows 下搭建k8s 單節點git
2)ap.net core 製做和發佈鏡像 ,重點在於發佈到私有的harbor上(Ubuntu18 安裝搭建Harbor)github
3)部署到k8s集羣上web
1.下載 k8s-for-docker-desktop,前查看本身docker的版本(我這裏是19.03.1因此直接下載master),而後下載對應的分支docker
2.切換到對應的目錄,開始加載鏡像,這裏經過PowerShell的方式加載: .\load_images.ps1 (也能夠經過Bash Shell的方式加載:./load_images.sh), 若是出現:在此係統上禁止運行腳本 的錯誤,經過執行 set-ExecutionPolicy RemoteSigned 能夠解決shell
拉取完畢後(須要檢查是否所有成功拉取) 須要在在Docker for Windows中啓用K8Subuntu
1.切換運行上下文至docker-for-desktop ,驗證Kubernetes狀態(目前是單節點)windows
2.部署Kubernetes Dashboard& 開啓API Server訪問代理,向外部提供面板訪問api
建立用戶並獲取token
輸入token後
在建立webapi項目的(建立的時候選擇啓用docker 會自動生成Dockerfiel文件)
而後切換到目錄自做鏡像 併發布到私有倉庫:(有關harbor請參考 Ubuntu18 安裝搭建Harbor)
1.準備namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: aspnetcore
labels:
name: aspnetcore
注意咱們的deploy是有名稱空間的, 因此在建立 secret的時候必須指定-n=aspnetcore
2.經過kubectl部署到K8S (如下操做在ubuntu下的k8s集羣一樣適用)
首先,確保你的Docker for Windows以及Kubernetes都啓動起來了。而後,在Powershell中經過kubectl完成API的部署,而後驗證,
3.在K8S中對WebAPI的伸縮
在Dashboard中,咱們能夠可視化地對咱們的Deployment進行容器實例的伸縮,在彈出的伸縮選項對話框中輸入個數,例如咱們這裏從2個縮減爲1個,而後肯定。以下圖所示:
除了在Dashboard中可視化地操做進行伸縮,也能夠經過kubectl來進行,例以下面這句命令,將容器實例擴展到3個。須要注意的是,因爲咱們的k8swebapi所在的命名空間是在aspnetcore下,所以也須要指明--namespace=aspnetcore。
在K8S中,提供了一個autoscale接口來實現服務的自動伸縮,它會採用默認的自動伸縮策略(例如根據CPU的負載狀況)來幫助咱們實現彈性伸縮的功能。例以下面這句命令能夠實現咱們的k8s-demo能夠伸縮的範圍是1~3個,根據負載狀況本身伸縮,在沒有多少請求量壓力很小時收縮爲一個,在壓力較大時啓動另外一個實例來下降負載。
來一個ubuntu18 k8s集羣下面的機截圖
--2019-8-15
修改deploy.yaml文件,並執行 kubectl apply -f deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: k8swebapi namespace: aspnetcore labels: name: k8swebapi spec: replicas: 5 minReadySeconds: 10 strategy: type: RollingUpdate rollingUpdate: maxSurge: 25% maxUnavailable: 25% selector: matchLabels: name: k8swebapi template: metadata: labels: name: k8swebapi spec: imagePullSecrets: - name: regsecret containers: - name: k8swebapi image: 192.168.100.5:80/admin/k8swebapi:20190809 ports: - containerPort: 80 imagePullPolicy: Always --- kind: Service apiVersion: v1 metadata: name: k8swebapi namespace: aspnetcore spec: type: NodePort ports: - port: 80 targetPort: 80 selector: name: k8swebapi
修改程序從新push
修改deploy的鏡像路徑 image: 192.168.100.5:80/admin/k8swebapi:20190815 ,而後執行 kubectl apply -f deploy.yaml 更新後以下,api已經發生變化
參考
K8S的滾動升級RollingUpdate
ASP.NET Core on K8S深刻學習(1)K8S基礎知識與集羣搭建
ASP.NET Core on K8S學習初探(2)K8S基本概念快速一覽