01_k8s入门----部署一个应用程序
CSDN话题挑战赛第2期
参赛话题:云原生技术栈分享
前提:
- 完成k8s集群的安装
目标
- 使用 kubectl 在 k8s 上部署第一个应用程序。
- kubectl 是 k8s 的客户端工具,可以使用命令行管理集群。
kubernetes部署
在k8s 上进行部署前,首先需要了解一个基本概念 Deployment
deployment 译名为部署。在k8s中,通过发布deployment,可以创建应用程序(docker image)的实例(docker container),这个实例会被包含在称为pod的概念中,pod的k8s最小可管理单元。
在k8s集群中发布deploument 后,deployment 将指示k8s如何创建和更新应用程序的实例,master节点将应用程序实例调度到节点中的具体的节点上。
创建应用程序实例后,kubernetes deployment controller 会持续监控这些实例。如果运行实例的worker节点关机或被删除,则kubernetes Deployment Contriller 将在集群中资源最优的另一个worker节点上重新创建一个新的实例。这提供了一种自我修复机制来解决机器故障或维护问题。
在容器编排之前的时代,各种安装脚本通常用于启动应用程序,但是不能够使用应用程序从集群故障中恢复,通过创建应用程序实例并确保它们在集群节点中的应用实例个数,kubernetes deployment 提供一种完全不同的方式来管理应用程序。
在kubernetes上部署第一个应用程序
Deployment 处于 master 节点上,通过发布 Deployment,master 节点会选择合适的 worker 节点创建 Container(即图中的正方体),Container 会被包含在 Pod (即蓝色圆圈)里。
实战:部署nginx Deployment
创建YAML 文件:
创建文件 nginx-deployment.yaml,内容如下:
有注释版:
apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment #该配置的类型,我们使用的是 Deployment
metadata: #译名为元数据,即 Deployment 的一些基本属性和信息name: nginx-deployment #Deployment 的名称labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解app: nginx #为该Deployment设置key为app,value为nginx的标签
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用replicas: 1 #使用该Deployment创建一个应用程序实例selector: #标签选择器,与上面的标签共同作用,目前不需要理解matchLabels: #选择包含标签app:nginx的资源app: nginxtemplate: #这是选择或创建的Pod的模板metadata: #Pod的元数据labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Podapp: nginxspec: #期望Pod实现的功能(即在pod中部署)containers: #生成container,与docker中的container是同一种- name: nginx #container的名称image: nginx:1.7.9 #使用镜像nginx:1.7.9创建container,该container默认80端口可访问
无注释版:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9
应用yaml文件
kubectl apply -f nginx-deployment.yaml
查看部署结果
# 查看 Deployment
kubectl get deployments# 查看 Pod
kubectl get pods
可分别查看到一个名为 nginx-deployment 的 Deployment 和一个名为 nginx-deployment-xxxxxxx 的 Pod
01_k8s入门----部署一个应用程序相关推荐
- 使用yaml文件创建deployment来部署一个应用程序到k8s集群
作者: wucong60 原文: https://blog.csdn.net/wucong60/article/details/81586272 系列链接 Kubernetes系列之一:在Ubuntu ...
- helloworldjava_Java语言入门-第一个HelloWorld程序
1.官网下载Jdk 1.1 打开之后出现如下界面: 1.2选择对应版本:这里选择Jdk8版本. 最新的不一定是最好的,稳定才是王道. 2.安装 2.1 双击安装包打开,点击下一步. 2.2 点击更改路 ...
- CUDA下的GPU编程入门--第一个CUDA程序
CUDA是NVIDIA公司开发的一个用于GPU编程的开源框架,用于将GPU用于更广泛的数学计算,充当cpu的功能,所以只能在nvidia的GPU下实现,如果你的GPU不是nvidia的,赶紧去换一个吧 ...
- 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序
本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 一个Java程序猿眼中的前后端分离以及Vue.js入门
原文:https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA 松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的, ...
- 给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序
以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架 . Micronaut是什么? Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或 ...
- JavaFX入门(一):我的第一个JavaFX程序
JavaFX简介 JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计.创建.测试.调试和部署富客户端程序,并且和Java一样跨平台. JavaFX发展历史 2008年12月05日 ...
- 入门实践丨如何在K3s上部署Web应用程序
在本文中,我们将使用Flask和JavaScript编写的.带有MongoDB数据库的TODO应用程序,并学习如何将其部署到Kubernetes上.这篇文章是针对初学者的,如果你之前没有深度接触过Ku ...
- 在docker中构建普通java程序_Docker入门-构建第一个Java程序
原标题:Docker入门-构建第一个Java程序 定制镜像 准备一个没有第三方依赖的java web项目,可能参考示例maven结构项目: session-web.war 把该war上传到安装有doc ...
最新文章
- [python,2018-06-29] 37%法则及其拓展解决恋爱问题
- ML之HMM:HMM算法相关论文、关键步骤、测试代码配图集合
- 2019.7.13刷题统计
- Hadoop之MapReduce入门
- find命令过滤 no such_linux find -exec rm -r 报No such file or directory
- 启动nginx服务报错Job for nginx.service failed because the control process exited with error code.
- 网络数据隐私保护,阿里工程师怎么做?
- 面试题11. 旋转数组的最小数字
- HCNA——RIP简单介绍及基本配置
- python二维数据读取对齐_python代码要严格对齐
- 华为-RH5885 V3 远程KVM
- jsp后台批量导入excel表格数据到mysql中_运用java解析excel表,拿到表中的数据并批量插入数据库...
- python - bs4提取XML/HTML中某个标签下的属性
- DOS命令追加符的使用
- 嵌套DIV中的onClick事件在嵌套容器中的连环作用
- 微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io
- jdbc mysql preparedstatement_java.sql.PreparedStatement不能转换为com.mysql.jdbc.PreparedStatement...
- Activiti7工作流引擎:进阶篇(八) 会签
- 使用 html 写一个表达爱意的网页
- 第七章第八章思维导图