【问题标题】:How to setup Kubernetes cluster on several windows hosts?如何在多个 Windows 主机上设置 Kubernetes 集群?
【发布时间】:2022-03-04 19:39:20
【问题描述】:

我有几个可用的 Windows 服务器,并想在它们上设置一个 Kubernetes 集群。 是否有一些工具或一步一步的说明如何做到这一点?

到目前为止,我尝试的是安装 DockerDesktop 并启用其 Kubernetes 功能。 这给了我一个单节点集群。但是,似乎不可能向该 Docker-Kubernetes 集群(来自不同的 Windows 主机)添加额外的节点: Docker desktop kubernetes add node

我是否应该先创建一个 Docker Swarm,然后才能在该 Swarm 上运行 Kubernetes?还是有其他策略?

我想我需要在主机的 Windows 防火墙设置中打开一些端口?并将这些端口映射到将安装 Kubernetes 的一些 Docker 容器?什么端口?

是否有一些程序可以安装在每个 Windows 主机上,这将帮助我建立一个具有多个主机的网络并连接在 Docker 容器中运行的 Kubernetes 节点?像“适用于 Windows 的 kubeadm”?

如果您能给我一些正确方向的提示,那就太好了。

编辑
关于在 Docker 中安装 kubeadm 容器的相关信息:
https://github.com/kubernetes/kubernetes/issues/35712
https://github.com/kubernetes/kubeadm/issues/17

关于Minikube的相关问题:
Adding nodes to a Windows Minikube Kubernetes Installation - How?

关于kind(docker中的kubernetes)多节点集群的信息:
https://dotnetninja.net/2021/03/running-a-multi-node-kubernetes-cluster-on-windows-with-kind/ (在 单个 windows 主机上创建多节点 kubernetes 集群)
另见:

【问题讨论】:

    标签: windows docker kubernetes


    【解决方案1】:

    您可以随时参考官方 Kubernetes 文档,这是获取信息的正确来源。

    这是处理这个问题的正确方法。

    基于Adding Windows nodes,你需要具备两个先决条件:

    • 获取 Windows Server 2019 许可证(或更高版本)以配置托管 Windows 容器的 Windows 节点。如果你是 使用 VXLAN/Overlay 网络,您还必须拥有 KB4489899 已安装。

    • 一个基于 Linux 的 Kubernetes kubeadm 集群,您可以在其中访问控制平面 (see Creating a single control-plane cluster with kubeadm)。

    第二点尤其重要,因为所有控制平面组件都应该在 Linux 系统上运行(我想您可以在其中一台服务器上运行 Linux VM 以在其上托管控制平面组件,但网络会更多复杂)。

    一旦你有一个正确运行的控制平面,就有一个kubeadm for windows 可以正确地将 Windows 节点加入到 kubernetes 集群中。以及how to upgrade windows nodes 上的文档。

    对于防火墙以及应打开哪些端口,请检查ports and protocols

    对于工作节点(将是 windows 节点):

    Protocol    Direction   Port Range    Purpose            Used By
    TCP         Inbound     10250         Kubelet API        Self, Control plane
    TCP         Inbound     30000-32767   NodePort Services  All
    

    另一种选择是在云管理的 kuberneres 中运行 Windows 节点,例如 GKE with windows node pool(是的,我知道这不是您的用例,但供进一步参考)。

    【讨论】:

    • 谢谢。我已经看过“添加 Windows 节点”页面,但很难理解。 “基于 Linux 的 Kubernetes kubeadm 集群”必须 a)已经分布在我的所有 Windows 主机上(=>如何创建它?!)或 b)将它创建为单个节点上的“单节点集群”就足够了windows主机?我该如何做“更复杂的网络”?
    • Docker-Kubernetes 选项可以用作“kubeadm-cluster”吗?
    • 好的,kubernetes 中有两种类型的节点 - 控制平面(这是一个基于 linux 的机器,所有 kubernetes 组件都运行)和工作节点,其中只有 kubelet 与控制平面通信。所以control-plane不应该在Windows机器上传播。用于测试目的的单个 control-plane 就足够了,对于生产,建议至少有 3 个控制平面(etcd 用作数据存储,它需要有 3-5 个节点 - 你可以阅读etcd in k8s)。
    • @Stefan 在这里您可以阅读有关high availability (HA) cluster 的信息。带有 kubernetes 的 Docker 桌面初始化一个用于测试/本地开发的单节点集群。它不应该被添加到多节点集群中。 kubeadm 是另一回事,它是一种管理本地集群的工具。
    • 最后关于“复杂的网络” - 我不是网络工程师,无法给出确切的解决方案,其中一个 Windows 主机上的 VM 内的 kuberneres 控制平面将如何与其他 Windows 节点通信。根据我的理解,我依赖于现有的网络+路由。单独 VM 上的控制平面公开端口(在我的答案中的链接上显示),其他节点可以直接与其通信。希望它能澄清你的疑惑
    猜你喜欢
    • 2013-07-02
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2020-09-08
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多