前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践事后的心得,k8s集群是购买了5台阿里云服务器部署的,这个集群差很少搞了一周时间,关于k8s的知识点,我也是刚入门,这方面的知识建议参考博客园大神edisonchou的系列文章《.NET Core on K8S学习实践系列文章索引(Draft版)》,为何我要写该系列的文章,是由于我以前 工做的几家公司应用都已经容器化了,.net framework 应用也在慢慢迁移到.net core 上,.net core 从1.0就开始使用了,做为开发人员,有些细节上的东西对开发人员是封闭的,咱们只知道项目开发完成经过Jenkins构建,构建完成把镜像推送到HarBor,而后在禅道上建个发布任务,贴上镜像的地址,发给运维就行了。我就对这个过程很好奇,业余时间也在研究这方面的东西。好了,暂且聊到这里,下面我就分享一下本身在搭建k8s集群的心得,有说的不对的地方还请纠正。html
咱们都知道Kubernetes自身,侧重稳定性、可扩展性、安全性;核心策略的变化小;周边生态持续爆发。k8s搭建的方式有三种:(1)社区方案:杂乱、不可靠、升级难(2)kubeadm:优雅、简单、支持高可用、升级方便、不易维护、文档不够细致 (3)二进制部署,建议初学者使用二进制搭建,由于能够快速放弃,哈哈哈,玩笑归玩笑,二进制的方式易于维护、灵活、升级方便。个人k8s集群使用的是二进制搭建的,5台阿里云的配置 以下:git
环境参数:k8s 1.14.0 Docker 17.03.1-ce Harbor 1.6.0 Jenkins v2.150.2,必定 要注意版本问题,github
注意:使用云服务器的,跳过keepalived的配置,不要用虚拟ip(云环境通常都不支持本身定义虚拟ip)就直接把虚拟ip设置为第一个master的ip就能够了。vim
PS:若是是必定要高可用的话能够购买云商的负载均衡服务(好比阿里云的SLB),把backends设置成你的三个master节点,而后虚拟ip就配置成负载均衡的内网ip便可。api
具体的集群搭建细节,我就不列出来了,由于不是重点。浏览器
这个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。app
K8S中经过标签来区分不一样的服务,所以这里统一name写成了k8s-demo。负载均衡
在多实例的配置上,经过replicas : 2这个设置告诉K8S给我启动2个实例起来,固然你能够写更大的一个数量值。
最后,在spec中告诉K8S我要经过NodePort的方式暴露出来公开访问,所以端口范围从上一篇能够知道,应该是 30000-32767这个范围以内。
须要前后执行如下命令:
kubectl create namespace aspnetcore // 建立一个命名空间“aspnetcore”
mkdir 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向外提供访问。
首先,在浏览器中访问API接口,看看是否能正常访问:http://公网IP:8671/api/values
而后,咱们再到Dashboard中,看看k8s-demo的状态:
咱们点击命名空间,选择:aspnetcore
固然了,你也能够直接点击:“集群”选项下面的“命名空间”,点击对应的名称,里面能够看到详细的信息。从Dashboard中能够看到更为详细的信息,包括运行的Deployment、容器组(因为咱们设置的replicas=2,所以会有2个容器运行起来)、副本集等等,也能够经过Dashboard实时初步地监控咱们的API的运行状况。
在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)
做者:郭峥
出处:http://www.cnblogs.com/runningsmallguo/
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文连接。
原文出处:https://www.cnblogs.com/runningsmallguo/p/11345620.html