在K8s中,每个集群都有一组节点,一些是master节点,另一些是worker节点。 我们如何知道一个节点是master还是worker?
一般来说,检查节点是master还是worker的最简单方法是检查它是否有标签
node-role.kubernetes.io/control-plane
(或在Kubernetes之前v1.20
:node-role.kubernetes.io/master
):
自从 Kubernetes
v1.20
:
kubectl get nodes -l 'node-role.kubernetes.io/control-plane'
在 Kubernetes 之前
v1.20
:
kubectl get nodes -l 'node-role.kubernetes.io/master'
为了获得工人,我们可以对上述表达式使用否定(因为 Kubernetes
v1.20
):
kubectl get nodes -l '!node-role.kubernetes.io/control-plane'
在 Kubernetes 之前
v1.20
:
kubectl get nodes -l '!node-role.kubernetes.io/master'
另一种方法是使用命令
kubectl cluster-info
,它将打印control-plane
的IP地址:
Kubernetes control plane is running at https://{ip-address-of-the-control-plane}:8443
请记住,对于某些云提供的解决方案,其工作方式可能完全不同。例如,在 GKE 中,默认情况下节点没有任何角色,并且
kubectl cluster-info
返回的 IP 地址是 API Server 的地址,未在 kubectl get nodes
命令中列出,因此请务必记住仔细检查您提供的文档Kubernetes 集群提供商。
您可以使用
kubectl get nodes
列出所有节点。通过角色 control-plane
或 master
,您可以识别该节点。在未来的版本中,master
将替换为 control-plane
。
默认情况下,所有其他没有角色的节点都应该是工作节点。
此外,如果您需要有关节点的更多信息,您可以致电
kubectl get nodes -o wide
。
运行
node
、api-server
和 kube-controller-management
的 kube-scheduler
是 master
节点。