我正在探索 gke。我通过 GCP GUI 创建了一个 gke 集群,当我跳转到一个节点并运行此命令时,我什么也看不到:
ip netns list
我以为 K8s 使用网络命名空间进行网络连接?这些网络命名空间是如何显示的?
答案1
Kubernetes 网络建立在 Docker 和 Netfilter 之上,为 Pod 启用网络命名空间的东西称为 Pause 容器。
暂停容器运行一个非常简单的进程,它不执行任何功能但本质上永远处于休眠状态,并负责提供其他容器可以共享的网络命名空间。
请阅读这里Ian Lewis 撰写的文章解释了暂停容器的作用
答案2
这个问题有点老了,但是从那时起,已经创建了关于Network Fundamentals
通过实践练习学习 Google Kubernetes Engine 网络基础知识。
主要有 4 个练习:
- 练习 1:
Introduction to network namespaces
介绍 Linux 虚拟网络设备。在本练习中,您将配置设备、连接设备并配置促进连接的 iptables 规则。本练习还介绍了查询连接状态的技术。
- 练习2:
Introduction to GKE networking
介绍了如何在 GKE 中创建一个简单的 HTTP 服务。使用您在上一个练习中学到的技术,您可以重新运行捕获。
- 练习3:
GCP load balancing and GKE
介绍由 GKE 实现的入口控制器,它基于上一个练习中的负载均衡器服务。
- 练习4:
Visiting namespaces in GKE
演示如何直接访问 pod 的命名空间。
在 中Exercise 1
您有关于 的信息Network namespaces
。如那里所述,默认情况下不存在任何信息。
现在,让我们看一下配置的网络命名空间。不应该有任何:
$ sudo ip netns list
现在,让我们添加一个名为 demo-ns 的命名空间,并检查它是否在可用命名空间列表中:
$ sudo ip netns add demo-ns
$ sudo ip netns list
网络命名空间是一个隔离的网络环境,具有自己的网络堆栈。
欲了解更多详情,请查看提到教程。