使用config.yaml创建多主kubernetes HA集群

时间:2018-05-10 11:10:15

标签: kubernetes

我现在正在探索如何使用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吗? ,因为我没有在单独的VM中形成etcd。我选择在相同的主节点上创建。那么我可以直接在这里给出3个主VM的IP地址吗?

1 个答案:

答案 0 :(得分:3)

我想扩展Jonah Benton的答案,简要介绍它是如何运作的。

Kubernetes集群由三种主要类型的组件组成。 已安装的组件为节点创建角色。该节点是集群的虚拟或物理机器 服务正在运行。组件可以逻辑地位于单独的节点上或安装在一个节点上,如在minikube中。

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

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

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

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

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

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

我在document中找到了很好描述的Kubernetes组件。它可能有助于理解Kubernetes Cluster的依赖性。