使用Kubectl部署应用

640?wx_fmt=gif

目录  

使用Kubectl部署应用 

  • Kubectl部署流程 

  • 部署一个简单的Demo网站 


使用Kubectl部署应用

一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序。因此在开始之前,我们需要先确保集群已经准备就绪,无论是使用Minikube还是kubeadm创建的集群。

接下来,我们讲述使用Deployment(部署)对象来部署一个简单网站。

Kubectl部署流程

使用Kubectl的部署流程如下所示:

640?wx_fmt=png

接下来我们根据这个流程部署一个简单的Demo网站。

部署一个简单的Demo网站

这里,我们可以通过创建Kubernetes Deployment对象来运行应用程序。那么我们需要编写一个YAML文件来定义Deployment对象。

1.编写Deployment对象的配置文件

在开始之前,我们需要对Deployment对象的配置有初步的了解。官方介绍文档如下所示:

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps

根据官方标准,我们定义了一个简单的Deployment配置:

apiVersion: apps/v1 #API对象版本,可通过“kubectl api-versions”命令查看

kind: Deployment #资源类型,区分大小写,可通过“kubectl api-resources”命令查看,这里使用Deployment对象

metadata: #标准的元数据

 name: demo-deployment  #当前Deployment对象名称,同一个命名空间下必须唯一

spec: #部署规范(目标),Deployment控制器会根据此模板调整当前Pod到最终的期望状态

 replicas: 5  # Pod数量,这里指运行5个Pod	selector: #选择器,其定义了Deployment控制器如何找到要管理的Pod	matchLabels:  #匹配标签	app: demo   #待匹配的标签键值对	template:   # Pod模板定义	metadata: #标准的元数据	labels: #Pod标签	app: demo #定义Pod标签,由键值对组成	spec: #Pod规范	containers: #容器列表,Pod中至少有一个容器	- name: demo  #容器名称	image: microsoft/dotnet-samples:aspnetapp #镜像地址	ports:  #端口列表	- containerPort: 80 #设置容器端口

如上面定义所示,我们定义了一个简单的部署示例,它将使用创建一个ReplicaSet对象以利用复制控制器创建5个Pod来运行“dotnet-samples”。

2.使用“kubectl create”执行资源创建

YAML文件准备好了,接下来我们来执行创建:

kubectl create -f deployment-demo.yaml

640

结合配置,这里有几个重点说明一下:

  • 如上面配置所示,部署名称为“demo-deployment”。

  • 此部署对象将创建5个复制的Pod,由replicas字段决定。如上图所示该部署创建了5个Pod。

  • selector字段定义了Deployment控制器如何找到要管理的Pod,所以标签的键值对一定不能出错。

  • template字段则定义了Pod模板,其子字段labels定义了Pod 的标签,spec字段则定义了容器。

执行创建部署之后,我们可以通过命令“kubectl get Deployment demo-deployment”来检查部署对象是否已经创建,部署是否已经完成:

640

如上图所示,上述字段分别代表:

  • READY代表是否已就绪,左侧数字表示当前已运行的副本数,右侧表示所需的副本数。

  • UP-TO-DATE表示已更新已实现预期状态的副本数。

  • AVAILABLE则表示用户可以使用的应用程序副本数。

  • AGE表示应用已运行的时间。

通用的,我们可以运行以下命令来查看副本集(ReplicaSet)对象:

kubectl get ReplicaSets -lapp=demo

640

通过上图可知,我们创建Deployment对象的过程实际上就是生成对应的副本集对象(Replica Set)并完成Pod副本的创建过程。

值得注意的是,副本集的名称格式为[部署名称]-[随机字符串]。随机字符串是随机生成的,并使用pod-template-hash作为种子。如何查看pod-template-hash呢?使用如下命令即可:

kubectl get pods -lapp=demo --show-labels

640

如上图所示,5个Pod已经部署完成。

往期内容

Docker+ Kubernetes已成为云计算的主流(二十六)

容器化之后如何节省云端成本?(二十七)

了解Kubernetes主体架构(二十八)

使用Minikube部署本地Kubernetes集群(二十九)

使用kubectl管理k8s集群(三十)

使用Kubeadm创建k8s集群之部署规划(三十一)

使用Kubeadm创建k8s集群之节点部署(三十二)

集群故障处理之处理思路以及健康状态检查(三十三)

集群故障处理之处理思路以及听诊三板斧(三十四)

使用WebDeploy部署远程IIS网站

640?wx_fmt=jpeg


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

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

相关文章

Docker系列之.NET Core入门(三)

在Docker生态系统中除了上一节所讲解的基本概念,还有其他专业术语,本文我们将一笔带过,同时会开始陆续进入到在.NET Core中使用Docker。专业术语Docker Engine(Docker引擎):客户端 - 服务器应用程序。Docke…

通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design

通过Blazor使用C#开发SPA单页面应用程序(1)通过Blazor使用C#开发SPA单页面应用程序(2)通过Blazor使用C#开发SPA单页面应用程序(3)前面学习了Blazor的特点、环境搭建及基础知识,现在我们尝试的做个实际的组件。Ant Design是蚂蚁金服是基于Ant Design设计体系的 UI 组…

Mercurial黄昏,Bitbucket宣布全面转向Git

源代码托管平台 Bitbucket 宣布将逐步放弃对版本控制系统 Mercurial 的支持。Bitbucket 推出于 2008 年,当时集中式版本控制是比较普遍的,Mercurial 是其中的典型代表,但是当前 Git 才是主流,它已经成为了大部分开源项目的首选版本…

使用 Azure DevTest Lab 搭建云端开发测试环境

点击上方蓝字关注“汪宇杰博客”导语程序员和测试工程师经常需要自己搭环境用于开发和测试目的,这些机器可能只会使用很短一段时间。通常我们会在本机使用 Hyper-V、VMWare 之类的虚拟机产品,或者使用企业IT管理员分配的虚拟机去完成这项工作。然而安装配…

dotNET Core WebAPI 统一处理(返回值、参数验证、异常)

现在 Web 开发比较流行前后端分离现在 Web 开发比较流行前后端分离,我们的产品也是一样,前端使用Vue,后端使用 dotNet Core WebAPI ,在写 API 的过程中有很多地方需要统一处理文档参数验证返回值异常处理本文就说说 API 的统一处理…

.net测试篇之单元测试/集成测试神器Autofixture

autofixture简介有了单元测试框架加上Moq(后面我们会用单独章节来介绍moq),可以说测试问题基上都能搞定了.然而有了AutoFixture对单元测试来说可以说是如虎添翼,AutoFixture并且它能与moq,rhinomock等框架结合,对单元测试带来的便捷性,可维护性和扩展性更是难以言表,只有用用了…

DotNetCore 3.0 助力 WPF本地化

概览随着我们的应用程序越来越受欢迎,我们的下一步将要开发多语言功能。方便越来越多的国家使用我们中国的应用程序,基于 WPF 本地化,我们很多时候使用的是系统资源文件,可是动态切换本地化,就比较麻烦了。实现思路现在…

开源题材征集 + MVCEF Core 完整教程小结

到目前为止,我们的MVCEF Core 完整教程的理论部分就全部结束了,共20篇,覆盖了核心的主要知识点。下一阶段是实战部分,我们将会把这些知识点串联起来,用10篇(天)来完成一个开源项目。现向园友征集题材,你提需…

对微软的敌视何时休? 从一篇语言评论文章对C#的评价说起

看到一篇公众号文章《2020年什么编程语言最受欢迎,待遇最高?》,其中对C#的描述如下:点击阅读原文,看到这是一篇翻译文章:https://codinginfinite.com/top-programming-languages-2020-stats-surveys/这篇文…

ASP.NET Core on K8S深入学习(6)Health Check

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。预计阅读时间为10分钟。01—关于K8S中的健康监测所谓Health Check,就是健康检查,即防微杜渐。K8S是一个编排引擎可以帮助我们快捷地部署容器集…

关于 .Net Core runtimeconfig 文件说明

项目的bin\debug\netcoreapp${Version}下面能够找到这个${AppName}.runtimeconfig.json文件,简单来说,它就是用来定义应用程序所用的共享框架(.Net Core App)以及运行时选项 的一个文件。一个简单的例子{ "runtimeOptions&q…

net core 3.0 之Grpc新特性小试牛刀

作者: 相信微服务大家伙都有听说和知道,好处弊端咱也不多说了,Grpc算是一个比较全面的微服务框架,也得到微软的支持总结下来就是,跨平台,可靠,通信快,扩展性强,网络消耗小…

CF1168D Anagram Paths(由必要到充分/虚树)

CF1168D Anagram Paths 对于这道题首先有一个关键的性质,那就是对于一个树,它是可重排的,当且仅当在树上任意一个节点,所有字母在相关联的字符串中出现次数最大值之和小于当前点到叶子的距离。这个性质可以通过归纳证明&#xff0…

基于Coravel定时任务之计算总页数

在物联网系统中,需要计算底端所有设备的总数,除以分页每页显示数量,进行一个总页数的显示。包括状态,告警,日志等等数据都需要对应的总页数的显示。2.1 TaskSchedulerTaskScheduler库只支持.net,且需要结合…

Docker系列之AspNetCore Runtime VS .NetCore Runtime VS SDK(四)

接下来我们就要慢慢步入在.NET Core中使用Docker的殿堂了,如题在开始之前,我们需要搞清楚一些概念,要不然看到官方提供如下一系列镜像,我们会一脸懵逼,不知道到底要使用哪一个。AspNetCore Runtime VS .NetCore Runti…

.NET Core跨平台部署于Docker(Centos)- 视频教程

.NET Core跨平台部署于Docker,Docker部署于Centos中,演示跨平台特性!以下视频教程,请带上耳机开始聆听往期教程:.NET开发框架(一)-框架介绍与视频演示.NET开发框架(二)-框架功能简述.NET开发框架(三)-高可用服务器端设计.NET开发框…

【清华集训2014】Sum)(类欧几里得算法)

【清华集训2014】Sum 然后本质上我们需要求解的就是那个带根号式子的奇偶性,然后我们发现这个式子很像是类欧几里得算法,求解一个斜率为无理数直线下的整点个数,然后我们直接对于一般形式求解,那么就是每次利用整数部分将斜率减小…

一本让我多花2倍时间读的书

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「87」篇原创敬上Hi,大家好,我是Z哥。熟悉我的小伙伴应该知道,我平时看书大多都很快,之前还把自己的速读技巧分享给了…

[NOI2005]月下柠檬树 (自适应辛普森)

P4207 [NOI2005]月下柠檬树 如图,我们要求的面积就是这些圆形跟梯形的组合,由于投射到地面上,显然有h′htanθh \frac{h}{tan \theta}h′tanθh​,由此我们就可以开始推导这个f(x)f(x)f(x)函数了。 所以转换为我们要推导出直线a…

Kong 1.3发布,原生gRPC代理、上游TLS交叉认证

Kong 1.3 发布了,此版本亮点包括支持原生 gRPC 代理、上游 TLS 交叉认证,以及一系列新功能和性能改进。原生 gRPC 代理越来越多的用户转向微服务架构,并且希望有对原生 gRPC 代理的支持,Kong 1.3 解决了这个问题,为支持…