没有故障转移/负载平衡器的情况下,使用kubeadm的Kubernetes是否可以实现高可用性?

时间:2018-07-09 12:50:52

标签: kubernetes kubectl kubeadm

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

在官方文档中,建议为kube-apiserver安装故障转移机制/负载平衡器。我尝试了keepalived,但是如果在aws / gcp instaces上进行安装,由于不支持多播,因此它会陷入裂脑状态,因此我不允许使用它。有什么办法吗?

3 个答案:

答案 0 :(得分:0)

否,您需要一个负载均衡器才能使kubeadm具有HA。

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

答案 1 :(得分:0)

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

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

在Kubernetes自制环境上的Kuberadm需要一些额外的工作,从我的角度来看,这是很好的 来设置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复制到其他母版到相同位置。

在其他主服务器上:

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 :(得分:0)

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