我正在尝试使用kubeadm实现k8s的高可用性。我正在关注文档k8s HA using kubeadm
在官方文档中,建议为kube-apiserver安装故障转移机制/负载平衡器。我尝试了keepalived,但是如果在aws / gcp instaces上进行安装,由于不支持多播,因此它会陷入裂脑状态,因此我不允许使用它。有什么办法吗?
答案 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来实现故障转移和高可用性