【K8S学习笔记】Part3:同一Pod中多个容器间使用共享卷进行通信

2023-05-16

本文将展示如何使用共享卷(Volume)来实现相同Pod中的两个容器间通信。

注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同。

0x00 准备工作

需要有一个K8S集群,并且配置好了kubectl命令行工具来与集群通信。如果未准备好集群,那么你可以使用Minikube创建一个K8S集群,或者你也可以使用下面K8S环境二者之一:

  • Katacoda
  • Play with Kubernetes

如果需要查看K8S版本信息,可以输入指令kubectl version

0x01 创建一个运行两个容器的Pod

在本节中,我们会创建一个运行了两个容器的Pod。这两个容器共享了一个可以用于二者间通信的卷。下面是该Pod的配置文件:

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

在该配置文件中,可以看到该Pod拥有一个名为shared-data的卷。

在该配置文件中,第一个容器运行了一个nginx服务器,共享卷在该容器中的挂载路径为/usr/share/nginx/html。第二个容器基于debian镜像,共享卷在该容器中的挂载路径为/pod-data。此外,第二个人容器运行了以下命令,然后终止。

echo Hello from the debian container > /pod-data/index.html

注意,第二个容器在nginx服务器根目录下创建了index.html文件。

创建Pod和两个容器:

kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/two-container-pod.yaml

查看关于该Pod和容器的信息:

kubectl get pod two-containers --output=yaml

下面是部分输出结果:

apiVersion: v1
kind: Pod
metadata:
  ...
  name: two-containers
  namespace: default
  ...
spec:
  ...
  containerStatuses:

  - containerID: docker://c1d8abd1 ...
    image: debian
    ...
    lastState:
      terminated:
        ...
    name: debian-container
    ...

  - containerID: docker://96c1ff2c5bb ...
    image: nginx
    ...
    name: nginx-container
    ...
    state:
      running:
    ...

可以看到,debian容器已经终止了,而nginx容器则仍在运行。
获取一个nginx容器的shell:

kubectl exec -it two-containers -c nginx-container -- /bin/bash

在该shell中,我们验证了nginx仍在运行:

root@two-containers:/# apt-get update
root@two-containers:/# apt-get install curl procps
root@two-containers:/# ps aux

输出结果类似如下:

USER       PID  ...  STAT START   TIME COMMAND
root         1  ...  Ss   21:12   0:00 nginx: master process nginx -g daemon off;

前面debian容器在nginx的根目录下创建了index.html文件,下面指令使用curl向nginx服务器发送一个GET请求:

root@two-containers:/# curl localhost

输出结果显示,nginx服务器返回了debian容器创建的那个web页面:

Hello from the debian container

0x02 总结

Pod中之所以能够包含多个容器,其主要原因是为了支持辅助主程序的辅助程序。辅助程序的经典例子是数据拉取器、数据推送器和代理。辅助程序与主程序间经常需要通信,通常情况下是通过一个共享文件系统来实现的,正如本文中展示的那样;或者,通过环回网络接口localhost。这种方式的一个例子是Web服务器,以及与之配套的拉取Git仓库更新的辅助程序。

本文中的共享卷提供了一种在Pod生命周期内实现容器间通信的方式。如果该Pod被删除并重建,那么共享卷中的任何数据都将会丢失。

英文原文:https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

转载于:https://www.cnblogs.com/leejack/p/8319612.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【K8S学习笔记】Part3:同一Pod中多个容器间使用共享卷进行通信 的相关文章

  • 虚拟机去混杂模式与 vlan in vxlan 特性

    虚拟机 vlan trunk 特性 1 功能 1 xff09 允许不同vlan的network下的虚拟机之间通信 一般情况下 xff0c 虚拟机只能在相同vlan的网络下通信 2 xff09 允许虚拟机发送vlan报文 2 组网图 虚拟机出
  • 慧智物联剖析信息化与数字化的区别,文件管理不容忽视

    目前 xff0c 数字化 一词铺天盖地 xff0c 已经成为经济 科技等领域最热门的话题 社会各界乃至国家都非常重视 xff0c 大力推广 xff0c 可以说是国家战略 信息化 xff0c 经常和数字化一起被提及 xff0c 是两个容易混淆
  • Dev-C++ 5.11简单使用说明

    点此下载 xff0c 下载完后解压并双击 Dev Cpp 5 11 TDM GCC 4 9 2Setup exe xff0c 默认安装即可 使用过程如下 xff1a 0 打开Dev C 43 43 开发环境 1 新建源文件 xff0c 按C
  • Deep Belief Network简介

    1 多层神经网络存在的问题 常用的神经网络模型 一般只包含输入层 输出层和一个隐藏层 xff1a 理论上来说 隐藏层越多 模型的表达能力应该越强 但是 当隐藏层数多于一层时 如果我们使用随机值来初始化权重 使用梯度下降来优化参数就会出现许多
  • 神经网络浅讲:从神经元到深度学习

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 xff0c 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 xff0c 循序的方式讲解神经网络 适合
  • CentOS7使用firewalld打开关闭防火墙与端口

    1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 xff1a systemctl status firewa
  • Vue生命周期

    Vue实例的生命周期 什么是生命周期 xff1a 从Vue实例创建 运行 到销毁期间 xff0c 总是伴随这各种各样的事件 xff0c 这些事件统称为生命周期 生命周期钩子 xff1a 就是生命周期事件的函数 主要的生命周期函数分类 xff
  • toapi模块简单使用

    toapi是一个api与爬虫结合的一个库 使用简单 可以自定义api展示 简单的mockserver 但只限制于get请求 toapi会在同级目录下建立缓存机制 再次访问就会读缓存了 安装 pip intall toapi pip inst
  • 高等数学同济第七版课后答案上册

    高等数学同济第七版课后答案上册 下载地址 xff1a 链接 xff1a https pan baidu com s 185C8RB4Y9pYO84V4Rup1Wg 提取码 xff1a p7o4 如果链接失效扫一扫右侧 xff0c 回复 高等
  • 以Integer类型传参值不变来理解Java值传参

    最近在写代码的时候出了一个错误 xff0c 由于对值引用理解的不深 将Integer传入方法中修改 xff0c 以为传入后直接修改Integer中的值就不用写返回值接收了 xff0c 虽然很快发现了问题 xff0c 但还是来总结一下 首先是
  • HD2AV_F3B

    文档内容 xff1a 循环存储器的编写 xff0c 每一行的像素输入进行存储 xff0c 再依据目标像素所在行进行相应的读取 工程中会开辟一定空间的RAM用于存储 xff0c 但是以一个循环的顺序去读写换 时间节点 xff1a 2014 1
  • pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw web或virtualenv 都可能出现下面问题 root 64 kali pip install distribute Collecting distribute Exception Tr
  • 防火墙关闭后不能ping通的解决办法

    修改被ping服务器的防火墙设置 xff1a 开始 控制面板 防火墙 高级 入站规则 文件和打印机共享 回显请求 ICMPv4 In 右键 启用 一共有两个 转载于 https www cnblogs com zhjx0521 p 1041
  • cmake设置mfc编译项目

    cmake minimum required VERSION 3 0 项目名 set PROJ NAME DCMLIB project PROJ NAME 设置变量 set CMAKE ALLOW LOOSE LOOP CONSTRUCTS
  • css 调转180度:transform: rotate(180deg);

    css 调转180度 xff1a transform rotate 180deg 转载于 https www cnblogs com shark1100913 p 8961298 html
  • OpenStack虚拟机冷迁移与热迁移

    一 虚拟机迁移分析 openstacvk虚拟机迁移分为冷迁移和热迁移两种方式 1 1冷迁移 xff1a 冷迁移 cold migration xff0c 也叫静态迁移 关闭电源的虚拟机进行迁移 通过冷迁移 xff0c 可以选择将关联的磁盘从
  • ubuntu下安装谷歌浏览器

    deb 是 Debian Linux 的安装格式 xff0c 在 ubuntu 中同样可以使用 要安装 deb 安装包 xff0c 需要使用 dpkg这个终端命令 xff0c 命令格式如下 xff1a sudo dpkg i lt pack
  • 更改root与vnc密码,配置vnc

    更改root密码 登录到root用户下 passwd 更改vnc密码 vncpasswd 配置vnc vi etc sysconfig vncservers 找到vncservers 61 34 1 myusername 34 这个字符串
  • linux vnc端口修改,vncserver端口的修改

    vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 先看看这个配置 VNCSERVERS 61 34 1 oracle 2 root 34 VNCSERVERARGS 1 61 34 geometry 800
  • winform布局格式

    一 默认布局 可以加panel xff0c 也可以不加 xff1b 通过鼠标拖动控件的方式 xff0c 根据自己的想法布局 拖动控件的过程中 xff0c 会有对齐的线 xff0c 方便操作 xff1b 也可选中要布局的控件 xff0c 在工

随机推荐

  • 事件(信号量、邮箱、消息队列)

    对于共享数据 xff0c 单纯通过加锁来保护在代码实现上这并不是很困难的 真正困难的地方是辨认出需要共享的数据和临界区 xff01 这里有一个很好的经验 xff1a 如果有其他的执行线程可以访问这些数据 xff0c 那么就要给这些数据加锁
  • Hadoop通过API访问HDFS

    1 version 1 通过Hadoop API访问HDFS 64 throws IOException 64 Test public void readFileByAPI throws IOException 获取hadoop配置信息 C
  • 对新课程的学习与期望

    我希望这门课可以让我熟练的掌握网站开发的知识 xff0c 我希望学完这门课后我可以创建出一个我网站 xff0c 我计划每周在这门课上花费13个小时 xff0c 每个礼拜的周一到周五的晚上花两个小时学习高级网站开发 转载于 https www
  • Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)

    问题导读 xff1a 1 怎样使用arp responder xff1f 2 怎样搭建l2pop环境 xff1f 3 ARP Responder arp responder 的原理不复杂 Neutorn DB 中保存了所有的端口的 MAC
  • SDN控制器ONOS的学习过程[mininet]

    命令语法 这个符号代表现在处于 Linux 的shell 交互下 xff0c 需要使用的是 Linux 命令mininet gt 这个符号表示现在处于 Mininet 交互下 xff0c 需要使用的是 Mininet 的命令 xff03 这
  • 什么是网络操作系统?网络操作系统具有哪些基本功能?

    网络操作系统是网络上各计算机能方便而有效地共享网络资源 xff0c 为网络用户提供所需的各种服务的软件和有关规程的集合 网络操作系统与通常的操作系统有所不同 xff0c 它除了应具有通常操作系统应具有的处理机管理 存储器管理 设备管理和文件
  • [教程] 【原创】媒体扫描耗电的彻底解决办法(申精)

    http bbs gfan com android 6740350 1 1 html 原创处女贴 xff0c 呵呵 研究换4 1 2也有段时间了 xff0c 4 1 2各方面功能均让我挺满意的 xff0c 用着也蛮顺手的 偶尔上论坛 xff
  • Error Domain=PlugInKit Code=13 打开相册模拟器卡顿

    问题描述 xff1a discovery errors encountered while discovering extensions Error Domain 61 PlugInKit Code 61 13 34 query cance
  • Arch Linux中通过AUR安装Redis Desktop Manager失败

    笔者在安装Redis Desktop Manager时出现了Failed to connect to chromium googlesource com port 443 Connection timed out错误 xff0c 具体见文末
  • 远程linux桌面灰屏,解决配置Ubuntu中vnc远程显示灰屏

    解决配置Ubuntu中vnc远程显示灰屏 a 缺失图形化工具 b vnc xstartup 权限不对 1 Ubuntu 16 04 安装 VNC 及 Mate 桌面环境 https www htcp net 880 html Fluxbox
  • linux客户端连接iscsi,配置ISCSI客户端(LINUX)redhat5-iSCSI-INITIATOR

    ISCSI 4的客户端装上去后会有 etc iscsi conf 配置文件 xff0c 直接按照模板参数修改就可以了 在ISCSI6的客户端配置方式有些变化 xff0c 这让我搞了一下午 xff0c 也参考的51CTO某技术大师的博客 xf
  • 《OVN Logical Flows and ovn-trace》翻译

    在本篇文章中 xff0c 我将解释什么是Logical Flow以及如何使用ovn trace去更好地理解它们 同时 xff0c 我也会用一些例子来解释 xff0c 为什么使用Logical Flow这种抽象模型能让新特性的添加变得出乎意料
  • fluent中UDF环境变量问题的三种解决方法

    方法一 xff1a 这种方式最简便 xff0c 首选这种 xff0c 但是有时会因为不明原因而不好使 xff0c 我自己电脑刚开始用这种方式是行得通的 xff0c 但是后来中途装过很多乱七八糟的软件 xff0c 估计环境变量改乱了 xff0
  • svn status '~'

    svn status 出现 39 39 时 提交会显示错误 xx xx svn 39 containing working copy admin area is missing Item is versioned as one kind o
  • 浏览器缓存原理

    为什么要使用web缓存 xff1f Web缓存存在于服务器和客户端之间 Web缓存密切注视着服务器 客户端之间的通信 xff0c 监控请求 xff0c 并且把请求输出的内容 xff08 例如html页面 图片和文件 xff09 另存一份 x
  • 开发问题记录 - Failed to connect to raw.githubusercontent.com port 443 after 3 ms: Connection refused

    文章目录 前言开发环境问题描述问题分析解决方案总结最后 前言 这是个经常能遇到的问题 xff0c 不管是安装Homebrew还是安装RVM又或者是安装其他的 xff0c 都少不了它 开发环境 macOS 12 6 问题描述 执行命令后的报错
  • ROS CAN总线设备接入(二)can总线数据提取和以ros topic形式发布

    简介 基于前ROS CAN总线设备接入 xff08 一 xff09 xff0c 我们成功实现了对于libpcan库的使用 xff0c 本次将实现对于can总线的初始化以及对于can总线上有效数据提取 xff0c 并将其以topic形式发布到
  • Linux 开启VNCSERVER

    尽管我们可以使用 SSH连接远程通过字符界面来操作Linux xff0c 但是对于更多熟悉图形人来说是很不方便的 xff0c 因此开启Linux的远程桌面还是很有必要的 目前有两种比较流 行的方式 xff1a XDM X display m
  • Maven WAR overlay

    Overlays are used to share common resources across multiple web applications 1 自己项目结构 pom xml 96 src 96 main java 96 com
  • 【K8S学习笔记】Part3:同一Pod中多个容器间使用共享卷进行通信

    本文将展示如何使用共享卷 xff08 Volume xff09 来实现相同Pod中的两个容器间通信 注意 xff1a 本文针对K8S的版本号为v1 9 xff0c 其他版本可能会有少许不同 0x00 准备工作 需要有一个K8S集群 xff0