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