当前位置: 首页 > news >正文

南京网站建设网站制作惠州网络营销

南京网站建设网站制作,惠州网络营销,电商22个货源网址,我的三次做网站的经历借助 Pause 容器调试 Pod 在 K8S 中,Pod 是最核心、最基础的资源对象,也是 Kubernetes 中调度最小单元。在介绍 Pause 容器之前需要先说明下 Pod 与容器的关系来理解为什么需要 Pause 容器来帮助调试 1. Pod 与 容器的关系 Pod 是一个抽象的逻辑概念&…

借助 Pause 容器调试 Pod

在 K8S 中,Pod 是最核心、最基础的资源对象,也是 Kubernetes 中调度最小单元。在介绍 Pause 容器之前需要先说明下 Pod 与容器的关系来理解为什么需要 Pause 容器来帮助调试

1. Pod 与 容器的关系

Pod 是一个抽象的逻辑概念,它是一组(一个或者多个)容器的集合,这些容器之间共享同一份存储、网络等资源。

在这里插入图片描述

使用 kubectl get pods -o wide可以查看 pod 的列表,其中 READY 列代表该 Pod 总共有 1 个容器,并且该容器已经成功启动,可以对外提供服务了

[root@master-1 ~]# kubectl get pods -n ncss-v3 -o wide | grep operation
operation-cf45b5777-vq8x4                      1/1     Running   760        91d     10.244.0.169   master-1   <none>           <none>

此时使用 docker ps 查看指定 Pod 的容器,可以grep出两个容器

[root@master-1 ~]# docker ps -a | grep operation-cf45b5777-vq8x4
# 业务容器
2591c532008a        8ebd9efd951d                                        "/bin/sh -c 'cp -f /…"   30 hours ago        Up 30 hours                                                     k8s_operation_operation-cf45b5777-vq8x4_ncss-v3_57501f2c-60f3-4acf-95b0-19c9ee1ec293_760
# pause 容器
2dce6e228773        registry.nscloud:5000/google_containers/pause:3.1   "/pause"                 12 days ago         Up 12 days                                                      k8s_POD_operation-cf45b5777-vq8x4_ncss-v3_57501f2c-60f3-4acf-95b0-19c9ee1ec293_10

这个 pause 容器,是一个很特殊的容器,它又叫 infra 容器,是每个 Pod 都会自动创建的容器,它不属于用户自定义的容器。

那么这个 pause 容器有什么用呢?

2. Pause 容器

pause 容器镜像

使用 docker insepct [CONTAAINER_ID] 查看一下 pause 容器的详情信息,可以发现 pause 容器使用的镜像为

registry.nscloud:5000/google_containers/pause:3.1

在 Kubelet 进程的参数中,也有 --pod-infra-container-image,同样也指定的是pause镜像

[root@master-1 ~]# ps aux | grep kubelet
root     14471 14.1  0.2 4674828 125708 ?      Ssl  Oct11 2578:19 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.nscloud:5000/google_containers/pause:3.1 ...

该镜像非常小,由于它总是处于 Pause (暂时)状态,所以取名叫 pause,可以找一个pause容器的进程进行查看

[root@master-1 ~]# cat /proc/23199/status | head -n 10
Name:   pause
State:  S (sleeping)
Tgid:   23199
Ngid:   0
Pid:    23199
PPid:   22612
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 64

pause 容器作用

上面我们说,一个 Pod 是由一组容器组成的,这些容器之间共享存储和网络资源,那么网络资源是如何共享的呢?

假设现在有一个 Pod,它包含两个容器(A 和 B),K8S 是通过让他们加入(join)另一个第三方容器的 network namespace 实现的共享,而这个第三方容器就是 pause 容器。

在这里插入图片描述

这么做的目的,其实很简单,想象一下,如果没有这样的第三方容器,会发生怎样的结果?

没有 pause 容器,那么 A 和 B 要共享网络,要不就是 A 加入 B 的 network namespace,或者就是 B 加入 A 的 network namespace, 而无论是谁加入谁,只要 network 的 owner 退出了,该 Pod 里的所有其他容器网络都会立马异常,这显然是不合理的。

反过来,由于 pause 里只有是挂起一个容器,里面没有任何复杂的逻辑,只要不主动杀掉 Pod,pause 都会一直存活,这样一来就能保证在 Pod 运行期间同一 Pod 里的容器网络的稳定。

我们在同一 Pod 里所有容器里看到的网络视图,都是完全一样的,包括网络设备、IP 地址、Mac 地址等等,因为他们其实全是同一份,而这一份都来自于 Pod 第一次创建的这个 Infra container。

由于所有的应用容器都要依赖于 pause 容器,因此在 Pod 启动时,它总是创建的第一个容器,可以说 Pod 的生命周期就是 pause 容器的生命周期。

3. 结论验证

针对docker ps查询的两个容器,可以分别使用nsenter命令查询该容器所在的网络命空间内的地址信息

pause容器

[root@master-1 ~]# docker inspect 2dce6e228773 | grep \"Pid\""Pid": 23199,
[root@master-1 ~]#
[root@master-1 ~]#
[root@master-1 ~]# nsenter -t 23199 -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
3: eth0@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group defaultlink/ether e2:3c:a6:05:0e:84 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 10.244.0.169/24 scope global eth0valid_lft forever preferred_lft forever

业务容器

[root@master-1 ~]# docker inspect 2591c532008a | grep \"Pid\""Pid": 15696,
[root@master-1 ~]#
[root@master-1 ~]#
[root@master-1 ~]# nsenter -t 15696 -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
3: eth0@if26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group defaultlink/ether e2:3c:a6:05:0e:84 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 10.244.0.169/24 scope global eth0valid_lft forever preferred_lft forever

从图中可以看出Pod内的业务容器和pause容器通过ip a命令返回的结果完全一致,由此可以推断出二者处在同一个网络命名空间内

4. pause 容器调试

假如当容器网络出现故障时,了解到pause容器后就可以下两个方面进行分析。

一、在容器编排系统中,如 Kubernetes,pause容器与业务容器共享网络命名空间。通过检查pause容器的网络配置,如 IP 地址分配、网络接口状态以及路由信息等,可以了解整个 Pod 的网络基础情况。当业务容器出现无法访问外部网络或容器之间无法通信等问题时,检查pause容器的网络能够快速确定是否是网络命名空间层面出现问题,比如网络插件故障或者网络策略配置错误。

二、由于pause容器和业务容器共享网络,可以在pause容器所在的节点上,利用抓包工具(如tcpdump)在pause容器的网络命名空间中进行网络流量监测。命令可参考

nsenter - t <pause_container_pid> - n tcpdump - i eth0 

这种监测方式能够观察整个 Pod 内进出的网络流量,对于排查网络通信故障或者分析网络性能问题十分关键。例如,当发现某个业务容器发送的请求没有得到响应时,可以在pause容器的网络命名空间中抓包,查看请求是否真正发出、是否有响应返回以及响应的具体内容等。

http://www.hkea.cn/news/2613/

相关文章:

  • 公司网站开发模板宁波seo推广费用
  • 做地方短租网站网络营销推广的方式有哪些
  • 重庆低价网站建设上海优化外包公司排名
  • 网站服务内容最近新闻大事件
  • 怎么做公司网站google官方下载安装
  • 建个网站需要投资多少百度搜索引擎介绍
  • 速购单微信小程序怎么做白山seo
  • 昵图网免费素材图库官网宁波外贸网站推广优化
  • 网络营销的发展现状如何windows优化大师破解版
  • 怎样学做网站成都seo达人
  • 沧州响应式网站开发搜索引擎优化的基本手段
  • 网站建设的三要素营销推广
  • 怎么上传自己做的网站宿州百度seo排名软件
  • 怎么做网站优化 s网络优化app
  • 平凉哪家做企业网站链接买卖平台
  • 为什么要用国外服务器做网站网络营销推广优化
  • 阜南做网站公司郑州网站推广公司排名
  • 网站后台代码如何做网站怎么优化排名
  • 泉州建站模板系统小红书关键词搜索量查询
  • 高端医院网站建设网络媒体
  • wordpress 二级域名附件如何做网站优化
  • 网站域名在哪里申请品牌营销策划十大要点
  • 网站制作方案包括哪些内容正规的推文平台
  • 做域名不做网站可以吗深圳知名seo公司
  • 招聘网站建设人员条件品牌营销策划包括哪些内容
  • 网站域名证书怎么获取友情链接名词解释
  • 太原网站建设价格什么优化
  • 网站制作公司昆明swot分析
  • 个人养老金制度将推网站推广优化网址
  • 寺庙建设网站的意义2024年度关键词