我正在尝试使用kubeadm实现k8s的高可用性。我正在遵循文档k8s HA using kubeadm
在官方文档中,建议kube-apiserver有故障转移机制/负载均衡。我尝试过keepalived,但是,在设置aws/gcp实例的情况下,它陷入了分裂的情况,因为不支持多播,所以我不允许使用它。有什么办法解决这个问题吗?
发布于 2018-07-11 01:48:18
Kubernetes是一个容器编排系统,用于自动部署、扩展和管理容器化应用程序。Kubernetes在高可用性和负载均衡环境中表现最佳。
正如@jaxxstorm提到的,云提供商为您提供了使用原生负载均衡器的可能性,我还建议您使用高可用性尝试的一个很好的位置。您可能会对GCP文档感兴趣。
Kubeadm在Kubernetes自制环境上需要一些额外的工作,从我的角度来看,设置Kubernetes The Hardway然后开始使用Kubeadm是很好的。
好的,我假设用于安装的服务器已经准备好了。要创建一个不复杂的多主体集群安装,您需要3个主节点(10.0.0.50-52)和负载均衡器(10.0.0.200)。
生成token并将输出保存到文件:
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的启发。
发布于 2018-07-10 02:16:30
不,您需要一个负载均衡器才能将HA与kubeadm配合使用。
如果您正在使用AWS/GCP,为什么不考虑在这些环境中使用本地负载均衡器,比如ELB或Google Cloud Load Balancer?
发布于 2019-02-06 20:05:14
您绝对需要nginx/haproxy + keepalived来实现故障切换和高可用性
https://stackoverflow.com/questions/51246036
复制相似问题