刚开始接触kubernetes时,对kubelet的--pod-infra-container-image参数非常不能理解,不理解为什么我的业务应用需要依赖一个第三方的容器;

上文入门级kubernetes安装流程中简单提了一句,启动pod后的两个容器会有相同的网络地址,这样,多个容器可以绑定为一个pod进行管理;

本文展开来说一下这里的网络原理;其实就是一层窗户纸,捅破了就明白了;

在node上,看一下上文启动的两个container:

# docker ps
CONTAINER ID        IMAGE                                           COMMAND                  CREATED             STATUS              PORTS               NAMES
3e5e69a69950        <registry>/nginx/nginx                       "nginx -g 'daemon of…"   23 hours ago        Up 23 hours                             k8s_nginx_nginx-55cc995fdb-27t7z_default_1ca63ddd-7ab5-11e8-be61-3440b59f0098_0
ec311fee295d        <registry>/rhel7/pod-infrastructure:latest   "/pod"                   23 hours ago        Up 23 hours                             k8s_POD_nginx-55cc995fdb-27t7z_default_1ca63ddd-7ab5-11e8-be61-3440b59f0098_0

然后看一下它们的PID:

# docker inspect ec311fee295d|grep '\<Pid\>'"Pid": 26252,
# docker inspect 3e5e69a69950|grep '\<Pid\>'"Pid": 26349,

再看一下这两个进程的network namespace:

# ls -l /proc/26252/ns/net
lrwxrwxrwx 1 opss root 0 6月  28 17:24 /proc/26252/ns/net -> net:[4026532927]
# ls -l /proc/26349/ns/net
lrwxrwxrwx 1 root root 0 6月  29 16:06 /proc/26349/ns/net -> net:[4026532927]

这两个进程共用一个network namespace;但这个network namespace没有创建在/var/run/netns下,所以ip命令查看不了,做个软链好了:

# mkdir -p /var/run/netns
# ln -s /proc/26349/ns/net /var/run/netns/pod1
# ip netns
pod1

这样就能查看这个network namespace下的网络信息了:

# ip netns exec pod1 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/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
315: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP link/ether 02:42:ac:0a:3f:02 brd ff:ff:ff:ff:ff:ffinet 172.10.63.2/24 brd 172.10.63.255 scope global eth0valid_lft forever preferred_lft forever

这就是在两个容器里看到的相同的网络信息;

现在也启动一个容器,用container网络模式加入到已有的network namespace;

# docker run -d --rm --net="container:ec311fee295d" xxxxxx

这样启动一个xxxxxx容器,加入到已有的网络,然后按同样的办法查看/proc/<pid>/ns/net,会发现这个容器使用的ns与前两个相同;进入容器查看网络信息,ip地址也与前两个相同;

参考:深入解析Docker背后的namespace技术

转载于:https://www.cnblogs.com/ZisZ/p/9244171.html

kubernetes pod infra container网络原理相关推荐

  1. Kubernetes Pod概念与网络通讯模式

    Kubernetes 要掌握的知识点 Pod概念 Pod控制类型 ReplicationController&ReplicaSet&Deplovment ★Deployment HPA ...

  2. 如何在 Kubernetes Pod 内进行网络抓包

    作者 | Addo Zhang 来源 | 云原生指北 使用 Kubernetes 时,经常会遇到一些棘手的网络问题需要对 Pod 内的流量进行抓包分析.然而所使用的镜像一般不会带有 tcpdump 命 ...

  3. k8s网络架构图_唯品会基于Kubernetes(k8s)网络方案演进

    VIP PaaS在接近两年时间里,基于kubernetes主要经历四次网络方案的变迁: 1. kubernetes + flannel 2. 基于Docker libnetwork的网络定制 3. k ...

  4. 唯品会基于Kubernetes(k8s)网络方案演进

    VIP PaaS在接近两年时间里,基于kubernetes主要经历四次网络方案的变迁: 1. kubernetes + flannel 2. 基于Docker libnetwork的网络定制 3. k ...

  5. Kubernetes Pod 网络精髓:pause 容器详解

    福利 文末留言送 5 本由浙大SEL实验室硕士杜军大佬撰写的<Kubernetes 网络权威指南:基础.原理与实践>,希望大家点击文末的留言小程序积极留言,每个人都有机会. 前言 当检查你 ...

  6. Kubernetes 网络原理

    Docker网络基础 由于Kubernetes是基于Docker容器作为应用发布的载体,而Docker本身的网络特性也决定了Kubernetes在构建一个容器互通网络必须要解决Docker自身网络的缺 ...

  7. Kubernetes(k8s)底层网络原理刨析

    目录 1 典型的数据传输流程图 2 3种ip说明 3 Docker0网桥和flannel网络方案 4 Service和DNS 4.1 service 4.2 DNS 5 外部访问集群 5.1 外部访问 ...

  8. Kubernetes容器网络(一):Flannel网络原理

    前言 本文主要分享Flannel如何解决跨主机容器之间通信问题的,如果你对主机内容器之间通信流程还不了解,建议先看下这篇文章:Docker网络原理 1.前置网络知识 1).tun/tap设备 tun/ ...

  9. Kubernetes容器网络(二):Calico网络原理

    1.前置网络知识 1).BGP 自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在 ...

最新文章

  1. ElasticSearch之集群原理
  2. WPF/Silverlight Layout 系统概述——Measure(转)
  3. 暴走英雄坛html5游戏在线玩,暴走英雄坛h5
  4. 使用xdebug+webgrind分析php性能
  5. 最容易被盗的密码,你中了么?
  6. android 启动service报错,Android小经验
  7. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。
  8. iOS7应用开发6:UINavigation, UITabbar控制器的多态性
  9. 在linux下磁盘挂在操作,linux下挂载磁盘操作
  10. python正则表达式re
  11. delphi.about.com 上的教材链接
  12. java mp4转码 h264_mp4格式的视频,编码方式mpeg4,转化为h264
  13. 双三次插值 python实现_双三次插值Python
  14. 黑莓刷机及情景设置来电和短信等没有声音的解决办法
  15. 点云采样FPS原理及实现
  16. After Effects CS4 \CS5\CS6\CC2015\CC2017\CC2018\CC2019安装包及教程
  17. docker之user_remap
  18. python简单实现微信抢红包功能
  19. VR相关学习资源,VR学习资源,VR开发资源
  20. iframe标签有什么用

热门文章

  1. linux 破壳漏洞,Bash破壳漏洞
  2. 精修图片不求人,百度经验
  3. 胎儿超声标准切面 图与详解
  4. 贝壳找房面试之c++基础问答
  5. php5.2 nts 下载,php_xdebug-2.1.0-5.2-vc6-nts.dll
  6. 华为RS3 封层模型及以太网帧结构
  7. 重庆python好找工作吗_在重庆大学城呆四年是怎样的体验?
  8. 领域驱动设计 -- 领域驱动建模与面向对象建模的差异(一)
  9. keras、TensorFlow输出中间层结果的4种方法
  10. telegram协议电报群组采集,群用户提取,私发消息,群拉人,关键词监控回复等引流自动化