首页 > 解决方案 > 使用 config.yaml 创建多主 Kubernetes HA 集群

问题描述

我现在正在探索如何创建具有 3 个主节点和 3 个工作节点的 HA Kubernetes 集群。我正在关注以下文档,

https://kubernetes.io/docs/setup/independent/high-availability/

在这里,我遵循文档中的第二个选项。即,在主节点上托管 etcd 集群。因此,根据文档,我从步骤开始 - “在 master0 上运行 kubeadm init”。意味着我在主节点上托管 etcd 集群。当我引用我需要创建的配置文件时,我对配置文件中的某些术语感到困惑。为了清楚起见,让我在这里添加配置文件,

   cat >config.yaml <<EOF
   apiVersion: kubeadm.k8s.io/v1alpha1
   kind: MasterConfiguration
   api:
      advertiseAddress: <private-ip>
   etcd:
      endpoints:
      - https://<etcd0-ip-address>:2379
      - https://<etcd1-ip-address>:2379
      - https://<etcd2-ip-address>:2379
      caFile: /etc/kubernetes/pki/etcd/ca.pem
      certFile: /etc/kubernetes/pki/etcd/client.pem
      keyFile: /etc/kubernetes/pki/etcd/client-key.pem
   networking:
     podSubnet: <podCIDR>
   apiServerCertSANs:
   - <load-balancer-ip>
   apiServerExtraArgs:
     apiserver-count: "3"
   EOF 

怀疑

  1. 在这里,并且,我可以用我为主节点选择的机器的 IP 地址替换 etcd0-ip-address、etcd1-ip-address 和 etcd2-ip-address 吗?, 因为我没有在单独的虚拟机中形成 etcd。我选择在同一个主节点上创建。那么这里可以直接给3主VM的IP地址吗?

标签: kubernetes

解决方案


我想扩展 Jonah Benton 的回答,它简要描述了它的工作原理。

Kubernetes 集群由三种主要类型的组件组成。安装的组件为节点创建角色。节点是运行集群服务的虚拟机或物理机。这些组件可以在逻辑上位于不同的节点上,也可以安装在一个节点上,就像在 minikube 中一样。

Kubernetes master 节点需要运行 API server、Controller Manager、Scheduler 等守护进程。在使用这些软件组件时,主节点正在管理运行容器引擎、iptables、kubelet 和服务代理的工作节点。

Etcd 是一个组件,用于保存运行集群的 HA、负载平衡和节点的健康检查的状态。建议在集群的 1 个、3 个或最多 5 个节点上运行 etcd,以实现集群条件的可靠性和复制。安装了 etcd 作为附加组件的工作节点是一种流行的安装方法。

我们只能在运行 API 服务器的节点上调用真正的主节点。

让我们看看您提供的配置文件:

    etcd:   
      endpoints: 
      - https://<etcd0-ip-address>:2379 
      - https://<etcd1-ip-address>:2379 
      - https://<etcd2-ip-address>:2379

关于你的问题,答案是肯定的。这是为定义 etcd 守护进程的端点而保留的位置。如果您计划拥有一个主节点运行 etcd 的高可用性集群,您可以将这些条目替换为主节点 IP 地址。

我在本文档中找到了描述良好的 Kubernetes 组件。它可能有助于理解 Kubernetes Cluster 的依赖关系。


推荐阅读