📌  相关文章
📜  检查 kubernetes 服务中的 iptables 规则 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:26:43.425000             🧑  作者: Mango

检查 Kubernetes 服务中的 iptables 规则

在 Kubernetes 集群中,网络通讯是通过 iptables 来管理的。在某些情况下,我们需要检查 Kubernetes 服务中的 iptables 规则,以了解网络通讯的细节。

以下是一个 Shell-Bash 脚本,可以用来检查 Kubernetes 服务中的 iptables 规则。

#!/bin/bash

KUBECTL=$(which kubectl)

# 获取所有节点的IP地址
NODES=$($KUBECTL get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}')

# 在所有节点上运行 iptables-save 命令,并输出到文件中
for NODE in $NODES; do
  echo "Checking iptables rules on ${NODE}..."
  ssh ${NODE} sudo iptables-save > ${NODE}-iptables.txt
done

# 将所有结果合并到一个文件中,并使用 markdown 格式输出
echo "## iptables rules" > iptables-rules.md
for NODE in $NODES; do
  echo "" >> iptables-rules.md
  echo "### ${NODE}" >> iptables-rules.md
  echo "" >> iptables-rules.md
  cat ${NODE}-iptables.txt >> iptables-rules.md
done

# 清理中间文件
rm *-iptables.txt

# 输出 markdown 格式的 iptables 规则
cat iptables-rules.md

该脚本首先使用 kubectl 命令获取所有节点的 IP 地址,并在每个节点上运行 iptables-save 命令,将结果输出到文件中。然后将所有结果合并到一个 markdown 文件中,并清理中间文件。最后,输出 markdown 格式的 iptables 规则。

以下是一个示例输出(部分内容已省略):

## iptables rules

### 10.0.0.1
# Generated by iptables-save v1.6.1 on Fri Jul 16 01:15:47 2021
*nat
:PREROUTING ACCEPT [647:58715]
:INPUT ACCEPT [647:58715]
:OUTPUT ACCEPT [535:32871]
:POSTROUTING ACCEPT [535:32871]
:KUBE-FIREWALL - [0:0]
:KUBE-NODE-PORTS - [0:0]
:KUBE-POSTROUTING - [0:0]
:KUBE-SEP-3WBCVZPLBXRPKE3E - [0:0]
:KUBE-SEP-65NUMW4JPPJOP5OL - [0:0]
:KUBE-SEP-6GNXKHA5PHFERPWV - [0:0]
:KUBE-SEP-C2K6X2U7UEJLITRZ - [0:0]
:KUBE-SEP-CP7HTLSMR6XGFRZ5 - [0:0]
:KUBE-SEP-P4SO4GWZVKG4UB3L - [0:0]
:KUBE-SERVICES - [0:0]
:KUBE-SVC-M56JJE5XOZZ7OUYQ - [0:0]
[...]

我们可以将输出复制到任何 markdown 编辑器中,来查看 iptables 规则。

以上就是一个简单的脚本,可以用来检查 Kubernetes 服务中的 iptables 规则。