1. 前言
在上一篇博客中,我有细讲如何在局域网环境中搭建k8s单集群,如果说你现在手上有两台虚拟机,这两台虚拟机都有自己的公网ip.虚拟机A是阿里云的虚拟机,另外一台虚拟机B是腾讯云的虚拟机,你想把虚拟机A作为k8s的master节点,虚拟机B作为负载节点,按照上一篇博客中的做法会出现一些问题。
2. 使用kubeadm搭建集群
还是使用kubeadm作为集群搭建的工具
kubeadm init --pod-network-cidr 172.16.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --apiserver-advertise-address xxx.xx.xxx.xx # xxx.xx.xxx.xx为master机器的公网ip地址
此时会卡在
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.
出现这个问题是因为etcd配置的问题,所以etcd无法启动。所以这个时候我们需要修改etcd.yaml。
文件路径"/etc/kubernetes/manifests/etcd.yaml"。
修改前
修改后
此处"xxx"为公网ip,要关注的是"--listen-client-urls"和"--listen-peer-urls"。需要把--listen-client-urls 和 --listen-peer-urls 都改成127.0.0.1:2379和127.0.0.1:2380
稍等片刻之后,master节点就初始化好了
剩下的步骤和局域网搭建集群步骤一样,传送门。