1. 程式人生 > 其它 >5、k8s部署netcore

5、k8s部署netcore

一、建立.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+暴露埠)】