NixOS环境下Kubernetes集群部署疑问:多主机节点连接方法
在NixOS上搭建分离式Kubernetes集群(Master+Node节点连接指南)
好问题!在NixOS上拆分K8s的Master和Node节点来搭建真实集群,核心是搞定节点间的认证配置和网络连通性,下面我一步步给你讲具体操作:
1. 配置Master节点
首先在Master节点的configuration.nix里只启用master角色,同时要确保API Server能被Node节点访问到:
services.kubernetes = { roles = ["master"]; # 绑定API Server到所有网卡,或者指定Master的内网/公网IP apiServer.address = "0.0.0.0"; # 关键:设置Node节点用来连接的Master地址,必须是Node能访问到的IP apiServer.advertiseAddress = "192.168.1.100"; # 替换成你的Master节点实际IP # 启用RBAC授权,这是生产集群的标准配置 authorizationMode = "Node,RBAC"; };
配置完成后执行sudo nixos-rebuild switch应用更改。
2. 获取Master的集群加入命令
Master节点部署完成后,需要生成Node节点加入集群的认证信息。在Master上执行:
kubeadm token create --print-join-command
这个命令会输出一行类似这样的内容,把它复制下来(后面Node节点要用):
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注意:默认令牌有效期是24小时,如果过期了,重新执行上面的命令生成新的即可。
3. 配置Node节点
在Node节点的configuration.nix里只启用node角色,并指定Master的API Server地址:
services.kubernetes = { roles = ["node"]; # 替换成你的Master节点IP+6443端口 masterAddress = "192.168.1.100:6443"; };
执行sudo nixos-rebuild switch应用配置。
4. 让Node节点加入集群
在Node节点上,执行刚才从Master复制的kubeadm join命令(记得加sudo):
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
执行成功后,Node节点就会开始向Master注册。
5. 验证集群连接
回到Master节点,执行以下命令查看节点状态:
kubectl get nodes
如果Node节点的状态显示为Ready,就说明连接成功了!
关键注意事项
- 网络连通性:Master和Node之间必须开放这些端口:
- TCP 6443:K8s API Server端口
- TCP 10250:Kubelet端口
- UDP 8472(如果用Flannel网络插件):Pod间通信端口
你可以在NixOS的configuration.nix里配置防火墙开放这些端口:
networking.firewall = { allowedTCPPorts = [6443 10250]; allowedUDPPorts = [8472]; }; - Pod网络插件:集群搭建完成后,必须部署Pod网络插件(比如Flannel、Calico),否则Pod之间无法通信。在Master节点通过
kubectl apply部署对应的配置文件即可。
内容的提问来源于stack exchange,提问作者michas
相关产品推荐
相关产品推荐

