zoukankan      html  css  js  c++  java
  • 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

    #查看运行日志
    journalctl -xefu kubectl

               ③、查看运行状态及映射端口

     #查看镜像映射端口【46552:暴露访问端口】
    kubectl get svc

     #查看所有pods运行状态【都是Running,一个是service,一个是Deployment】
    kubectl get pods

    #重启pod,service【在修改yaml文件后,可执行】
    kubectl replace --force -f /opt/yaml/netcore/apricot/apricots.yaml

               ④、访问netcore【Node节点(IP+暴露端口)】

         五、非正常关机导致k8s不能正常启动

                ①、重启所有服务

    -----------------------------【master】--------------------------------
     #重启etcd
    systemctl  restart etcd
    
     #重启kube-apiserver
    systemctl restart kube-apiserver
    
     #重启 kube-controller-manager
    systemctl status kube-controller-manager
    
     #重启 kube-schduler
    systemctl status kube-schduler
    
     #重启pod 【需要时候重启、默认会自动重启】
    kubectl replace --force -f /opt/yaml/netcore/apricot/apricots.yaml
    
    -----------------------------【node】--------------------------------
    
     #重启 flanneld
     systemctl  restart flanneld
    
     #重启 docker
     systemctl  restart docker
    
     #重启 kubelet
     systemctl  restart kubelet
  • 相关阅读:
    Go语言学习之1 基本概念、环境搭建、第一个Go程序
    go环境搭建
    go 圣经阅读笔记之-入门
    RabbitMQ
    图片选择并使用base64展示
    关于c# hashtable的一个注意点
    js image to base64 摘录
    linq to sql 获取sql与参数添加到日志中
    时钟的实现
    无限级菜单的实现
  • 原文地址:https://www.cnblogs.com/study10000/p/14898471.html
Copyright © 2011-2022 走看看