为什么 GKE 中的 IP 地址 for fluentd / kube-proxy/prometheus 等于节点地址

Why are IP adresses in GKE for fluentd / kube-proxy/prometheus equal to node addresses

我是 运行 GKE 上的 Kubernetes 集群,我注意到在 kube-system 中 pods 的 IP 地址与

fluentd-gcp-...
kube-proxy-gke-gke-dev-cluster-default-pool-...
prometheus-to-...

与节点相同,而其他pods如

event-exporter-v0.3.0-...
stackdriver-metadata-agent-cluster-level-...
fluentd-gcp-scaler-...
heapster-gke-...
kube-dns-...
l7-default-backend-...
metrics-server-v0.3.3-...

例如

kube-system   fluentd-gcp-scaler-bfd6cf8dd-58m8j                          1/1     Running   0          23h   10.36.1.6   dev-cluster-default-pool-c8a74531-96j4   <none>           <none>
kube-system   fluentd-gcp-v3.1.1-24n5s                                    2/2     Running   0          24h   10.10.1.5   dev-cluster-default-pool-c8a74531-96j4   <none>           <none>

其中 pod IP 范围为:10.36.0.0/14

节点位于 10.10.1.0/24

在 pod 地址范围内有 IP 地址。前三个具体是什么?

这是因为 pods 例如 kube 代理、Fluentd、Prometheus 直接通过 hostNetwork: true 在主机网络中 运行。您可以描述那些 pods 并验证是否存在 hostNetwork: true

现在说到为什么这些 pods 首先需要 运行 在主机网络中,kube 代理需要访问主机的 IP 表,prometheus 收集指标,Fluentd 从主机系统。

您可以使用 hostNetwork: true 部署一个示例 pod,例如 nginx,它将获得节点 IP.If,您删除 hostNetwork: true 它将从 pod CIDR 范围获得 IP。

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
  restartPolicy: Always
  hostNetwork: true