gpt4 book ai didi

kubernetes - 在 NAT 后面设置 kubernetes 工作节点

转载 作者:行者123 更新时间:2023-12-02 12:18:43 25 4
gpt4 key购买 nike

我已经使用 kubeadm 设置了一个 kubernetes 集群。

环境

  • 安装在具有公共(public) IP 的 PC 中的主节点。
  • NAT地址后面的工作节点(接口(interface)有本地内部IP,但需要使用公共(public)IP访问)

  • 状态

    工作节点能够加入集群并运行
    kubectl get nodes

    节点的状态为就绪。

    Kubernetes 可以在该节点上部署和运行 Pod。

    问题

    我遇到的问题是我无法访问部署在该节点上的 pod。例如,如果我运行
    kubectl logs <pod-name>

    其中 pod-name 是部署在工作节点上的 pod 的名称,我有这个错误:
    Error from server: Get https://192.168.0.17:10250/containerLogs/default/stage-bbcf4f47f-gtvrd/stage: dial tcp 192.168.0.17:10250: i/o timeout

    因为它试图使用本地 IP 192.168.0.17,外部无法访问。

    我已经看到该节点有这个注释:
    flannel.alpha.coreos.com/public-ip: 192.168.0.17

    因此,我尝试通过这种方式修改注释,设置外部 IP:
    flannel.alpha.coreos.com/public-ip: <my_externeal_ip>

    我看到该节点已正确注释,但它仍在使用 192.168.0.17。

    我还需要在工作节点或集群配置中设置什么吗?

    最佳答案

    侧边栏中有大量相关问题,我有 90% 的把握这是一个常见问题解答,但不会费心对重复项进行分类

    Is there something else that I have to setup in the worker node or in the cluster configuration?



    不,这种情况不是您的工作节点配置错误,也不是您的集群配置。这只是 Kubernetes 处理以 Pod 为中心的流量的方式的副作用。这确实意味着如果您选择继续该设置,您将无法使用 kubectl exec也不是 kubectl logs (我也认为 port-forward )因为这些命令不通过 API 服务器发送流量,而是直接联系 kubelet托管您正在与之交互的 Pod 的节点上的端口。这主要是为了减轻通过 API 服务器传输的流量,但如果您有足够多的 exec/log/port-foward/etc 命令同时发生,也可能是一个扩展问题,因为 TCP 端口不是无限的。

    我认为理论上可以让您的工作站加入覆盖网络,因为根据定义它与外部网络无关,但我没有大量经验尝试让覆盖与 NAT 一起玩得很好,这就是“理论上”的部分。

    我亲自让 Wireguard 跨 NAT 工作,这意味着您可以 VPN 进入您的节点网络,但这是一些齿轮转动,并且可能比它的值(value)更麻烦。

    关于kubernetes - 在 NAT 后面设置 kubernetes 工作节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263635/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com