Kubectl 仅获取工作节点

问题描述 投票:0回答:4

是否有任何快捷方式或 kubectl 命令或 REST API 调用来仅获取工作节点列表。 (不包括主节点)

更新: 对于高手我们可以这样做:

kubectl get nodes --selector=node-role.kubernetes.io/master

对于工人,我没有看到默认创建的任何此类标签。我们可以通过反转或在选择器上做 != 之类的事情来获得吗?

我们也无法 grep 它:

C02W84XMHTD5:ucp iahmad$ kubectl get nodes | grep worker
C02W84XMHTD5:ucp iahmad$ 
C02W84XMHTD5:ucp iahmad$ kubectl get nodes -o wide| grep worker
C02W84XMHTD5:ucp iahmad$ 
C02W84XMHTD5:ucp iahmad$ kubectl get nodes -o yaml | grep worker
C02W84XMHTD5:ucp iahmad$ 
C02W84XMHTD5:ucp iahmad$ kubectl get nodes -o json | grep worker
C02W84XMHTD5:ucp iahmad$ 

我的用例是希望每分钟获取此列表以更新外部负载均衡器池,以防添加新节点或从集群中删除新节点。事实上,我可以自己给它们贴上标签,但如果有一些默认的内置方法会很有用

kubernetes kubectl
4个回答
10
投票

您可以通过

获取节点的角色/标签
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
,您可以通过
!=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 会自动创建标签。

Rancher 中的 API(已附加过滤器):

/v3/clusters/c-xxxxx/nodes?worker=true&controlPlane_ne=true

3
投票

您可以使用以下方式来选择工人

kubectl get node --selector='!node-role.kubernetes.io/master'

0
投票

尝试:

kubectl describe node -l node-role.kubernetes.io/worker=true 

0
投票

E0429 16:06:57.255376 3673 memcache.go:265]无法获取当前服务器API组列表:获取“http://localhost:8080/api?timeout=32s”:拨打tcp [::1]:8080 :连接:连接被拒绝 E0429 16:06:57.261418 3673 memcache.go:265]无法获取当前服务器API组列表:获取“http://localhost:8080/api?timeout=32s”:拨打tcp [::1]:8080:连接:连接被拒绝 E0429 16:06:57.262300 3673 memcache.go:265]无法获取当前服务器API组列表:获取“http://localhost:8080/api?timeout=32s”:拨打tcp [::1]:8080:连接:连接被拒绝 E0429 16:06:57.264389 3673 memcache.go:265]无法获取当前服务器API组列表:获取“http://localhost:8080/api?timeout=32s”:拨打tcp [::1]:8080:连接:连接被拒绝 E0429 16:06:57.266553 3673 memcache.go:265]无法获取当前服务器API组列表:获取“http://localhost:8080/api?timeout=32s”:拨打tcp [::1]:8080:连接:连接被拒绝 与服务器 localhost:8080 的连接被拒绝 - 您指定了正确的主机或端口吗?

© www.soinside.com 2019 - 2024. All rights reserved.