5、k8s部署netcore
阿新 • • 發佈:2021-06-18
一、建立.netcore專案
①、選擇docker支援相應環境
②、已經生成Dockerfile【使用預設Dockerfile只需修改EXPOSE(使用埠)】
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base WORKDIR /app EXPOSE 7000 FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build WORKDIR /src COPY ["OpenSlide.Fast.csproj", ""] RUN dotnet restore "./OpenSlide.Fast.csproj" COPY. . WORKDIR "/src/." RUN dotnet build "OpenSlide.Fast.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "OpenSlide.Fast.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "OpenSlide.Fast.dll"]
二、生成映象、執行映象【我這邊使用Docker Desktop生成映象,上傳至Docker Hub,如需下載: Docker Desktop】
①、開啟powershell或dos(cmd),定向至專案地址
②、打包映象、檢視映象【openslide-->映象名稱,. -->當前目錄】
#下載微軟dotnet映象【好像用會到裡面的sdk】
docker pull microsoft/dotnet
#打包建立映象
docker build -t apricot .
#檢視所有映象
docker images
③、新增執行容器
#執行容器 --name:容器名稱 -d:容器後臺執行 -p:將本地計算機上的埠 7001 對映到容器中的埠 7000,openslide-image:映象名稱
docker run --name apricot -d -p 7001:7000 apricot
④、瀏覽執行容器
⑤、docker基本操作命令
#列出所有映象 docker images #列出所有容器【包括為執行的】 docker ps -a #停止容器 container_id-->容器Id docker stop container_id #刪除容器 docker rm container_id #刪除映象 image_name-->映象名稱 docker rmi image_name
#檢視日誌
docker logs container_id
⑤、docker使用阿里雲映象加速【免費,註冊登入即可獲取】
#檢視配置 docker info
二、將映象上傳至docker hub
①、登入docker hub
②、建立倉庫
③、提交容器
#提交執行的容器
docker commit container_id 1764564459/apricot #倉庫地址
④、推送映象
#登入容器【我這已經登入,未登入會提示登入】 docker login
#推送映象至docker hub latest-->版本號
docker push 1764564459/apricot:latest
二、配置k8syaml檔案、執行netcore【master】
①、建立apricot.yaml,配置yaml檔案【yaml配置】
#建立yaml檔案加
mkdir /opt/yaml/netcore/apricot
#定位至apricot資料夾
cd /opt/yaml/netcore/apricot
#建立配置檔案
touch apricot.yaml
#開啟檔案
vi apricot.yaml
#寫入配置【去掉註釋】
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-apricots
labels:
name: k8s-apricots
spec:
replicas: 2
selector:
matchLabels:
name: k8s-apricots
template:
metadata:
labels:
name: k8s-apricots
spec:
containers:
- name: k8s-apricots
image: 1764564459/apricot #映象地址
ports:
- containerPort: 7000 #埠要與netcore埠一致
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: k8s-apricots
spec:
type: NodePort
ports:
- port: 7000
targetPort: 7000
selector:
name: k8s-apricots
②、kubectl 應用提交apricot.yaml
kubectl apply -f apricot.yaml
③、檢視執行狀態及對映埠
#檢視映象對映埠【46552:暴露訪問埠】
kubectl get svc
#檢視所有pods執行狀態【都是Running,一個是service,一個是Deployment】
kubectl get pods
④、訪問netcore【Node節點(IP+暴露埠)】