【问题标题】:Why are IP adresses in GKE for fluentd / kube-proxy/prometheus equal to node addresses为什么 fluentd/kube-proxy/prometheus 的 GKE 中的 IP 地址等于节点地址
【发布时间】:2020-08-12 12:57:00
【问题描述】:

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

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

和node的一样,其他的pod比如

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 地址。前三个具体是什么?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine prometheus fluentd


    【解决方案1】:

    这是因为 kube proxy、Fluentd、Prometheus 等 Pod 直接通过 hostNetwork: true 在宿主网络中运行。您可以描述这些 pod 并验证 hostNetwork: true 是否存在。

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

    您可以使用hostNetwork: true 部署一个示例 pod,例如 nginx,它将获取节点 IP。如果您删除 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
    

    【讨论】:

    • 我无法使用 describe 找到这些 pod 的 hostNetwork,但原因是有道理的。感谢您的澄清!
    • @Mike 它以 yaml 格式显示。它没有显示在 describe 命令中,运行:kgp KUBE_PROXY_POD_NAME -n kube-system -o yaml | grep hostNetwork 你会得到输出。
    猜你喜欢
    • 2017-09-16
    • 2019-06-24
    • 1970-01-01
    • 2022-01-02
    • 2022-10-12
    • 2020-05-22
    • 2020-03-12
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多