k8s:实现一个pod两个容器

# 制作两个容器的镜像

通过以下Dockerfile创建一个镜像

cd /chz/install/docker
vim Dockerfile
<<<< 内容如下:
FROM centos

RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
RUN yum install -y epel-release
RUN yum install -y net-tools telnet wget vim nginx

RUN echo "alias ll='ls -al'" >> /etc/profile

RUN mkdir -p /install/java
RUN cd /install/java && wget https://download.java.net/java/GA/jdk22.0.1/c7ec1332f7bb44aeba2eb341ae18aca4/8/GPL/openjdk-22.0.1_linux-x64_bin.tar.gz
RUN cd /install/java && tar zxvf openjdk-22.0.1_linux-x64_bin.tar.gz
RUN echo 'export JAVA_HOME=/install/java/jdk-22.0.1' >> /etc/profile
RUN echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile

ENTRYPOINT ["nginx", "-g", "daemon off;"]
>>>>

创建镜像,注意这个镜像的【nginx】端口默认是【80】

docker build -t my-centos-nginx-80 .

上传镜像

docker tag my-centos-nginx-80 192.168.44.228:5000/my-centos-nginx-80
docker push 192.168.44.228:5000/my-centos-nginx-80

下面制作一个【nginx】端口为【8080】的镜像
先通过【192.168.44.228:5000/my-centos-nginx-80】镜像启动一个容器

docker run -p80:80 --rm --name=my-centos-nginx-80 192.168.44.228:5000/my-centos-nginx-80

注意上面的【–rm】参数很重要,没有这个参数可能会影响到后面pod的创建
连接上这个容器

docker exec -it my-centos-nginx-80 bash

修改容器里面的nginx的配置文件,将默认修改为【8080】

vim /etc/nginx/nginx.conf
<<<< 修改以下两行,将端口从【80】修改为【8080】
listen       8080 default_server;
listen       [::]:8080 default_server;
>>>>

不要关闭【80】端口的那个【docker run】进程,新开一个窗口,执行以下命令将该容器提交成一个新的镜像:

docker commit my-centos-nginx-80 my-centos-nginx-8080

上传镜像

docker tag my-centos-nginx-8080 192.168.44.228:5000/my-centos-nginx-8080
docker push 192.168.44.228:5000/my-centos-nginx-8080

# 部署k8s的deployment

生成deployment的yaml文件

cd /chz/install/k8s/oneDeployTwoPod
vim deploy.yaml
<<<< 内容如下
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-centos-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-centos
  template:
    metadata:
      labels:
        app: my-centos
    spec:
      containers:
      - name: my-centos-nginx-80
        image: 192.168.44.228:5000/my-centos-nginx-80        # 80端口的镜像
        ports:
        - containerPort: 80
          hostPort: 80
        volumeMounts:
        - name: my-centos-logs 
          mountPath: /chz_logs
      - name: my-centos-nginx-8080
        image: 192.168.44.228:5000/my-centos-nginx-8080      # 8080端口的镜像
        ports:
        - containerPort: 8080
          hostPort: 8080
        volumeMounts:
        - name: my-centos-logs 
          mountPath: /chz_logs
      volumes:
      - name: my-centos-logs
        emptyDir: {}
>>>>

部署deployment

kubectl apply -f deploy.yaml

查看这个pod的容器是否正常
执行【kubectl get pod】
在这里插入图片描述

执行【docker ps | grep -i my-centos-nginx】
在这里插入图片描述

有点奇怪,镜像显示都是【192.168.44.228:5000/my-centos-nginx-8080】,但后面的测试会显示两个容器是正常的,先不管它。

# 测试这两个容器

连接【my-centos-nginx-80】

docker exec -it cb398b2f85cf bash

执行

netstat -lnp

在这里插入图片描述

可以看到【8080】那个进程也在这里。可以用【curl http://localhost:80】和【curl http://localhost:8080】去测试他们,可以发现同一个pod下的多个容器网络是相通的。
进入目录【/】创建一个文件【80.log】

cd /
echo 1 >> 80.log

在这里插入图片描述

进入目录【/chz_logs】创建一个文件【80.log】

cd /chz_logs
echo 1 >> 80.log

在这里插入图片描述

下面进入【my-centos-nginx-8080】看能不能看到这两个文件:

cd /
ls -al

在这里插入图片描述

在【/】目录下没有【my-centos-nginx-80】容器里面创建的【/80.log】文件

cd /chz_logs
ls -al

在这里插入图片描述

在【/chz_logs】目录下可以看到【my-centos-nginx-80】容器里面创建的【/chz_logs/80.log】文件。
这是因为【/】目录是两个容器各自内部的目录,而【/chz_logs】目录两个容器都是通过【my-centos-logs】volume mount过来的(注意看yaml文件)

# 总结

当一个pod里面创建多个容器里面,多个容器的网络是相通的,但是存储是各自独立的。
但是通过将多个容器mount到同一个volume的方式可以让多个容器访问到同一个物理目录的文件。
我们可以利用这一点,让一个pod里面其中一个容器是主任务容器,产生日志文件到mount的目录里面。另一个容器是一个filebeat容器扫描主任务容器产生日志文件的目录(mount同一个volume),这样就可以采集pod里面的日志到elk里面了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2的form利用插槽修改错误提示UI

1. 需求 很多时候我们使用el-form想修改下错误提示的UI&#xff0c;比如table中使用form校验这类场景下错误提示的UI调整就非常重要。 2. 了解文档 Form-Item Scoped Slot name说明error自定义表单校验信息的显示方式&#xff0c;参数为 { error } 3.实际使用 html里使用…

全年申报!2024年陕西省双软企业认定条件标准、申报好处费用

1.双软企业是什么? 答:双软认证并不是一个资质,而是"软件产品登记"和"软件企业认定"两个不同资质的统称.叫做"双软企业" 2.双软企业的优惠政策是什么? 答:(1)软件产品登记的优惠政策:软件产品增值税,从13%减按3%征收,实行即征即退; (2)软件…

个人vsCode配置文件<setting.js>

个人vsCode配置文件setting.js 快速打开1、使用快捷键 CtrlShiftP &#xff0c;然后搜索setting2、手动 自用配置 快速打开 1、使用快捷键 CtrlShiftP &#xff0c;然后搜索setting 2、手动 自用配置 {"terminal.integrated.profiles.windows": {"PowerShell&…

用自然语言连接信息孤岛

​​​​​​​ 信息孤岛互联互通的困难 尽管已经进入了互联网时代&#xff0c;信息系统中的信息孤岛现象仍然十分地严重&#xff0c;不同部门&#xff0c;不同机器之间难以实现互联互通。 不同信息系统的相互通信依赖通信协议和数据模型的定义&#xff0c;前者决定了通信的过…

[网络基础]——计算机网络(OSI)参考模型 详解

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f310;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月2日21点59分 &#x1f004;️文章质量&#xff1a;93分 目录 &#x1f39f;️OSI基本概念 &#x1f384;分层架构…

Edge 工作区是什么?它都有哪些作用?

什么是工作区 Edge 工作区是什么&#xff1f;它是微软 Edge 浏览器中的一个功能&#xff0c;在帮助用户更好地组织和管理他们的浏览会话。通过工作区&#xff0c;用户可以创建多个独立的浏览环境&#xff0c;每个工作区内包含一组相关的标签页和浏览器设置。这使得用户能够根据…

开放式耳机哪个牌子好?5款开放式耳机排名大公开!速速收藏!

想要购买开放式耳机&#xff0c;但面对众多品牌和型号&#xff0c;你是否感到无从下手&#xff1f;别担心&#xff0c;作为耳机发烧友和测评专家&#xff0c;我为大家带来了几款热门开放式耳机的横向对比。从音质、设计、功能等方面进行详细对比&#xff0c;让你一目了然地了解…

解决Windows Hosts 文件因为权限无法修改的问题

如何修改 Windows Hosts 文件并添加域名映射 在日常工作中&#xff0c;可能需要修改 Windows 的 hosts 文件&#xff0c;以将特定的域名映射到指定的 IP 地址。本文介绍三种方法来完成这一任务&#xff1a;直接手动编辑 hosts 文件&#xff0c;使用批处理文件自动完成任务&…

Unity基础实践小项目

项目流程&#xff1a; 需求分析 开始界面 选择角色面板 排行榜面板 设置面板 游戏面板 确定退出面板 死亡面板 UML类图 准备工作 1.导入资源 2.创建需要的文件夹 3.创建好面板基类 开始场景 开始界面 1.拼面板 2.写脚本 注意事项&#xff1a;注意先设置NGUI的分辨率大小&…

MySQL数据库数据恢复方案应对没有where误操作导致的大量数据更新或删除

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

医疗保健的未来——Kompas.ai如何助力精准医疗

引言 在现代医学中&#xff0c;精准医疗逐渐成为提高诊疗效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在医疗领域的应用越来越广泛。本文将探讨精准医疗的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术助力精准医疗的发展。 精准医疗…

@Validated 前端表单数据校验

1. 整合 1.1 依赖引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId></dependency>1.2 控制层 /*** 新增胎架计划** param subsectionPlanVo* return*/PostMapping("/sched…

充电桩,未来出行的绿色引擎

随着新能源时代的到来&#xff0c;充电桩早已不再是一个陌生的词汇&#xff0c;它正在成为我们生活中不可或缺的一部分。 它不仅仅是一个简单的充电设备&#xff0c;更是未来出行的绿色引擎&#xff0c;驱动着我们的汽车&#xff0c;也驱动着这个时代的绿色梦想。 想象一下&am…

重庆公司记账代理,打造专业财务管理解决方案的领先企业

重庆公司记账代理&#xff0c;作为专业的财务管理服务提供商&#xff0c;我们的目标是为公司的经营管理和决策提供科学、准确的财务数据支持&#xff0c;我们通过长期的专业经验和对市场的深入理解&#xff0c;为您提供一站式的记账服务和财务咨询。 专业团队 我们拥有一支由经…

企业物料主数据管理的重要性

物料主数据包含了对所有企业所采购、生产和存储在库存中物料的集中描述。它是企业中有关物料信息的物料数据代码库。将所有的物料数据集成在单一的物料数据库中&#xff0c;消除了数据冗余的问题&#xff0c;而且不仅允许采购部门使用这些数据&#xff0c;其他应用部门也可以使…

我们如何用npm发布自己的插件包?详细的教程来了

一、什么是npm插件&#xff1f; npm&#xff08;“Node 包管理器”&#xff09;是 JavaScript 运行时 Node.js 的默认程序包管理器。npm插件是指通过npm安装的第三方包&#xff0c;可以在Node.js项目中直接使用。这些插件涵盖了各种领域&#xff0c;包括Web开发、数据测试、构建…

什么是专业的倾斜摄影轻量化?

眸瑞科技是一家专业从事自研3D可视化技术底层、提供三维模型轻量化服务的高新技术公司&#xff0c;从事该行业近10年&#xff0c;有着丰富的三维模型处理及开发经验。目前已向许多企事业单位提供过工厂厂区、城市地貌、铁路桥梁、高速公路、旅游景区等倾斜摄影模型轻量化处理、…

什么是捷云等保一体机?解密等保一体机

捷云等保一体机的优点&#xff1f; 一台设备即可满足等级保护所有安全要求&#xff0c;避免了企业购买不同厂商的安全设备的问题。 可以降低等保整改成本&#xff0c;提高整改效率&#xff0c;可以帮助企业快速实现等保合规。 2 捷云等保一体机的安全能力&#xff1f; 捷云等保…

深入了解物流运输管理系统的重要性与实践

在当今竞争激烈的商业环境中&#xff0c;物流运输管理系统正变得越发重要。随着全球化贸易的迅速发展&#xff0c;企业需要更高效、更智能的方式来管理供应链运作&#xff0c;以确保产品能够准时以最优质的方式送达客户手中。物流运输管理系统作为一个关键的工具&#xff0c;为…

高德车道级安全预警再升级 10大场景全方位守护行车安全

今日起&#xff0c;2024年高考、端午节小长假相继到来&#xff0c;正值新一波出行高峰到来&#xff0c;高德地图车道级安全预警功能再次升级。升级后的车道级安全预警功能覆盖了10大安全风险较高的行车场景&#xff0c;全方位、超视距地为用户实时探测、预警行车风险&#xff0…