更改kubeadm init ip地址

时间:2018-02-22 14:35:27

标签: kubernetes google-cloud-platform google-compute-engine kubectl kubeadm

运行kubeadm init时如何更改ip?我在谷歌计算引擎上创建主节点,并希望从aws和azure连接节点,但kubeadm使用内部IP地址,只能从谷歌云平台网络看到。我尝试使用--apiserver-advertise-address = external ip,但在这种情况下kubeadm陷入[init]如果必须拉动控制平面图像,这可能需要一分钟或更长时间。防火墙是开放的。

1 个答案:

答案 0 :(得分:1)

如果我正确理解你要做的是使用运行kubeadm作为主服务器的GCP实例和位于另外两个云上的两个节点。

您需要做的就是让一个工作负载均衡器与外部IP指向您的实例并来回转发TCP数据包。

首先,我为我的实例创建了一个静态外部IP地址:

 gcloud compute addresses create myexternalip --region us-east1

然后我为LB创建了一个目标池并添加了实例:

gcloud compute target-pools create kubernetes --region us-east1
gcloud compute target-pools add-instances kubernetes --instances kubeadm --instances-zone us-east1-b

添加代表指向目标池的外部IP和端口范围的转发规则。您必须为节点与您的kubeadm实例联系所需的端口执行此操作。使用之前创建的外部IP。

gcloud compute forwarding-rules create kubernetes-forward --address myexternalip --region us-east1 --ports 22 --target-pool kubernetes

您现在可以查看转发规则,如下所示:

gcloud compute forwarding-rules describe kubernetes-forward
IPAddress: 35.196.X.X
IPProtocol: TCP
creationTimestamp: '2018-02-23T03:25:49.810-08:00'
description: ''
id: 'XXXXX'
kind: compute#forwardingRule
loadBalancingScheme: EXTERNAL
name: kubernetes-forward
portRange: 80-80
region: https://www.googleapis.com/compute/v1/projects/XXXX/regions/us-east1
selfLink: https://www.googleapis.com/compute/v1/projects/XXXXX/regions/us-east1/forwardingRules/kubernetes-forward
target: https://www.googleapis.com/compute/v1/projects/XXXXX/regions/us-east1/targetPools/kubernetes

现在,您可以按照常规流程安装kubeadm,并在您的实例kubeadm init中设置群集大约需要50秒。

之后,如果您在防火墙中正确打开了端口并将其转发给主服务器,则AWS和Azure中的节点应该能够加入。

恭喜,现在你有了一个多云的kubernetes集群! :)