上一篇《Mac中搭建Kubernetes》介紹了怎樣在Mac中搭建單節點的Kubernetes
,本文將編寫一個dotNetCore
的示例程式,併發布到Kubernetes
中。
環境
- Mac:10.13.6
- Docker:2.0.0.3 (31259)
- Kubernetes:1.10.11
- netCore:2.1
基本步驟
- 建立
dotnetCore
示例專案; - 本地搭建私有
registry
,或者使用DockerHub
,本文采用搭建私有倉庫的方式; - 將
dotnetCore
示例專案釋出到私有倉庫中; - 釋出私有倉庫映象到
Kubernetes
建立示例專案
1、在命令列執行命令建立一個名為k8s-netcore-demo
的專案
dotnet new webApp -o k8s-netcore-demo --no-https
- webApp:建立一個webApp型別的專案
- -o:建立專案到指定目錄
- –no-https:不啟用https
2、將示例程式執行起來
cd k8s-netcore-demo
dotnet run
執行正常的話,訪問http://localhost:5000
會出現下圖介面
搭建私有倉庫
docker pull registry
docker run -d -p 8888:5000 --restart=always registry
釋出netcore程式到私有倉庫
1、釋出netcore
程式
dotnet publish
2、在publish
目錄中建立Dockfile
檔案,檔案內容如下:
FROM microsoft/dotnet:2.1-aspnetcore-runtime
COPY . /app
WORKDIR /app
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "k8s-netcore-demo.dll"]
3、將netcore程式編譯成Docker映象
docker build -t k8s-netcore-demo .
4、將映象釋出到私有倉庫
docker tag k8s-netcore-demo localhost:8888/k8s-netcore-demo
docker push localhost:8888/k8s-netcore-demo
預設情況下,你執行docker push
時會出現下麵錯誤
在Mac
中的Docker
中做如下設定即可解決
設定好重啟Docker
之後,再次執行docker push
,可以正常將映象推送到私有倉庫中。
推送完成後,瀏覽器中訪問http://localhost:8888/v2/_catalog
,如果如下圖所示,說明推送成功了。
釋出映象到Kubernetes
1、建立Kubernetes
的部署檔案deploy.yaml
,部署檔案為yaml
檔案格式。檔案內容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-netcore-demo
namespace: k8s-netcore
labels:
k8s-app: k8s-netcore-demo
spec:
replicas: 2
selector:
matchLabels:
k8s-app: k8s-netcore-demo
template:
metadata:
labels:
k8s-app: k8s-netcore-demo
spec:
containers:
- name: k8s-netcore-demo
image: localhost:8888/k8s-netcore-demo
ports:
- containerPort: 80
---
# ------------------- Service ------------------- #
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: k8s-netcore-demo
name: k8s-netcore-demo
namespace: k8s-netcore
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
k8s-app: k8s-netcore-demo
上面配置檔案中屬性的含義不用先去弄清楚,保證程式能夠正常跑起來是關鍵。
- 所有配置為k8s-netcore-demo的地方是構建的映象的名稱
- image的值為localhost:8888/k8s-netcore-demo,這個是映象釋出到本地倉庫中的地址;
- namespace的值配置為建立的namespace的名稱。
2、因為在deploy.yaml
檔案中指定了namespace
,所以先建立一個名為k8s-netcore的namespace
kubectl create namespace k8s-netcore
3、執行deploy.yaml
檔案
kubectl create -f deploy.yaml --validate
#加上 --validate 引數,當yaml檔案有錯誤時,會給出提示
4、使用kubectl get
命令檢視建立情況
kubectl get deploy -n k8s-netcore
5、檢視資源情況
kubectl get svc -n k8s-netcore
上圖中可以看出,暴露出來的埠為32527
,瀏覽器中訪問http://localhost:32527
,如下圖:
6、啟動代理,在Dashboard
中檢視執行情況
kubectl proxy
怎樣訪問Dashboard
,可以檢視《Mac中搭建Kubernetes》中相關介紹。
本文中用到的命令
#建立dotNetCore專案
dotnet new webApp -o k8s-netcore-demo --no-https
#將dotNetCore程式構建為映象
docker build -t k8s-netcore-demo .
#建立namespace
kubectl create namespace k8s-netcore
#部署Kubernetes
kubectl create -f deploy.yaml --validate
#檢視指定名稱空間的部署情況
kubectl get deploy -n k8s-netcore
#檢視指定名稱空間的資源情況
kubectl get svc -n k8s-netcore
總結
- 命令不用刻意去記,練習多了自然就記住了;
- 部署程式
Kubernetes
中,先需要將映象釋出到倉庫中,自己部署的私有倉庫和公有雲倉庫都可以; - 透過本文的操作步驟,可以將程式釋出到
Kubernetes
中執行起來,這樣可以對Kubernetes
有一個主觀的認識,接下來就可以循序漸進的對Kubernetes
進行深入的學習。
朋友會在“發現-看一看”看到你“在看”的內容