ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard

640?wx_fmt=gif

上一篇《K8S集群部署》中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制,然后部署一下Dashboard,完成可视化管理。本篇已加入了《.NET Core on K8S学习实践系列文章索引》,更多内容请到索引中查看。


01

准备一个ASP.NET Core项目


这部分请参考我之前的一篇文章《ASP.NET Core on K8S学习初探(3)》,准备一个简单的ASP.NET Core WebAPI示例项目。


其中,你可以直接使用我上传的这个镜像(edisonsaonian/k8s-demo)。

  640?wx_fmt=png

我们可以通过浏览器来验证一下是否部署成功了。通过访问两个Node节点的30409端口,可以得到如下结果:

  640?wx_fmt=png

  640?wx_fmt=png

   由于我们的示例WebAPI项目十分简单,因此能够访问到ValuesController的接口就代表我们已经部署到K8S成功了。


02

K8S部署过程解析


刚刚我们成功部署了一个ASP.NET Core WebAPI项目到K8S集群中,由于在yaml中我们设置了两个Pod副本,他们分别运行在了k8s-node1和k8s-node2中:

  640?wx_fmt=png

这里我们来看看整个部署的过程,大体上过一遍流程,能够有个大概印象就可以,下图主要参考自CloudMan的《每天5分钟玩转Kubernetes》一书。

640?wx_fmt=png

  (1)Kubectl发送部署请求到API Server

  (2)API Server通知Controller Manager创建一个deployment资源

  (3)Scheduler执行调度任务,将两个Pod副本分发到k8s-node1与k8s-node2

  (4)k8s-node1和k8s-node2上的kubectl在各自的节点上创建并运行Pod(当然,其中包括了拉取镜像,创建容器等一系列操作)

另外的补充:

  (1)所有应用的配置和当前状态信息都会保存在etcd中,执行kubectl get pod时API Server会从etcd中读取这些数据

  (2)flannel会为每个pod分配IP,这块先了解到这里就好,后面会介绍网络。


03

部署Dashboard


按理说,部署Dashboard就下面一句话:

kubectl apply -f \	
https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  But,默认镜像国内无法访问,这里曲线救国:

  首先,将这个yaml文件下载下来:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  其次,通过vim编辑yaml文件中默认的镜像源地址:这里替换为李振良老师的镜像地址,感谢李振良老师。

    containers:	- name: kubernetes-dashboard	#image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1	image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

  然后,由于默认Dashboard只能集群内部访问,因此修改Service为NodePort类型,暴露到外部可以访问:

kind: Service	
apiVersion: v1	
metadata:	labels:	k8s-app: kubernetes-dashboard	name: kubernetes-dashboard	namespace: kube-system	
spec:	type: NodePort	ports:	- port: 443	targetPort: 8443	nodePort: 30001	selector:	k8s-app: kubernetes-dashboard

  最后,我们直接apply本地这个yaml文件来创建Dashboard:

kubectl apply -f kubernetes-dashboard.yaml

  看到提示“service/kubernetes-dashboard created”代表Dashboard创建成功了,这时我们通过浏览器来访问一下:

  640?wx_fmt=png

  这里如果你通过Chrome访问提示证书错误无法访问,可以通过如下步骤解决:

chrome://net-internals/#hsts

  找到Delete domain security policies,输入你的NodeIP地址点击Delete即可:

  640?wx_fmt=png

  接上一步,看到了登录界面,需要我们配置kubeconfig或输入token,这里我们选择后者,通过以下命令获取输出的token:

kubectl create serviceaccount dashboard-admin -n kube-system	
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin	
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

  拿到token在登录界面的令牌区域输入,然后点击登录:

  640?wx_fmt=png

  即可进入下图所示的主界面了:

  640?wx_fmt=png

  在Dashboard中,我们通过kubectl所做的操作大部分都可以可视化操作,比如我们可以对deployment做伸缩:

  640?wx_fmt=png

   更多内容,请期待后续分享。


04

小结


本文通过部署一个ASP.NET Core WebAPI到K8S为例,介绍了K8S部署的详细过程步骤,最后部署Dashboard从而能够进行可视化的管理。后续会探索各种应用的运行方式和更多的内容,当然笔者也是初学,有很多不足之处,请多包涵。


参考资料:

(1)CloudMan,《每天5分钟玩转Kubernetes》

(2)李振良,《一天入门Kubernets教程》

(3)李振良,《30分钟部署一个Kubernetes集群》

(4)cao_xiaobo,《K8S部署Dashboard》



恰童鞋骚年,风华不再正茂,仍想挥斥方遒

640?wx_fmt=jpeg


点个在看少个bug ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证

上一篇《 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 》我们介绍了我们的大体情况,也算迈出了第一步。今天我们主要介绍下我们生产可用的集群架设方案。涉及了整体拓补图,和我们采用的硬件配置,目前存在的问题等内容。遵循上一篇提…

[开源] .NETCore websocket 即时通讯组件---ImCore

ImCore 是一款 .NETCore 下利用 WebSocket 实现的简易、高性能、集群即时通讯组件,支持点对点通讯、群聊通讯、上线下线事件消息等众多实用性功能。开源地址:https://github.com/2881099/im ,求 star~~dotnet add package ImCoreIM服务端publ…

【译】在 Linux 上不安装 Mono 构建 .NET Framework 类库

在这篇文章中,我展示了如何在 Linux 上构建针对 .NET Framework 版本的.NET项目,而不使用 Mono。通用使用微软新发布的 Mocrosoft.NETFramework.ReferenceAssemblies NuGet 包,您将不需要安装除 .NET Core SDK 之外的任何其他软件包&#xff…

DevOps书单:调研了101名专家,推荐这39本必读书籍

任何一个领域都遵循从新人到熟手,从熟手到专家的路径。在成长过程中,DevOps人经常会陷入没人带,没人管,找不到职业方向的迷茫。DevOps是在商业演进与企业协作的进化过程中诞生的一个全新职业,被很多人看成是一个“全栈…

面对人性,有的选择向左,有的向右

这里是Z哥的个人公众号每周五11:45 按时送达有时也会有感而发,来加个餐~我的第「84」篇原创敬上前天早上,在36kr看到一篇文章《一个负能量的人,可以轻易搞垮周围人的生活》,讲述了可能我们每个人身边都存在…

10分钟了解分布式CAP、BASE理论

CAP理论2000年7月,Eric Brewer教授提出CAP猜想;2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP;之后,CAP理论正式成为分布式计算领域的公认定理。CAP定律说的是在一个分布式计算机系统中,一致性&#x…

ASP.NET Core Web Api之JWT刷新Token(三)

本节我们进入JWT最后一节内容,JWT本质上就是从身份认证服务器获取访问令牌,继而对于用户后续可访问受保护资源,但是关键问题是:访问令牌的生命周期到底设置成多久呢?见过一些使用JWT的童鞋会将JWT过期时间设置成很长&a…

简单dfs序 + 树链剖分

树链剖分 DFS序 先来讲一讲DFS序是什么东西,直接上图,方便理解。 估计巨巨们应该知道了DFS序的两个重要的东西,in,outin,outin,out数组。 ininin数组就是这个点进入DFS的时间。outoutout数组就是这个点退出DFS递归栈的时间。这个时间要注意…

WeihanLi.Npoi 导出支持自定义列内容啦

WeihanLi.Npoi 导出支持自定义列内容啦Intro之前也有网友给提出过希望列合并或者自定义列内容的 issue 或请求&#xff0c;起初因为自己做 WeihanLi.Npoi 这个扩展的最初目的是导入导出的简单化&#xff0c;使用这个扩展导出的 Excel/csv 可以直接导入成 List<TEntity>&a…

让 .Net 更方便的导入导出 Excel

让 .Net 更方便的导入导出ExcelIntro因为前一段时间需要处理一些 excel 数据&#xff0c;主要是导入/导出操作&#xff0c;将 Excel 数据转化为对象再用程序进行处理和分析&#xff0c;没有找到比较满意的库&#xff0c;于是就自己造了一个轮子&#xff0c;屏蔽掉了 xlsx 与 xl…

最大流,最小费用最大流:解析 + 各种板子

网络流初步 Edmond-Karp算法 网络流的基本概念 源点&#xff0c;这个点只有流量的流出&#xff0c;没有流入。汇点&#xff0c;这个点只有流量的流入&#xff0c;没有流出。容量&#xff0c;每条有向边的最大可承受的流的理论大小。流量&#xff0c;每条有向边的最大可承受的…

Zend创始人离职原来早已安排好

前边我们报导过&#xff0c;PHP 兼 Zend 公司联合创始人 Zeev Suraski 宣布目前已经从工作了 20 年的 Zend 公司离职。2 日晚间&#xff0c;知名 PHP 开发者&#xff0c;同时也是 PHP JIT 主力鸟哥&#xff08;惠新宸&#xff09;在朋友圈中曝出猛料&#xff1a;原来一切都是安…

梯度下降:求线性回归

梯度下降的直线拟合 实现说明 给定若干个x,yx, yx,y并且求得一个最佳的yaxby ax byaxb&#xff0c;也就是二元一次方程组的解。 先放上给定的散点&#xff0c;以及求得的线性回归的直线的图片。 我个人认为&#xff0c;这里的梯度优化&#xff0c;就是通过一个关键式子los…

3分钟了解数据库事务

事务是由几个读取和修改数据的sql命令组成的&#xff0c;但是知道commit命令被执行之后&#xff0c;修改操作才被认为是正常的完成。显式事务常以Begin tran语句开头&#xff0c;以commit tran或者rollback tran语句结尾的。事务具有acid属性原子性&#xff08;atomicity&#…

WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择

NETCore提供了三种不同类型用于生产的REST API&#xff1a; HttpWebRequest;WebClient;HttpClient&#xff0c;开源社区创建了另一个名为RestSharp的库。如此多的http库&#xff0c;该怎样选择呢&#xff1f;01HttpWebRequest这是.NET创建者最初开发用于使用HTTP请求的标准类。…

.NetCore 2.1以后的HttpClient最佳实践

ASP.NET Core 2.1中出现一个新的HttpClientFactory功能&#xff0c;它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题。01介绍在.NETCore平台的2.1新增了HttpClientFactory&#xff0c;虽然HttpClient这个类实现了disposable&…

点分治(简要讲解 + 模板)

树上点分治 思想 两个点之间的距离无非就是两种关系&#xff1a;我们约定dis[i]dis[i]dis[i]表示这个点到当前根节点的距离 dis[u]dis[v]dis[u] dis[v]dis[u]dis[v]&#xff0c;在同一个根节点的不同子树上。dis[u]dis[v]dis[u] dis[v]dis[u]dis[v]&#xff0c;在同一个棵子…

在 alpine 中使用 NPOI

在 alpine 中使用 NPOIIntro在 .net 中常使用 NPOI 来做 Excel 的导入导出&#xff0c;NPOI 从 2.4.0 版本开始支持 .netstandard2.0&#xff0c;在 dotnet core 应用也可以用 DotNetCore.NPOI。对于 .NET Core 应用来说&#xff0c;如果没有特殊的需求&#xff0c;alpine 是最…

Educational Codeforces Round 16 C. Magic Odd Square 矩阵构造

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个奇数nnn&#xff0c;让你构造一个n∗nn*nn∗n的矩阵&#xff0c;矩阵的每个位置依次填上[1,n∗n]之内的数[1,n*n]之内的数[1,n∗n]之内的数&#xff0c;满足每行、每列、以及主对角线的和都是奇数。…

关于WCF、WebAPI、WebService之间的区别总结 分布式通信技术

早在1996年Gartner就前瞻性地提出了面向服务架构的思想(SOA)&#xff0c;SOA 的走红在很大程度上归功于 Web Service 标准的成熟和应用的普及。Service Oriented Ambiguity 中文一般理解为&#xff1a;面向服务架构&#xff0c;简称SOA&#xff0c;这个概念算得上微服务的鼻祖了…