【问题标题】:Kubernetes nodes behind NAT service exposureNAT服务暴露背后的Kubernetes节点
【发布时间】:2018-05-21 21:34:38
【问题描述】:

我正在尝试让 Kubernetes 集群与一些在 NAT 后面工作但没有公共 IP 地址的节点一起工作。 (为什么我需要它是另一回事)

有3个节点:

  1. Kubernetes 集群主控(具有公共 IP 地址)
  2. Node1(带有公共 IP 地址)
  3. Node2(在我的笔记本电脑上作为虚拟机在 NAT 后面工作,没有公共 IP 地址)

所有 3 个节点都运行 Ubuntu 18.04 和 Kubernetes v1.10.2(3)、Docker 17.12

Kubernetes 集群是这样创建的:

kubeadm init --pod-network-cidr=10.244.0.0/16

使用法兰绒网络:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Node1 和 Node2 加入集群:

NAME STATUS ROLES AGE VERSION master-node Ready master 3h v1.10.2 node1 Ready <none> 2h v1.10.3 node2 Ready <none> 2h v1.10.2

为 Node1 创建和调度 Nginx 部署 + 服务(type=NodePort)(使用公共 IP):

https://pastebin.com/6CrugunB

kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h my-nginx NodePort 10.110.202.32 <none> 80:31742/TCP 16m

可以通过http://MASTER_NODE_PUBLIC_IP:31742http://NODE1_PUBLIC_IP:31742 按预期访问此部署。

另一个为 Node2 创建和调度的 Nginx 部署 + 服务 (type=NodePort)(没有公共 IP):

https://pastebin.com/AFK42UNW

kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h my-nginx NodePort 10.110.202.32 <none> 80:31742/TCP 22m nginx-behind-nat NodePort 10.105.242.178 <none> 80:32350/TCP 22m

但是,无法通过http://MASTER_NODE_PUBLIC_IP:32350http://NODE1_PUBLIC_IP:32350 访问此服务。

只能通过笔记本电脑上的http://MY_VM_IP:32350 访问。

此外:我也无法通过 kubectl exec 进入 nginx-behind-nat 吊舱。

有什么方法可以实现吗?

【问题讨论】:

    标签: docker kubernetes flannel ubuntu-18.04


    【解决方案1】:

    正如 Kubernetes 中提到的documentation

    Kubernetes 对任何 网络实施(除非任何有意的网络 分段策略):

    • 所有容器都可以在没有 NAT 的情况下与所有其他容器通信
    • 所有节点都可以在没有 NAT 的情况下与所有容器通信(反之亦然)
    • 容器认为自己的 IP 与其他人认为的 IP 相同

    这在实践中意味着你不能只拿两个 运行 Docker 并期望 Kubernetes 工作的计算机。你必须 确保满足基本要求。

    默认情况下,从 api-server 到节点、端口或服务的连接只是纯 HTTP,没有身份验证和加密。
    它们可以通过 HTTPS 工作,但默认情况下,apiserver 不会验证 HTTPS 端点证书,因此它不会提供任何完整性保证,并且可能会受到中间人攻击。

    有关保护集群内部连接的详细信息,请查看document

    【讨论】:

    猜你喜欢
    • 2016-03-25
    • 2019-09-26
    • 2021-08-13
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2018-10-31
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多