【问题标题】:accessing Kubernetes from remote hosts从远程主机访问 Kubernetes
【发布时间】:2020-10-31 06:57:22
【问题描述】:

我很确定我有一些配置错误或遗漏了一些东西。

我的家庭网络是 10.11.0.0/16

我设置了一个 Kubernetes 实例

sudo kubeadm init --pod-network-cidr=10.166.0.0/16

然后我用 calico 安装了

CALICO_IPV4POOL_CIDR=10.166.32.0/20

然后我用

设置MetalLB
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.100.1-192.168.100.254

我在 https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/ 使用 NodePort 的教程,它在 kubernetes 机器上运行良好:

kubectl describe services example-service
Name:                     example-service
Namespace:                default
Labels:                   app.kubernetes.io/name=load-balancer-example
Annotations:              <none>
Selector:                 app.kubernetes.io/name=load-balancer-example
Type:                     NodePort
IP:                       10.110.245.152
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30140/TCP
Endpoints:                10.166.32.243:8080,10.166.32.244:8080,10.166.32.245:8080 + 2 more...
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

我可以通过

访问 kubernetes 机器上的 pod
curl http://10.110.245.152:8080
Hello Kubernetes!

如何让我家网络上的其他机器能够访问?当我在其他机器上尝试这个时它只是挂起......

curl http://10.110.245.152:8080

【问题讨论】:

    标签: kubernetes debian project-calico metallb


    【解决方案1】:

    上面的答案确实解决了这个问题,但是应用程序仍然可以在非常见的 kubernetes 分配的端口上运行。我想这个想法是让 kubernetes 集群在单个 IP 和标准端口上可见。

    MetalLb 设置可以提供裸机负载均衡器,或者 'LoadBalancer' 服务类型,kubernetes 默认不提供。 上面的示例使用“NodePort”类型,并且在您的服务配置中,您应该能够将“NodePort”替换为“LoadBalancer”类型。如果配置正确,kubectl get service example-service 应该显示来自内部 kube 网络的地址和来自您配置的 MetalLb 范围的外部 IP 地址。如下例所示:

    kube-server:~$ kubectl get service keycloak-db -n keycloak-db 
    NAME          TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
    keycloak-db   LoadBalancer   10.109.91.158   192.168.1.243   8080:32434/TCP   33d
    

    我在您的示例中注意到的另一件事是 MetalLb 配置中分配的地址范围 (192.168.100.0/24) 与您的家庭网络 (10.11.0.0/16) 不匹配。如果您没有适当的路由,最好在家庭网络中保留一些 IP 并在 MetalLb 中使用它们。

    【讨论】:

    • 谢谢@mnikolic,我不熟悉metallb。阅读您的解释后,我想在我的裸机设置上尝试一下:)。
    • 感谢@mkikolic。那效果很好。我在文档中找不到更改池的说明,但在这里找到了一些说明:github.com/metallb/metallb/issues/308
    【解决方案2】:

    如果您使用的是 NodePort 服务,不应该是 curl &lt;kubernetes machine IP &gt;:30140 吗?

    【讨论】:

    • 您的用户名“困惑的天才”不准确。我推荐“有用的天才”,因为您的帖子有效。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2019-07-13
    • 2018-03-23
    • 2019-03-07
    • 1970-01-01
    • 2012-07-07
    • 2018-01-29
    相关资源
    最近更新 更多