创建多主 Kubernetes 集群

创建多主 Kubernetes 集群

我需要创建具有 2 个主节点和 3 个工作节点的故障转移 k8s 集群,其中包含堆叠的控制平面和 etcd 节点,以及 calico 作为网络插件。主节点上有虚拟 ip 和 haproxy 平衡器。Kubernetes 版本是 1.15.1。

我曾经部署过单主 k8s 集群,将--pod-network-cidr--apiserver-advertise-address其他参数作为 CLI 参数传递到kubeadm init- 效果很好。

现在根据官方手册(https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/) 我必须使用--configyaml 配置文件,因为没有足够的 CLI 键来完成我需要的操作。手册显示了非常简单的配置示例,这对我来说还不够。由于无法--config与参数混合,yaml 配置扩展为:

apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: "10.30.7.65"
  bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
controlPlaneEndpoint: "10.30.7.90:7443" # This is virtual ip of balancer
api:
  advertiseAddress: 10.30.7.65
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
nodeName: srv1.demo2.prolabs.ai
kubernetesVersion: v1.15.1
apiServerCertSANs:
- "10.30.7.65"
- "10.30.7.66"
- "10.30.7.67"
- "10.30.7.90"
- "127.0.0.1"
token: "jw5mnd.26a22s2kg9mewtjv"
tokenTTL: "0"

运行后,kubeadm init --config=k8s.yaml --upload-certs我发现没有应用任何网络设置:控制器 pod 位于 192.168.0.0/16 子网中,calico 和 etcd pod 绑定到服务器的外部 ip。

那么,问题是什么?如何使用特定子网、特定 API URL 和特定硬件节点接口来初始化多主集群?

相关内容