kubernetes - Kubectl 仅获取工作节点

标签 kubernetes kubectl

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

更新 :
对于大师,我们可以这样做:

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

对于 worker ,我没有看到默认情况下创建的任何此类标签。我们可以通过倒车获得还是在选择器上做 != 之类的事情。

我们也不能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$ 

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

最佳答案

您可以通过以下方式获取节点的角色/标签

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, workeretcd .另外两个有etcdworker (向右滚动以查看标签)。

所以我可以通过以下方式获取所有工作节点
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

关于kubernetes - Kubectl 仅获取工作节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433599/

相关文章:

kubernetes - 部署在EKS上的服务无法在其EXTERNAL-IP上应答

kubernetes - kubectl run 已弃用 - 寻找替代方案

kubernetes - 如何访问 kubectl 返回的映射中的 key

kubernetes - 列出 Kubernetes 中运行的所有 Controller

kubernetes - Terraform eks 模块 - worker 自定义标签

kubernetes - NFS卷位于kubernetes节点上的什么位置?

spring-boot - 如何在 Docker/Kubernetes 中安装 Java 自签名证书?

docker - Kubectl:带有 minikube 的 Kubernetes 超时

ruby-on-rails - kubernetes设置根环境变量

kubernetes - 如何在两个 Helm chart 之间传递数据?