.Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...

前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践过后的心得,k8s集群是购买了5台阿里云服务器部署的,这个集群差不多搞了一周时间,关于k8s的知识点,我也是刚入门,这方面的知识建议参考博客园大神edisonchou的系列文章《.NET Core on K8S学习实践系列文章索引(Draft版)》,为什么我要写该系列的文章,是因为我之前 工作的几家公司应用都已经容器化了,.net framework 应用也在慢慢迁移到.net core 上,.net core 从1.0就开始使用了,作为开发人员,有些细节上的东西对开发人员是封闭的,我们只知道项目开发完成通过Jenkins构建,构建完成把镜像推送到HarBor,然后在禅道上建个发布任务,贴上镜像的地址,发给运维就好了。我就对这个过程很好奇,业余时间也在研究这方面的东西。好了,暂且聊到这里,下面我就分享一下自己在搭建k8s集群的心得,有说的不对的地方还请纠正。

我们都知道Kubernetes自身,侧重稳定性、可扩展性、安全性;核心策略的变化小;周边生态持续爆发。k8s搭建的方式有三种:(1)社区方案:杂乱、不可靠、升级难(2)kubeadm:优雅、简单、支持高可用、升级方便、不易维护、文档不够细致 (3)二进制部署,建议初学者使用二进制搭建,因为可以快速放弃,哈哈哈,玩笑归玩笑,二进制的方式易于维护、灵活、升级方便。我的k8s集群使用的是二进制搭建的,5台阿里云的配置 如下:

640?wx_fmt=png

环境参数:k8s 1.14.0  Docker 17.03.1-ce  Harbor 1.6.0  Jenkins v2.150.2,一定 要注意版本问题,

注意:使用云服务器的,跳过keepalived的配置,不要用虚拟ip(云环境一般都不支持自己定义虚拟ip)就直接把虚拟ip设置为第一个master的ip就可以了。

 PS:如果是一定要高可用的话可以购买云商的负载均衡服务(比如阿里云的SLB),把backends设置成你的三个master节点,然后虚拟ip就配置成负载均衡的内网ip即可。

具体的集群搭建细节,我就不列出来了,因为不是重点。

  • 准备Deployment YAML

这个YAML文件,引用自Edison Zhou(https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html),在这里我们使用了Edison Zhou的镜像仓库 

apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s
-demo
namespace: aspnetcore
labels:
name: k8s
-demo
spec:
replicas:
2
selector:
matchLabels:
name: k8s
-demo
template:
metadata:
labels:
name: k8s
-demo
spec:
containers:
- name: k8s-demo
image: edisonsaonian
/k8s-demo
ports:
- containerPort: 80
imagePullPolicy: Always

---

kind: Service
apiVersion: v1
metadata:
name: k8s
-demo
namespace: aspnetcore
spec:
type: NodePort
ports:
- port: 80
targetPort:
80
selector:
name: k8s
-demo

这里这个deploy.yaml就会告诉K8S关于你的API的所有信息,以及通过什么样的方式暴露出来让外部访问。

  需要注意的是,这里我们提前为要部署的ASP.NET Core WebAPI项目创建了一个namespace,叫做aspnetcore,因此这里写的namespace : aspnetcore。

  K8S中通过标签来区分不同的服务,因此这里统一name写成了k8s-demo。

  在多实例的配置上,通过replicas : 2这个设置告诉K8S给我启动2个实例起来,当然你可以写更大的一个数量值。

  最后,在spec中告诉K8S我要通过NodePort的方式暴露出来公开访问,因此端口范围从上一篇可以知道,应该是 30000-32767这个范围之内。

  • 通过kubectl 部署到k8s

需要先后执行以下命令:

kubectl create namespace aspnetcore // 创建一个命名空间“aspnetcore”
cd aspnetcore/
vim deploy.yaml
//将上面的配置写入该文件中
kubectl create -f deploy.yaml
[root@m7-a2-15-43 aspnetcore]# kubectl get svc -n aspnetcore
NAME TYPE CLUSTER
-IP EXTERNAL-IP PORT(S) AGE
k8s
-demo NodePort 10.254.180.117 <none> 80:8671/TCP 4h55m

可以看到在命名空间aspnetcore下,就有一个k8s-demo的服务运行起来了,并通过端口号8671向外提供访问。

  • 验证WebAPI是否可以访问

首先,在浏览器中访问API接口,看看是否能正常访问:http://公网IP:8671/api/values

640?wx_fmt=jpeg

然后,我们再到Dashboard中,看看k8s-demo的状态:

640?wx_fmt=png

640?wx_fmt=png

我们点击命名空间,选择:aspnetcore

640?wx_fmt=png

当然了,你也可以直接点击:“集群”选项下面的“命名空间”,点击对应的名称,里面可以看到详细的信息。从Dashboard中可以看到更为详细的信息,包括运行的Deployment、容器组(由于我们设置的replicas=2,因此会有2个容器运行起来)、副本集等等,也可以通过Dashboard实时初步地监控我们的API的运行情况。

  • 通过Dashboard伸缩WebAPI

在Dashboard中,我们可以可视化地对我们的Deployment进行容器实例的伸缩,具体操作可以参考:https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html,这里我就不再多说了。

本文,简单总结了一下使用阿里云部署高可用k8s集群,可能有同学说怎么不详细写一下部署的过程呢?由于时间仓促,部署的过程文档还在整理中,况且,部署的过程和该系列文章的主题不符,大家可以参考其他文章,关于Dashboard,一般企业内部是不会使用的,都是自研的,只需要了解即可。该篇文章的目的,是 想让大家体验一下所谓的容器编排,以及asp.net core on k8s。笔者也是刚接触,有很多东西需要学习,这只是k8s的一点点,因为还没用到生产 环境,需要观察一段时间,后期,我把部署的过程整理一下,再分享给大家。提前预告一下篇博客的主题:Jenkins+k8s,实现CI/CD,敬请期待。

这是该系类博客要使用的项目:https://github.com/guozheng007/asp.net-core2.1-miaosha-project

Edison Zhou:https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_firststudy_part3.html

刘果国:https://coding.imooc.com/class/335.html(付费课程366.00)

原文链接:https://www.cnblogs.com/runningsmallguo/p/11345620.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

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

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

相关文章

使用Asp.net Core3Blazor 的全栈式网站开发体验

最新的微软视频&#xff1a; Full stack web development with ASP.NET Core 3.0 and Blazor - BRK3017 以下是重要步骤截图配注解&#xff0c;注意图多杀猫&#xff1a;此图是.Net Core3的全栈解决方案示意图。话说此图的第一部分Client 是可以灵活替换的&#xff0c;哪怕它是…

k8s集群部分常见问题处理

目录部分常见问题处理Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题添加工作节点时提示token过期kubectl 执行命令报“The connection to the server localhost:8080 was refused”网络组件flannel无法完成初始化部分节点无法启动pod最后部分常见问题处理结合我们上…

Hyper-V + CentOS7 网络设置(视频教程)

Hyper-V Centos7 网络设置 本文目标&#xff1a;1、 设置虚拟机固定IP&#xff1a;无论物理机的网络环境怎么变化&#xff0c;都需要保持虚拟机的IP地址不变&#xff0c;保证本机使用xshell等终端访问始终用同一个IP地址2、物理机可访问虚拟机&#xff0c;虚拟机是否可访问网络…

Consul的反熵

熵熵是衡量某个体系中事物混乱程度的一个指标&#xff0c;是从热力学第二定律借鉴过来的。熵增原理孤立系统的熵永不自动减少&#xff0c;熵在可逆过程中不变&#xff0c;在不可逆过程中增加。熵增加原理是热力学第二定律的又一种表述&#xff0c;它更为概括地指出了不可逆过程…

通过Blazor使用C#开发SPA单页面应用程序(2)

今天我们尝试创建一个默认的Blazor应用。.Net Core 3.0需要Visual Studio 2019 的支持。安装.Net Core 3.0 预览版 SDK版本&#xff0c;注意预览版对应的VS版本&#xff0c;我这里安装的是v3.0.0-preview6。一定要开启预览选项才能使用Net Core Preview&#xff0c;在工具> …

通过Blazor使用C#开发SPA单页面应用程序(1)

2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望&#xff0c;一些.net大咖也在积极的为推动.NET Core而不懈的努力。在这次.NET Core 3.0中一项新的技术也首次出现在人们的视野&#xff0c;这就是Blazor。说起Bla…

基于 WPF 模块化架构下的本地化设计实践

背景描述最近接到一个需求&#xff0c;就是要求我们的 WPF 客户端具备本地化功能&#xff0c;实现中英文多语言界面。刚开始接到这个需求&#xff0c;其实我内心是拒绝的的&#xff0c;但是没办法&#xff0c;需求是永无止境的。所以只能想办法解决这个问题。首先有必要说一下我…

你会轻易打破规则吗?

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「86」篇原创敬上俗话说的好&#xff0c;不以规矩&#xff0c;不成方圆。但是有些时候&#xff0c;可能破坏规则反而是一个更有效的方式&#xff0c;这个时候到底该…

架构杂谈《十》

常用开发模式一、瀑布式开发瀑布式开发是在1970年提出的软件开发模型&#xff0c;是一种较老的计算机软件开发模式&#xff0c;也是典型的预见性的开发模式&#xff0c;在瀑布式开发中&#xff0c;开发严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤进行&…

如何删除GIT仓库中的敏感信息

1. 前言正常Git仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件&#xff0c;否则一旦泄漏到Github&#xff0c;这些非常敏感信息会影响客户的信息安全已经公司的信誉。公司可能其它还有相关规定&#xff0c;如禁止私人邮件加入GIT仓库。如果违反这些规定&#xff0c;可…

ASP.NET Core on K8S深入学习(4)你必须知道的Service

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。前面几篇文章我们都是使用的ClusterIP供集群内部访问&#xff0c;每个Pod都有一个自己的IP地址&#xff0c;那么问题来了&#xff1a;当控制器使用新的Pod替代发生故障…

博客园翻车启示录

开发者的日常作为一名996的开发者&#xff0c;我几乎每天只有两件事&#xff0c;制造bug和解决bug&#xff0c;这两件事&#xff0c;既替我解决了温饱问题、也替产品经理、测试工程师等一票人解决了吃穿问题。嗯&#xff0c;有人为我这种程序员评了一个等级&#xff0c;我大概是…

asp.net core 从单机到集群

asp.net core 从单机到集群Intro这篇文章主要以我的活动室预约的项目作为示例&#xff0c;看一下一个 asp.net core 应用从单机应用到集群部署需要做什么。示例项目活动室预约提供了两个版本&#xff0c;集群版和 单机版单机版方便部署&#xff0c;不依赖其他环境&#xff0c;数…

通过Blazor使用C#开发SPA单页面应用程序(3)

通过Blazor使用C#开发SPA单页面应用程序(1)通过Blazor使用C#开发SPA单页面应用程序(2)今天我们来看看Blazor开发的一些基本知识。Blazor中组件的基本结构可以分为3个部分&#xff0c;如下所示&#xff1a;//Counter.razor//Directives section 指令部分page "/counter&qu…

ASP.NET CORE 2.* 利用集成测试框架覆盖HttpClient相关代码

ASP.NET CORE 集成测试官方介绍我的asp.net core 项目里面大部分功能都是去调用别人的API &#xff0c;大量使用HttpClient&#xff0c;公司单元测试覆盖率要求95%以上&#xff0c;很难做到不mock HttpClient 达到这个指数。以下方法是我自己总结的在单元测试里 mock httpClien…

Let's Encrypt网站推出中文版

如今很多网站都强制使用 HTTPS 加密协议访问&#xff0c;安全性有了很大的提高&#xff0c;最起码在数据传输的初始阶段数据包不会被劫持&#xff0c;保证了客户端与服务器端的通讯安全性。说到 HTTPS 加密协议&#xff0c;就不得不提 Let’s Encrypt。Let’s Encrypt 是一家不…

使用WebDeploy部署远程IIS网站

目录 使用WebDeploy部署远程IIS网站后台服务部署服务器配置本地WebDeploy发布文件配置前端页面部署WebDeploy服务端配置WebDeploy发布文件配置使用WebDeploy部署远程网站后台服务部署服务器配置打开IIS管理器(开始->控制面板->管理工具->IIS管理器)添加网站(右键网站…

CF436F Banners(分块/凸包/单调队列)

CF436F Banners 首先有n个物品分别有ai和bi&#xff0c;然后定义价值为 c∗wp∗(ai大于p且bi小于c的用户个数)c*wp*(ai大于p且bi小于c的用户个数)c∗wp∗(ai大于p且bi小于c的用户个数) 然后我们需要求解对于每一个c的最大价值和对应的p 首先我们先枚举c&#xff0c;然后每次加…

译 | 改进 Visual Studio 及 Windows 上 .NET Core 的安装体验

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Lee Coward翻译&#xff1a;Edi Wang导语Visual Studio 2019 16.3 和 .NET Core 3.0 Preview 7 改进了 Windows 上 .NET Core 的安装体验。目标是减少计算机上可能存在的 .NET Core 版本的数量。这些改进基于客户反馈和我们自己…

SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)

来源&#xff1a;https://www.cnblogs.com/7tiny/p/11348785.html【前言】本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目。目录如下&#xff1a;SonarQube系列一、Linux安装与部署SonarQube系列二、分析dotnet core/C#代码SonarQube系列三、Jen…