Docker系列(三):将.Net Core Api部署到Kubernetes (K8s)中
1.新建一个WebApi项目,并添加Dockerfile文件:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
Copy . . RUN dotnet restore
RUN dotnet build -c Release -o /app FROM build as publish
RUN dotnet publish -c Releease -o /app FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "k8s-demo.dll"]
编译一下,然后通过Docker打包成镜像:docker build -t wei/k8s-demo .

完成后通过docker images查看下:

然后将其推送到Docker仓库中,所以你需要去Docker官网注册一个账户,注册完成后进行登录:docker login --username xxx
xxx是你的用户名,接着会让你输入密码,验证成功后会提示Login Succeeded
将镜像推送到仓库这个步骤是不能省略的,因为编写K8s部署文件的时候,需要从仓库拉取镜像,因为服务器在国外,所以会有点慢。
还有一个问题就是你的镜像名字需要用你的Docker用户名开头,比如xxx/k8s-demo 这种,xxx是你Docker的用户名,不然上传会提示没有权限:

镜像推送到仓库之后我们就需要编写k8s的部署文件了 :deploy.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: k8s-demo
name: k8s-demo
namespace: netcore
spec:
replicas:
selector:
matchLabels:
k8s-app: k8s-demo
template:
metadata:
labels:
k8s-app: k8s-demo
spec:
containers:
- name: k8s-demo
image: xxx/k8s-demo
ports:
- containerPort: ---
# ------------------- Service ------------------- # kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: k8s-demo
name: k8s-demo
namespace: netcore
spec:
type: NodePort
ports:
- port:
targetPort:
selector:
k8s-app: k8s-demo
需要说明两个问题,标红的image就是我们推送到仓库的镜像,namespace是资源空间名称,也就是我们当前这个pod要运行的资源空间,所以我们需要创建一下这个资源空间:
kubectl create namespace netcore
创建完成后可以通过以下命令进行查看:kubectl get namespace netcore

然后我们就可以运行我们的部署文件了:kubectl create -f deploy.yaml

正常情况下会有两个提示,分别是deployment.apps "k8s-demo" created 和 service "k8s-demo" created
我在这步遇到的问题是yaml的格式问题,因为缩进不符合要求,折腾了好久,这个对格式的要求很严格,完成之后我们可以通过以下命令查看:kubectl get svc -n netcore
我上面图中已经有了,结果显示我的这个pod运行在31080端口,此时我们可以通过浏览器测试:

或者我们也可以通过k8s控制台查看,如果没启动代理的通过kubectl proxy命令启动代理,然后访问以下地址:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=netcore

将命名空间选到我们的netcore即可看到我们已经运行的服务k8s-demo,到此大功告成!!!
补充一下,当我们关机下次启动会发现k8s处于stop状态,这个时候我们需要重启下Docker,并使用以下命令切换到对应的Kubernetes context :
kubectl config use-context docker-for-desktop
Docker系列(三):将.Net Core Api部署到Kubernetes (K8s)中的更多相关文章
- .net core Api 部署到Linux
一.环境介绍 1..net开发环境:asp.net core 3.1 2.Linux环境:CentOS Linux release 7.9.2009 (Core) 3.Swagger: Swashbu ...
- 从harbor部署到在k8s中使用
一.概述 harbor是什么呢?英文单词的意思是:港湾.港湾用来存放集装箱(货物的),而docker的由来正是借鉴了集装箱的原理,所以harbor是用于存放docker的镜像,作为镜像仓库使用.官方的 ...
- windows下部署.netcore+docker系列三 (unbuntu 18.4 下安装ftp)
// 先更新下系统sudo apt-get update//安装ftpsudo apt-get install vsftpd// 启动 服务sudo service vsftpd start//ftp ...
- 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?
在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...
- Docker 系列七(Dubbo 微服务部署实践).
一.前言 之前我们公司部署服务,就是大家都懂的那一套(安装JDK.Tomcat —> 编译好文件或者打war包上传 —> 启动Tomcat),这种部署方式一直持续了很久,带来的问题也很多: ...
- ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程
前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...
- .NET Core api部署到IIS上405的问题
今天部署到iis 服务器上,api的put请求一直报405.其他像get post都没问题. google了半天,找到两种解决方案,亲测都可以.但我个人认为不是最理想的解决方案. 1.IIS拒绝PUT ...
- 《ASP.NET Core 高性能系列》关于.NET Core的部署方式
概述,.NET Core应用程序可以创建三种类型的部署:FDD SCD FDE 框架依赖的部署(FDD).顾名思义,框架依赖的部署(FDD)依赖于目标系统上是否存在.NET Core版本.由于.NET ...
- Docker系列(三)常用命令
命令说明 docker pull 格式: docke pull [OPTIONS] NAME[:TAG] 作用:下载名称为 name 的镜像 例子: sudo docker pull dl.docke ...
随机推荐
- 基本图像操作和处理(python)
基本图像操作和处理(python) PIL提供了通用的图像处理功能,以及大量的基本图像操作,如图像缩放.裁剪.旋转.颜色转换等. Matplotlib提供了强大的绘图功能,其下的pylab/pyplo ...
- JVM中class文件探索与解析
一直想成为一名优秀的架构师的我,转眼已经工作快两年了,对于java内核了解甚少,闲来时间,看看JVM,吧自己的一些研究写下来供大家参考,有不对的地方请指正. 废话不多说,一起来看看JVM中类文件是如何 ...
- 【CF1137C】 Museums Tour 拆点+缩点
https://codeforc.es/contest/1137/problem/C # 题意 给你n个点,每个点有k天博物馆开放时间的安排表. 有m条单向道路,走过一条边需要一个晚上,经过后就是第二 ...
- HDU- 3605 - Escape 最大流 + 二进制压位
HDU - 3605 : acm.hdu.edu.cn/showproblem.php?pid=3605 题目: 有1e5的的人,小于10个的星球,每个星球都有容量,每个人也有适合的星球和不适合的星球 ...
- Codeforces Round #486 (Div. 3)988D. Points and Powers of Two
传送门:http://codeforces.com/contest/988/problem/D 题意: 在一堆数字中,找出尽量多的数字,使得这些数字的差都是2的指数次. 思路: 可以知道最多有三个,差 ...
- Ryuji doesn't want to study 2018徐州icpc网络赛 树状数组
Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, ea ...
- 杭电多校第十场 hdu6432 Cyclic 打表找规律
Cyclic Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Su ...
- Storm VS Flink ——性能对比
1.背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架.其中 Apache Storm(以下简称"Storm")在美团点评实时 ...
- 云开发数据库VS传统数据库丨云开发101
云开发数据库与传统数据库的不同 在小程序·云开发中,最核心的便是三大组件:数据库.云存储和云函数,从今天开始,我们将开始隔日更的专栏文章,云开发101,在第一周,我们将从最最核心的数据库开始说起. 云 ...
- Appium+python自动化(三十六)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 上(超详解)
简介 前面课程只是启动了单个appium服务,只能控制单台设备.如果需要针对多台设备测试那么该如何处理?而且发现群里的小伙伴们也在时不时地在讨论这个问题,想知道怎么实现的,于是宏哥就决定写一片这样的文 ...