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

news2025/1/10 20:32:48

一、 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: nginx
  template:	    #这是选择或创建的Pod的模板
    metadata:	#Pod的元数据
      labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec:	    #期望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.coloradmin.cn/o/717282.html

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

相关文章

模拟CSRF攻击

今天给大家表演一个拙劣的CSRF攻击。 我会编写两个应用:一个是正经应用,一个是钓鱼的应用。然后让后者攻击前者,让它打钱! 一、绪论 1.1 先聊聊Cookie 参考:常用的本地存储——cookie篇 Cookie在八股文里面好像已…

模板类的开发

模板类的开发 栈定长数组变长数组 栈 入栈和出栈使用引用是为了传递参数 注意构造函数初始化列表使用模板的写法 注意析构函数delete指针需要 [ ] 测试 定长数组 重载了括号运算符 调用的其实是数组 使用int 使用char 变长数组

比亚迪车载Android开发岗三面经历~

前言 首先,我想说一下我为什么会想去比亚迪这样的车企做车载Android开发。我是一名有5年经验的Android开发工程师,之前一直在互联网软件公司工作,做过移动端App和IoT产品的开发。但我一直对汽车领域很感兴趣,也希望自己的技术能应…

TOT(Tree of Thought) | GPT-4+dfs搜索算法提升大模型复杂问题解决能力

大家好,我是HxShine。 今天分享一篇普林斯顿大学的一篇文章,Tree of Thoughts: Deliberate Problem Solving with Large Language Models[1]:思维之树:用大型语言模型解决复杂问题。 这篇工作还是非常有借鉴意义的,OpenAI的Andr…

2023年07月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2023年07月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

深度学习基础

1 机器学习、深度学习、人工智能 1.1 机器学习 机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的学科。 基本步骤:获取数据、数据预处理、特征提取、特征选择…

postman几种常见的请求方式

1、get请求直接拼URL形式 对于http接口,有get和post两种请求方式,当接口说明中未明确post中入参必须是json串时,均可用url方式请求 参数既可以写到URL中,也可写到参数列表中,都一样,请求时候都是拼URL 2&am…

【win怎么给两个屏幕设置不同壁纸】

在现在经济的发展下,多数用户都拥有了两个屏幕,那么如何在不适用壁纸软件的情况下,将两个屏幕设置成不同的壁纸呢? 操作 首先将需要进行设置的图片选好,将其保存到桌面上,紧接着框选两张图片,…

探索Gradio库中的Image模块及其强大功能

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

84、基于stm32单片机超市自助存储柜快递箱系统设计(程序+原理图+流程图+参考论文+开题报告+任务书+设计资料+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

Go程序结构- package和import

1、包和文件 在Go语言中包的作用和其他语言中的库或模块的作用类似,用于支持模块化、封装、编译隔离和重用。关键点如下: (1)包中保存一个或者多个.go结尾的文件,而包的目录就是包的导入路径 (2)中Go中通过一条简单的规则来管理标识符是否对外…

下个版本已定!C++自救新动作!

自去年年底,美国安全局(NSA)在其所发布的《Software Memory Safety》报告中点名批评C之后,C之父Bjarne Stroustrup一顿回怼后,做出决定:内部自救。现在,就让我们看看下一个版本的C,究…

【Go】Go 语言教程--语言变量(五)

往期教程: Go 语言教程–介绍(一)Go 语言教程–语言结构(二)Go 语言教程–语言结构(三)Go 语言教程–数据类型(四) 文章目录 变量声明多变量声明值类型和引用类型简短形…

【微服务】springboot 适配多数据源设计与实现

目录 一、问题背景 1.1 mysql读写分离 1.2 适配多种类型数据库 1.3 多数据源 二、适配多数据源场景和问题 2.1 支持快速切换其他数据源 2.2 代码层面最小化改造 2.3 数据迁移问题 2.4 跨库事务问题 三、多数据源适配解决方案 3.1 自己造轮子 3.2 基于providerId方式…

年少轻狂,中年失意,晚年凄惨的杜甫

诗圣杜甫的一生,几乎和苦难、倒霉紧紧拴在了一起。 裘马轻狂,恣意漫游的青年 公元712年,发生了两件值得历史铭记的大事情。第一件事,唐玄宗在这一年继位;第二件事,伟大的诗人杜甫在这一年出生。 杜甫字子…

openstack平台IsolatedHostsFilter的使用记录

文章目录 前言已有的经验思路一:image元数据思路二:flavor元数据思路三、IsolatedHostsFilter:使用filter来限制总结 前言 甲方的云平台新到了一些海光的机器,希望能加入到已有的计算集群里面。问题不大,但是有些小的…

怎么开发zblog插件?

要开发 ZBlog 插件,可以按照以下步骤进行: 1. 创建插件目录:在 ZBlog 的插件目录中创建一个新的目录,目录名称即为插件的名称,例如 "myplugin"。 2. 创建插件入口文件:在插件目录下创建一个 PHP …

Android Studio实现内容丰富的安卓宿舍管理平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号086 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.报…

docker 教程笔记,win11

1、如何执行container 当git clone一个带Dockerfile的项目时,先打开终端,跳转到该项目文件夹。 使用如下命令构建镜像image docker build -t project_name . 注: project_name为该项目名,后面必须要有空格和点。 执行完毕后&#…

「TCG 规范解读」TCG 规范架构概述(下)

修订历史: 2023.3.4 2023.6.18 2023.7.2 可信计算组织(Ttrusted Computing Group, TCG)是一个非盈利的工业标准组织,它的宗旨是加强不同计算机平台上计算环境的安全性。TCG 于 2003 年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance, TCPA)…