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入门----部署一个应用程序相关推荐

  1. 使用yaml文件创建deployment来部署一个应用程序到k8s集群

    作者: wucong60 原文: https://blog.csdn.net/wucong60/article/details/81586272 系列链接 Kubernetes系列之一:在Ubuntu ...

  2. helloworldjava_Java语言入门-第一个HelloWorld程序

    1.官网下载Jdk 1.1 打开之后出现如下界面: 1.2选择对应版本:这里选择Jdk8版本. 最新的不一定是最好的,稳定才是王道. 2.安装 2.1 双击安装包打开,点击下一步. 2.2 点击更改路 ...

  3. CUDA下的GPU编程入门--第一个CUDA程序

    CUDA是NVIDIA公司开发的一个用于GPU编程的开源框架,用于将GPU用于更广泛的数学计算,充当cpu的功能,所以只能在nvidia的GPU下实现,如果你的GPU不是nvidia的,赶紧去换一个吧 ...

  4. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  5. 一个Java程序猿眼中的前后端分离以及Vue.js入门

    原文:https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA 松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的, ...

  6. 给新手看的 Micronaut 入门教程,10 分钟写出一个 Micronaut 程序

    以下内容均选自 Micronaut 入门实战:基于 JVM 的微服务框架 . Micronaut是什么? Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或 ...

  7. JavaFX入门(一):我的第一个JavaFX程序

    JavaFX简介 JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计.创建.测试.调试和部署富客户端程序,并且和Java一样跨平台. JavaFX发展历史 2008年12月05日 ...

  8. 入门实践丨如何在K3s上部署Web应用程序

    在本文中,我们将使用Flask和JavaScript编写的.带有MongoDB数据库的TODO应用程序,并学习如何将其部署到Kubernetes上.这篇文章是针对初学者的,如果你之前没有深度接触过Ku ...

  9. 在docker中构建普通java程序_Docker入门-构建第一个Java程序

    原标题:Docker入门-构建第一个Java程序 定制镜像 准备一个没有第三方依赖的java web项目,可能参考示例maven结构项目: session-web.war 把该war上传到安装有doc ...

最新文章

  1. [python,2018-06-29] 37%法则及其拓展解决恋爱问题
  2. ML之HMM:HMM算法相关论文、关键步骤、测试代码配图集合
  3. 2019.7.13刷题统计
  4. Hadoop之MapReduce入门
  5. find命令过滤 no such_linux find -exec rm -r 报No such file or directory
  6. 启动nginx服务报错Job for nginx.service failed because the control process exited with error code.
  7. 网络数据隐私保护,阿里工程师怎么做?
  8. 面试题11. 旋转数组的最小数字
  9. HCNA——RIP简单介绍及基本配置
  10. python二维数据读取对齐_python代码要严格对齐
  11. 华为-RH5885 V3 远程KVM
  12. jsp后台批量导入excel表格数据到mysql中_运用java解析excel表,拿到表中的数据并批量插入数据库...
  13. python - bs4提取XML/HTML中某个标签下的属性
  14. DOS命令追加符的使用
  15. 嵌套DIV中的onClick事件在嵌套容器中的连环作用
  16. 微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io
  17. jdbc mysql preparedstatement_java.sql.PreparedStatement不能转换为com.mysql.jdbc.PreparedStatement...
  18. Activiti7工作流引擎:进阶篇(八) 会签
  19. 使用 html 写一个表达爱意的网页
  20. 第七章第八章思维导图

热门文章

  1. 新手学习python零基础_一个零基础新手学习Python应该知道的学习步骤与规划
  2. NodeJS学习:环境变量
  3. 添加虚拟机镜像centso 8的步骤
  4. 头条号想过新手,但指数却一直达不到650,该怎么过新手?
  5. git仓库服务器SSH认证示例
  6. 控制元素到达可视区域内触发动效
  7. 使用python基于socket的tcp服务器聊天室
  8. 神书《纳瓦尔宝典:财富和幸福指南》说了些什么
  9. c++封装webrtc sdk(二):在sdk端实现webrtc视频渲染
  10. 22一战上岸首师大电子信息经验分享|低成本获得大收益|电子信息