Вы можете получить роли / метки своих узлов с помощью
kubectl get nodes --show-labels
, в моем случае у меня есть три узла, каждый из которых имеет заданные роли и метки:
NAME STATUS ROLES AGE VERSION LABELS
host01 Ready controlplane,etcd,worker 61d v1.10.5 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=host01,node-role.kubernetes.io/controlplane=true,node-role.kubernetes.io/etcd=true,node-role.kubernetes.io/worker=true
host02 Ready etcd,worker 61d v1.10.5 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=host02,node-role.kubernetes.io/etcd=true,node-role.kubernetes.io/worker=true
host03 Ready etcd,worker 61d v1.10.5 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=host03,node-role.kubernetes.io/etcd=true,node-role.kubernetes.io/worker=true
Только host01имеет метки controlplane, worker
и etcd
.Два других имеют etcd
и worker
(прокрутите вправо, чтобы увидеть метки).
Таким образом, я могу получить все рабочие узлы по
kubectl get nodes -l node-role.kubernetes.io/worker=true
NAME STATUS ROLES AGE VERSION
host01 Ready controlplane,etcd,worker 61d v1.10.5
host02 Ready etcd,worker 61d v1.10.5
host03 Ready etcd,worker 61d v1.10.5
Для исключения controlplane
s, вы можете исключить их со вторым ярлыком с помощью !=true
kubectl get nodes -l node-role.kubernetes.io/worker=true,node-role.kubernetes.io/controlplane!=true
NAME STATUS ROLES AGE VERSION
host02 Ready etcd,worker 61d v1.10.5
host03 Ready etcd,worker 61d v1.10.5
. Пожалуйста, адаптируйте это к вашим ярлыкам или установите ярлыки в соответствии с вашим кластером.В моем случае это кластер Rancher 2.0 .Ярлыки автоматически создаются Rancher при добавлении узла.
API для этого находится в Rancher в (с уже добавленным фильтром):
/v3/clusters/c-xxxxx/nodes?worker=true&controlPlane_ne=true