ASP.NET Core on K8S學習初探(1)K8S單節點環境搭建


本篇已加入《.NET Core on 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實戰:借助阿里雲/騰訊雲容器服務進行生產環境的容器部署和運維的一些實戰總結

下面是這個學習初探部分的三篇文章索引:

Section 1 - ASP.NET Core on K8S學習初探(1)K8S單節點環境搭建

Section 2 - ASP.NET Core on K8S學習初探(2)K8S基本概念快速一覽

Section 3 - ASP.NET Core on K8S學習初探(3)部署API到K8S

一、關於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%\.kube\config。當然,這里也可以選擇跳過,不用管這個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實例來有一個感性認識。

參考資料

 


免責聲明!

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



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