【Kubernetes】如何将应用服务,部署到Kubernetes中???

第一步:准备Docker镜像

首先,将服务打包为Dokcer镜像。确保镜像构建正确,并包含服务运行所需的所有依赖项和配置。

(1)创建一个文件夹(目录)
mkdir ./newpath
(2)在文件来(目录)中创建Dockerfi1e文件(并编写)及其它文件
# 使用Java 8的基础镜像  
FROM java:8  # 设置维护者信息  
MAINTAINER YourName <youremail@example.com>  # 将本地的mei.jar文件复制到容器的/app目录下  
# 注意:确保你的Dockerfile和mei.jar文件在同一个目录下,或者mei.jar文件在Dockerfile指定的构建上下文中  
COPY mei.jar /app/  # 设置工作目录为/app  
WORKDIR /app  # 暴露8080端口(这取决于你的Java应用是否使用此端口,如果不是请相应修改)  
EXPOSE 8080  # 定义容器启动时执行的命令  
# 使用java -jar命令来启动mei.jar文件  
# 注意:如果你的应用需要额外的JVM参数,可以在这里添加  
CMD ["java", "-jar", "mei.jar"]  # 备注:这个Dockerfile假设你的Java应用是一个可执行的JAR文件,并且它会监听8080端口(或你指定的其他端口)  
# 如果你的应用配置不同(例如,使用了不同的端口或启动参数),请相应地修改Dockerfile中的EXPOSE和CMD指令
(3)使用docker build命令构建镜像
docker build -t my-app:latest
(4)使用构建的镜像启动容器

在需要运行容器:的地方,Docker pull命令拉取镜像后,运行启动容器。

docker run -p 8080:8080 -d my-app:latest

第二步:创建Kubernetes部署配置文件(Deployment.yaml)

创建配置文件Deployment.yaml,在这个配置文件中,需要定义诸如副本数量,容器镜像,资源请求和限制,环境变量等信息。

apiVersion: apps/v1 # 指定使用apps/v1版本的API  
kind: Deployment # 定义资源的类型为Deployment  
metadata:  name: myapp-deployment # Deployment的名称  labels:  app: myapp # 为Deployment添加标签,方便后续通过标签选择器进行关联  
spec:  replicas: 3 # 指定副本数量为3  selector:  matchLabels:  app: myapp # 通过标签选择器选择Pod,这里的标签必须与下面Pod模板中的标签一致  template:  metadata:  labels:  app: myapp # 为Pod模板添加标签  spec:  containers:  - name: myapp-container # 容器的名称  image: myapp:latest # 容器使用的镜像  ports:  - containerPort: 8080 # 容器内部监听的端口  env: # 环境变量列表  - name: MY_ENV_VAR # 环境变量名称  value: "some-value" # 环境变量的值  resources: # 资源请求和限制  requests: # 资源请求  memory: "64Mi" # 请求64MB内存  cpu: "250m" # 请求250m CPU(即0.25个CPU核心)  limits: # 资源限制  memory: "128Mi" # 限制最大使用128MB内存  cpu: "500m" # 限制最大使用500m CPU(即0.5个CPU核心)  # 还可以添加其他配置,如volumeMounts、securityContext等

第三步:定义服务配置(Service YAML)

如果服务能够从集群外部访问,或者在集群内部进行服务发现,需要创建服务配置文件,定义服务的类型(如 ClusterIP、NodePort、LoadBalancer 等)和端口映射。

apiVersion: v1 # 使用Kubernetes的核心v1 API  
kind: Service # 定义资源的类型为Service  
metadata:  name: myapp-service # Service的名称  
spec:  type: NodePort # 指定Service的类型为NodePort,这样可以从集群外部访问  selector:  app: myapp # 通过标签选择器选择Pod,这里的标签应与Pod模板中的标签一致  ports:  - port: 80 # Service内部的端口,即Pod中容器暴露的端口  targetPort: 8080 # 容器内部监听的端口,如果与port相同,可以省略  nodePort: 30001 # NodePort类型时指定的节点端口,范围通常为30000-32767,如果省略,则Kubernetes会自动分配  protocol: TCP # 端口协议,默认为TCP

第四步:应用配置

确保您已经创建了 Deployment 和 Service 的 YAML 配置文件,并将它们保存在您的本地文件系统中。例如,Deployment 配置文件可以命名为 deployment.yaml,Service 配置文件可以命名为 service.yaml。

# 使用 cd 命令切换到包含您的 YAML 配置文件的目录
cd /path/to/your/files# 应用配置文件:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml# 部署完毕后,查看验证资源状态
kubectl get deployments
kubectl get pods
kubectl get services/svc

第五步:监控和调试

使用 Kubernetes 提供的工具和命令,如 kubectl get pods 、 kubectl describe pod 等,来监控服务的部署状态,查看日志以进行调试和故障排除。

# 查看所有 Pods:
kubectl get pods# 查看 Pods 的详细信息
kubectl get pods -o wide# 按状态过滤 Pods
kubectl get pods --field-selector=status.phase=Running# 查看 Pod 的详细信息
kubectl describe pod <pod-name># 查看日志
kubectl logs <pod-name># 实时查看 Pod 的日志
# 加上 -f 参数可以实时地查看日志,这对于观察应用的行为或调试问题特别有用。
kubectl logs -f <pod-name># 进入 Pod 的容器
# 如果您的容器中没有 /bin/bash,可以尝试 /bin/sh 或其他可用的 shell
# 不是所有的容器镜像都包含 shell 环境。如果容器中没有可用的 shell,
kubectl exec -it <pod-name> -- /bin/bash# 使用 debug 模式(需要 Kubernetes >= 1.18),来创建一个临时的调试 Pod
kubectl debug 

除了 kubectl 之外,还有许多其他工具可以用于 Kubernetes 的监控和调试,例如 Prometheus、Grafana、Kibana(用于日志分析)、Weave Scope(可视化容器、Pods 和服务的实时状态)等。这些工具通常提供更丰富的功能和更好的用户体验,但也需要额外的配置和部署。

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

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

相关文章

代码随想录训练营Day56

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、搜索插入位置二、在排序数组中查找元素的第一个和最后一个位置 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 今天是跟着代码随想…

Mqtt Client客户端重连时,清空订阅的主题

最近开发时&#xff0c;碰到需要修改mqttClient客户端的订阅主题。实际测试时发现一个问题&#xff0c;修改订阅了新的主题&#xff0c;重连后&#xff0c;之前订阅的主题还是存在&#xff0c;还能继续收到之前订阅主题的消息。 解决办法&#xff0c;配置 mOptions.setCleanSes…

NXP i.MX8系列平台开发讲解 - 3.18 Linux tty子系统介绍(一)

专栏文章目录传送门&#xff1a;返回专栏目录 Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 1. TTY 起源 2. Linux 系统中的TTY 2.1 Linux TTY 设备形式 2.2 Linux TTY framework 2.3 驱动核心相关文件…

零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!

这段老挝文字翻译成中文是什么意思&#xff1f;有什么好用的老挝语翻译工具推荐吗&#xff1f; 快速翻译&#xff1a;中老语言无缝转换&#xff0c;实时翻译&#xff0c;让沟通更流畅。 学习工具&#xff1a;零基础入门到流利对话&#xff0c;老挝语真人发音&#xff0c;让你的…

MaxKB开源知识库问答系统发布v1.3.0版本,新增强大的工作流引擎

2024年4月12日&#xff0c;1Panel开源项目组正式发布官方开源子项目——MaxKB开源知识库问答系统&#xff08;github.com/1Panel-dev/MaxKB&#xff09;。MaxKB开源项目发布后迅速获得了社区用户的认可&#xff0c;成功登顶GitHub Trending趋势榜主榜。 截至2024年7月4日&…

docker仓库--centos7.9部署harbor详细过程与使用以及常见问题

文章目录 前言1.docker-compose是什么2.harbor是什么 centos7部署harbor详细过程与使用环境一、部署docker二、部署harbor1.下载docker-compose工具2.harbor安装3.拷贝样本文件&#xff0c;并修改文件4.安装harbor&#xff0c;安装完成自行启动5.查看 三、harbor的使用1.创建项…

点估计和参数分布的对比

点估计&#xff08;Point Estimation&#xff09;和 参数分布&#xff08;Parameter Distribution&#xff09;是统计学中两种不同的参数估计方法。 文章目录 点估计&#xff08;Point Estimation&#xff09;参数分布&#xff08;Parameter Distribution&#xff09;对比总结 …

Https网站如何申请免费的SSL证书及操作使用指南

前言 在当今互联网环境下&#xff0c;HTTPS已成为网站安全的标配&#xff0c;它通过SSL/TLS协议为网站数据传输提供加密&#xff0c;保障用户信息的安全。申请并部署免费SSL证书&#xff0c;不仅能够提升网站的专业形象&#xff0c;还能增强用户信任。本文将详细介绍如何在知名…

StreamSets: 数据采集工具详解

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

Golang语法规范和风格指南(一)——简单指南

1. 前引 一个语言的规范的学习是重要的&#xff0c;直接关系到你的代码是否易于维护和理解&#xff0c;同时学习好对应的语言规范可以在前期学习阶段有效规避该语言语法和未知编程风格的冲突。 这里是 Google 提供的规范&#xff0c;有助于大家在开始学习阶段对 Golang 进行一…

Tensorflow入门实战 T07-Vgg16网络进行咖啡豆识别

本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 1、 前言 这周学习的主要内容是&#xff0c;使用tensorflow编写代码&#xff0c;使用vgg-16网络模型&#xff0c;完成咖啡豆的识别。 2、完整代码 imp…

【密码学基础】对随机不经意传输(Random Oblivious Transfer)的理解

ROT在offline阶段生成大量的OT对&#xff0c;在online阶段通过one-pad方式高效加密&#xff0c;并且只需要简单的异或运算就能实现OT过程&#xff08;去随机化&#xff09;。 在ROT中&#xff0c;有一个关键点是&#xff1a;需要考虑offline阶段的选择比特和online阶段的选择比…

C++ 视觉开发 六.特征值匹配

以图片识别匹配的案例来分析特征值检测与匹配方法。 目录 一.感知哈希算法(Perceptual Hash Algorithm) 二.特征值检测步骤 1.减小尺寸 2.简化色彩 3.计算像素点均值 4.构造感知哈希位信息 5.构造一维感知哈希值 三.实现程序 1.感知哈希值计算函数 2.计算距离函数 3…

vscode 生成项目目录结构 directory-tree 实用教程

1. 安装插件 directory-tree 有中文介绍&#xff0c;极其友好&#xff01; 2. 用 vscode 打开目标项目 3. 快捷键 Ctrl Shift p&#xff0c;输入 Directory Tree 后回车 会在 README.md 文件的底部生成项目目录&#xff08;若项目中没有 README.md 文件&#xff0c;则会自动创…

用NanoID换掉 UUID,好处是?【送源码】

当我们在分布式环境中存储一些数据的时候&#xff0c;不得不面对的一个选择&#xff0c;就是ID生成器。 使用一个唯一的字符串&#xff0c;来标识一条完整的记录。 这时候&#xff0c;不能使用md5或者sha1来对整个记录做摘要&#xff0c;因为我们后续还要改动这个记录。也不能…

使用pt-table-checksum 3.6.0避坑指南

3.6.0在使用dsn的情况下存在bug&#xff0c;最后回退3.4.0版本 创建ptuser用户 #使用验证算法&#xff0c;否则默认会报错 #创建用户 create user ptuser% identified with sha256_password by "你的密码"; #发现用dsn还是会报对应错误 #授权 GRANT CREATE,INSERT…

web自动化(四)日期控件

执行js脚本有两种方式一种是原始js 一种jQuery 推荐使用jQuery 根据简洁 方便 selenuim import timefrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.su…

从 麦克斯韦方程组 到 波动方程 再到 二维波动方程

从 麦克斯韦方程组 到 波动方程 再到 二维波动方程 flyfish 从麦克斯韦方程组&#xff0c;推导出了电场和磁场的波动方程。这两个波动方程描述了电磁场的传播&#xff0c;并且它们的形式与标准的波动方程一致。波动方程表明电场和磁场都以波的形式传播&#xff0c;传播速度 …

【C++】日期类

鼠鼠实现了一个日期类&#xff0c;用来练习印证前几篇博客介绍的内容&#xff01;&#xff01; 目录 1.日期类的定义 2.得到某年某月的天数 3.检查日期是否合法 4.&#xff08;全缺省&#xff09;构造函数 5.拷贝构造函数 6.析构函数 7.赋值运算符重载 8.>运算符重…

高效PD,稳定传输,LDR6023CQ芯片,打造顶级直播体验

在当今市场&#xff0c;一款备受瞩目的直播神器——无线领夹麦克风&#xff08;MIC&#xff09;&#xff0c;正风靡于网红直播、在线教育、专业采访、高清视频录制及视频会议等多个领域。麦克风&#xff0c;这一昔日课堂上的常见设备&#xff0c;已随着科技的飞速发展而焕然一新…