在k8s集群中部署一个应用程序

一、 k8s集群简单介绍

在这里插入图片描述
上图描述的是拥有一个Master(主)节点和六个Worker(工作)节点的k8s集群
在这里插入图片描述

Master 负责管理集群 负责协调集群中的所有活动,例如调度应用程序,维护应用程序的状态,扩展和更新应用程序。

Worker节点(即图中的Node)是VM(虚拟机)或物理计算机,充当k8s集群中的工作计算机。 每个Worker节点都有一个Kubelet,它管理该Worker节点并负责与Master节点通信。该Worker节点还应具有用于处理容器操作的工具,例如Docker或是containerd

二、前置条件

  • 完成 Kubernetes 集群的安装
  • 完成 Kuboard 的安装,版本不低于 v3.1.1.0

三、了解Deployment

Deployment 译名为 部署。在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container),这个实例会被包含在称为 Pod 的概念中,Pod 是 k8s 中最小可管理单元。
在 k8s 集群中发布 Deployment 后,Deployment 将指示 k8s 如何创建和更新应用程序的实例,master 节点将应用程序实例调度到集群中的具体的节点上。
创建应用程序实例后,Kubernetes Deployment Controller 会持续监控这些实例。如果运行实例的 worker 节点关机或被删除,则 Kubernetes Deployment Controller 将在群集中资源最优的另一个 worker 节点上重新创建一个新的实例。这提供了一种自我修复机制来解决机器故障或维护问题
在容器编排之前的时代,各种安装脚本通常用于启动应用程序,但是不能够使应用程序从机器故障中恢复。通过创建应用程序实例并确保它们在集群节点中的运行实例个数,Kubernetes Deployment 提供了一种完全不同的方式来管理应用程序

四、在 Kubernetes 上部署第一个应用程序

在这里插入图片描述
Deployment 处于 master 节点上,通过发布 Deployment,master 节点会选择合适的 worker 节点创建 Container(即图中的正方体),Container 会被包含在 Pod (即蓝色圆圈)里。

五、实战部署 nginx Deployment

方式一:使用 Kuboard

打开 Kuboard 首页,如下图所示:
在这里插入图片描述

假设您已经完成了集群的导入,点击一个 已就绪 的集群,如下图所示:
在这里插入图片描述
选择 使用 ServiceAccount kuboard-admin 并 点击 default 名称空间 将切换到 default 名称空间首页,如下所示:
在这里插入图片描述
点击左侧菜单的 创建工作负载 ,将打开工作负载编辑器,如下图所示:
在这里插入图片描述
并填写表单如下:
服务类型: Deployment
服务分层:展现层 (Kuboard使用这个字段确定将部署显示在微服务架构的哪个分层)
服务名称: nginx (服务分层的前缀 + 服务名 组成最终的 K8S Deployment name)
副本数:1 (replicas)
点击 容器信息 Tab 页,在 容器信息 Tab 页中点击 添加工作容器 按钮,如下图所示:
在这里插入图片描述
并填写表单如下:
容器名称: nginx
镜像: nginx:1.7.9
抓取策略: Always (每次创建 Pod 都尝试抓取镜像,集群必须是能连外网的)
Ports: TCP : 80 (该容器组监听 TCP 80 端口)

点击 保存
点击 应用
点击 完成
此时可查看到该应用的部署结果,如下图所示:
在这里插入图片描述
点击上图中的 代理 按钮,可以直接测试部署结果
通过代理访问已部署的 nginx 服务时,默认显示结果如下所示:
在这里插入图片描述

方式二:使用 kubectl

kubectl 是 k8s 的客户端工具,可以使用命令行管理集群
创建 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端口可访问

应用 YAML 文件

kubectl apply -f nginx-deployment.yaml

查看部署结果

# 查看 Deployment
kubectl get deployments# 查看 Pod
kubectl get pods

可分别查看到一个名为 nginx-deployment 的 Deployment 和一个名为 nginx-deployment-xxxxxxx 的 Pod。

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

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

相关文章

redis高可用(二)

redis高可用(二) 一、主从复制 1.概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到…

【C++】一文理清C++中的五种强制类型转换

深入理解C中五种强制类型转换的使用场景 一、C风格的强制类型转换 使用形式: Type b (Type)a;C风格的强制类型转换很容易理解,不管什么类型都可以直接进行转换。C也支持C风格的强制类型转换,但是C风格的强制类型转换可能会带来一些隐患&a…

Vue3项目中引入ElementUI使用详解

目录 Vue3项目中引入 ElementUI1.安装2.引入2.1 全局引入2.2 按需引入viteWebpack 3.使用 Vue3项目中引入 ElementUI ElementUI是一个强大的PC端UI组件框架,它不依赖于vue,但是却是当前和vue配合做项目开发的一个比较好的ui框架,其包含了布局…

Go编写流量代理工具

目录 这是一个演示主要分为俩包:流程:逻辑:(端口随意,本地ssh为例)用法:文件地址:代码如下: 这是一个演示 代理本地HTTP服务 代理局域网SSH服务 其他的TCP服务没测试了 主要分为俩包&#x…

WebView头部添加android原生视频播放

需求&#xff1a;我们需要做一个h5页面&#xff0c;并且可以现实加载更多&#xff0c;并且头部我们想要加一个视频播放器&#xff0c;因为h5不够丝滑。 话不多说咱们直接上代码 Xml布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <…

SQL之收集SQL Server线程等待信息

要知道线程等待时间是制约SQL Server效率的重要原因&#xff0c;这一个随笔中将学习怎样收集SQL Server中的线程等待时间&#xff0c;类型等信息&#xff0c;这些信息是进行数据库优化的依据。 sys.dm_os_wait_stats 这是一个系统视图&#xff0c;里面存储线程所遇到的所有的等…

3D深度视觉与myCobot 320机械臂无序抓取

今天我记录使用myCobot320 M5跟FS820-E1深度相机进行一个无序抓取物体的分享。 为什么会选择深度相机和机械臂做一个案例呢&#xff1f; 2D相机&#xff08;最常见使用的相机&#xff09;可以捕捉二维图像&#xff0c;也就是在水平和垂直方向上的像素值。它们通常用于拍摄静态…

关于IE11的样式兼容问题记录

1、布局如下 <div class"map-label" :class"{active:isActive}" :style"{marginTop:${marTopVal}px}"><transition name"slide-fade"><div class"transition-out" v-if"show"><div class&q…

地图可视化开发的平台如何选择?

地图数据的日益丰富和人们对数据可视化需求不断提高&#xff0c;地图可视化已经成为了信息化建设中重要的组成部分&#xff0c;在各个行业和领域中都有广泛的应用。地图可视化开发平台选择至关重要&#xff0c;不仅会影响到可视化效果&#xff0c;还会影响到开发难度、维护成本…

OpenCV:深入Feature2D组件——角点检测

角点检测 1 Harris角点检测1.1 兴趣点与角点1.2 角点检测1.3 harris角点检测1.4 实现harris角点检测&#xff1a;cornerHarris()函数1.5 综合案例&#xff1a;harris角点检测与测绘 2. Shi—Tomasi角点检测2.1Shi—Tomasi角点检测概述2.2 确定图像强角点&#xff1a;goodFeatur…

leetcode 21.合并两个有序链表

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接2&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 206.反转链表 &#x1f4ab;链接4&#xff1a;leetcode 203.移除链…

RabbitMQ入门指南

人生永没有终点。只有等到你瞑目的那一刻&#xff0c;才能说你走完了人生路&#xff0c;在此之前&#xff0c;新的第一次始终有&#xff0c;新的挑战依然在&#xff0c;新的感悟不断涌现。 文章目录 一、MQ与RabbitMQ概述1. MQ简述2. MQ的优势3. MQ的劣势4. 常见的MQ产品5. Rab…