上一篇《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的项目
1  | dotnet new webApp -o k8s-netcore-demo --no-https  | 
- webApp:创建一个webApp类型的项目
 - -o:创建项目到指定目录
 - –no-https:不启用https
 
2、将示例程序运行起来
1  | cd k8s-netcore-demo  | 
运行正常的话,访问http://localhost:5000会出现下图界面

搭建私有仓库
1  | docker pull registry  | 
发布netcore程序到私有仓库
1、发布netcore程序
1  | dotnet publish  | 

2、在publish目录中创建Dockfile文件,文件内容如下:
1  | FROM microsoft/dotnet:2.1-aspnetcore-runtime  | 
3、将netcore程序编译成Docker镜像
1  | docker build -t k8s-netcore-demo .  | 
4、将镜像发布到私有仓库
1  | docker tag k8s-netcore-demo localhost:8888/k8s-netcore-demo  | 
默认情况下,你执行docker push时会出现下面错误
在Mac中的Docker中做如下设置即可解决
设置好重启Docker之后,再次执行docker push,可以正常将镜像推送到私有仓库中。

推送完成后,浏览器中访问http://localhost:8888/v2/_catalog,如果如下图所示,说明推送成功了。

发布镜像到Kubernetes
1、创建Kubernetes的部署文件deploy.yaml,部署文件为yaml文件格式。文件内容如下:
1  | apiVersion: apps/v1  | 
上面配置文件中属性的含义不用先去弄清楚,保证程序能够正常跑起来是关键。
- 所有配置为k8s-netcore-demo的地方是构建的镜像的名称
 - image的值为localhost:8888/k8s-netcore-demo,这个是镜像发布到本地仓库中的地址;
 - namespace的值配置为创建的namespace的名称。
 
2、因为在deploy.yaml文件中指定了namespace,所以先创建一个名为k8s-netcore的namespace
1  | kubectl create namespace k8s-netcore  | 
3、执行deploy.yaml文件
1  | kubectl create -f deploy.yaml --validate  | 
4、使用kubectl get命令查看创建情况
1  | kubectl get deploy -n k8s-netcore  | 

5、查看资源情况
1  | kubectl get svc -n k8s-netcore  | 

上图中可以看出,暴露出来的端口为32527,浏览器中访问http://localhost:32527,如下图

6、启动代理,在Dashboard中查看运行情况
1  | kubectl proxy  | 
怎样访问Dashboard,可以查看《Mac中搭建Kubernetes》中相关介绍。
本文中用到的命令
1  | #创建dotNetCore项目  | 
总结
- 命令不用刻意去记,练习多了自然就记住了;
 - 部署程序
Kubernetes中,先需要将镜像发布到仓库中,自己部署到私有仓库和公有云仓库都可以; - 通过本文的操作步骤,可以将程序发布到
Kubernetes中运行起来,这样可以对Kubernetes有一个主观的认识,接下来就可以循序渐进的对Kubernetes进行深入的学习。