运行kubeadm init时如何更改ip?我在Google计算引擎上创建了主节点,并希望通过AWS和Azure连接节点,但kubeadm使用内部ip地址,该地址仅从google cloud platform network上看到。我尝试使用--apiserver-advertise-address = external ip,但在这种情况下kubeadm卡在[init]中,如果必须拉出控制平面图像,则可能需要一分钟或更长时间。防火墙已打开。
最佳答案
如果我正确理解,您要使用的是运行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集群! :)
关于kubernetes - 更改kubeadm的ip地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930047/