【问题标题】:Is Kubernetes high availability using kubeadm possible without failover/load balancer?在没有故障转移/负载均衡器的情况下,Kubernetes 是否可以使用 kubeadm 实现高可用性?
【发布时间】:2018-12-17 03:59:51
【问题描述】:

我正在尝试使用 kubeadm 实现 k8s 的高可用性。我正在关注文档k8s HA using kubeadm

官方文档中建议kube-apiserver有failover机制/负载均衡器。我尝试了 keepalived,但是如果在 aws/gcp 实例上进行设置,它会陷入裂脑情况,因为不支持多播,因此我不允许使用它。有没有办法解决这个问题?

【问题讨论】:

    标签: kubernetes kubectl kubeadm


    【解决方案1】:

    Kubernetes 是一个容器编排系统,用于自动部署、扩展和管理容器化应用程序。 Kubernetes 在高可用和负载平衡环境中发挥最佳。

    正如@jaxxstorm 提到的,云提供商为您提供了使用本机负载均衡器的可能性,我也建议这样做 高可用性尝试的良好杆位。您可能对GCP 文档感兴趣。

    Kubernetes 自制环境上的 Kubeadm 需要一些额外的工作,在我看来,这很好 设置Kubernetes The Hardway 然后开始使用Kubeadm

    好的,我假设安装服务器已经准备好。要创建一个不复杂的多主集群安装,您需要 3 个主节点 (10.0.0.50-52) 和负载均衡器 (10.0.0.200)

    生成令牌并将输出保存到文件:

    kubeadm token generate

    创建一个 kubeadm 配置文件:

    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    etcd:
      endpoints:
      - "http://10.0.0.50:2379"
      - "http://10.0.0.51:2379"
      - "http://10.0.0.52:2379"
    apiServerExtraArgs:
      apiserver-count: "3"
    apiServerCertSANs:
    - "10.0.0.50"
    - "10.0.0.51"
    - "10.0.0.52"
    - "10.0.0.200"
    - "127.0.0.1"
    token: "YOUR KUBEADM TOKEN"
    tokenTTL: "0"
    

    将配置文件复制到所有节点。

    在第一个主实例上进行初始化:

    kubeadm init --config /path/to/config.yaml
    

    新的主实例将拥有我们的主集群所需的所有证书和密钥。

    将目录结构/etc/kubernetes/pki复制到其他master到同一位置。

    在其他主服务器上:

    kubeadm init --config /path/to/config.yaml
    

    现在让我们开始设置负载均衡器:

    /etc/kubernetes/admin.conf复制到$HOME/.kube/config

    接下来,编辑$HOME/.config并替换

    服务器:10.0.0.50

    服务器:10.0.0.200

    检查节点是否工作正常:

    kubectl get nodes

    在所有工作人员上执行:

    kubeadm join --token YOUR_CLUSTER_TOKEN 10.0.0.200:6443 --discovery-token-ca-cert-hash sha256:89870e4215b92262c5093b3f4f6d57be8580c3442ed6c8b00b0b30822c41e5b3

    就是这样!如果一切都设置得很干净,那么您现在应该拥有一个高度可用的集群。

    我发现 "HA Kubernetes cluster via Kubeadm" 教程很有用,感谢 @Nate Baker 的启发。

    【讨论】:

      【解决方案2】:

      不,您需要一个负载均衡器才能通过 kubeadm 实现 HA。

      如果您使用的是 AWS/GCP,为什么不考虑在这些环境中使用本机负载均衡器,例如 ELB 或 Google Cloud Load Balancer?

      【讨论】:

        【解决方案3】:

        你绝对需要 nginx/haproxy + keepalived 来实现故障转移和高可用性

        【讨论】:

          猜你喜欢
          • 2020-06-05
          • 1970-01-01
          • 1970-01-01
          • 2013-11-15
          • 2017-02-19
          • 2018-02-28
          • 2016-09-20
          • 1970-01-01
          • 2020-03-15
          相关资源
          最近更新 更多