天天看點

ASP.NET Core on K8S學習初探(1)K8S單節點環境搭建一、關于K8S二、安裝核心步驟三、小結參考資料

當近期的一個App上線後,發現目前的docker執行個體(應用服務BFF+中台服務+工具服務)已經很多了,而我司目前沒有專業的運維人員,發現運維的成本逐漸開始上來,是以容器編排也就需要提上議程。是以我決定開始學習Kubernetes,會将學習當中的過程記錄下來,預計會形成一個系列,暫且命名為:ASP.NET Core on K8S,而這個系列會由3個部分組成,且會在不同的時期寫完:

  • ASP.NET Core on K8S學習初探:在Docker for Windows中搭建單節點環境,初步了解有個感性認識
  • ASP.NET Core on K8S深入學習:在Linux上搭建K8S叢集,對K8S的一些核心概念有個深入的認識
  • ASP.NET Core on ACK/TKE實戰:借助阿裡雲/騰訊雲容器服務進行生産環境的容器部署和運維的一些實戰總結

一、關于K8S

  關于K8S,建議閱讀《

10分鐘看懂Docker和K8S

》,這幾乎是一篇不用耗費多少腦細胞的文章,因為講的實在是太通俗易懂了。

  總體來說,就是在Docker容器技術被炒得熱火朝天之時,大家發現,如果想要将Docker應用于具體的業務實作,是存在困難的——編排、管理和排程等各個方面,都不容易。于是,人們迫切需要一套管理系統,對Docker及容器進行更進階更靈活的管理。

  于是,源自于Google的K8S出現了。K8S就是基于容器的叢集管理平台,它的全稱,是Kubernetes。

Kubernetes 這個單詞來自于希臘語,含義是舵手或領航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個字元。

  這裡不再過多解釋,因為上面的文章裡已經講的很清楚了,理清那些繁多的K8S概念留到後面再來,這裡主要是先玩起來,玩了再說。K8S的環境搭建在Windows和Linux下,還可以基于雲服務提供商封裝好的K8S服務進行快速建構,這裡為了快速玩玩,選擇了在Windows下基于Docker for Windows來進行。

二、安裝核心步驟

2.1 前置條件

  確定目前Windows環境有以下幾個關鍵點:

  • Windows 10 PRO專業版及以上
  • Hyper-V 虛拟機
  • Docker for Windows,這裡示範的是Docker CE 18.06版本

  為Docker for Windows的daemon配置鏡像加速:

2.2 下載下傳K8S鏡像

  首先,從Git上下載下傳K8S所需的docker鏡像:

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop
cd k8s-for-docker-desktop           

  這裡,為了比對18.06版本(Docker CE版本号或者你的Docker for Windows的版本号),切換到該項目的18.09分支。

git checkout 18.09           

_Note:_關于哪個版本切換到哪個分支,請參閱

這裡

  然後,開始加載鏡像,這裡通過PowerShell的方式加載:

.\load_images.ps1           

  當然,也可以通過Bash Shell的方式加載:

./load_images.sh           

   最後,在Docker for Windows中啟用K8S:

2.3 快速配置K8S

  (可選)切換運作上下文至docker-for-desktop

kubectl config use-context docker-for-desktop           

  核心:驗證Kubernetes叢集狀态

kubectl cluster-info
kubectl get nodes           

_Note:_執行了kubectl cluster-info之後就可以看到已經啟動了一個master節點,也就是single-node模式啟用了。

   面闆:部署Kubernetes Dashboard

kubectl create -f kubernetes-dashboard.yaml           

  通路:開啟API Server通路代理,向外部提供面闆通路

kubectl proxy           

  然後就可以通過下面這個URL通路Kubernetes的Dashboard:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default

  但是,你會發現出現的如下這個頁面,你可以選擇跳過 也可以選擇一個kubeconfig。

  其中,kubeconfig的位置(這裡是Windows系統)位于:%UserProfile%.kubeconfig。當然,這裡也可以選擇跳過,不用管這個config。如果,碰到提示“not enough data to create auth”,需要執行以下指令來設定一下kubeconfig:

$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"           

  最後,可以正常登入後看到Dashboard的全貌了:

_Note:_如果想通過其它主機通路并且讓API Server能夠接受所有主機的請求,請通過以下指令啟動API Server。

kubectl proxy --address='0.0.0.0'  --accept-hosts='^*$'           

三、小結

  本篇簡單地記錄一下如何在Windows環境下基于Docker for Windows來搭建一個單節點的K8S環境,下一篇會将ASP.NET Core以Docker方式加入到K8S叢集中托管,操作K8S來管理Docker執行個體來有一個感性認識。

參考資料

繼續閱讀