如何知道您在 k8s 主节点上?



我正在编写一些脚本来检查系统以确保某些集群特征。 在私有 IP 地址空间上运行的东西等。 这些检查只是设置群集时的手动步骤,仅用于健全性检查。

它们将在每个节点上运行,但我希望在主节点上运行一组。 是否有 bash、curl、kubectl 或其他命令包含指示当前节点是主节点的信息?

主节点通常具有与之关联的"master"角色。例如:

$ kubectl get nodes
NAME                                         STATUS    ROLES     AGE       VERSION
ip-x-x-x-x.us-west-2.compute.internal        Ready     <none>    7d        v1.11.2
ip-x-x-x-x.us-west-2.compute.internal        Ready     master    78d       v1.11.2
ip-x-x-x-x.us-west-2.compute.internal        Ready     <none>    7d        v1.11.2
ip-x-x-x-x.us-west-2.compute.internal        Ready     <none>    7d        v1.11.2
ip-x-x-x-x.us-west-2.compute.internal        Ready     <none>    7d        v1.11.2

它还具有与之关联的标签node-role.kubernetes.io/master。例如:

$ kubectl get node ip-x-x-x-x.us-west-2.compute.internal -o=yaml
apiVersion: v1
kind: Node
metadata:
annotations:
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: "0"
projectcalico.org/IPv4Address: x.x.x.x/20
volumes.kubernetes.io/controller-managed-attach-detach: "true"
creationTimestamp: 2018-07-23T21:10:22Z
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/instance-type: t3.medium
beta.kubernetes.io/os: linux
failure-domain.beta.kubernetes.io/region: us-west-2
failure-domain.beta.kubernetes.io/zone: us-west-2c
kubernetes.io/hostname: ip-x-x-x-x.us-west-2.compute.internal
node-role.kubernetes.io/master: ""

更多方法:

$ kubectl cluster-info 
Kubernetes master is running at https://node1.example.com:8443
...

您可以将kubectl与标签选择器一起使用:

$ kubectl get nodes -l node-role.kubernetes.io/master=true
NAME                STATUS    ROLES     AGE       VERSION
node1.example.com   Ready     master    1d        v1.10.5
node2.example.com   Ready     master    1d        v1.10.5

您可以通过jsonpath获取特定数据,例如主 IP/主机名:

$ kubectl get nodes -l node-role.kubernetes.io/master=true -o 'jsonpath={.items[*].status.addresses[?(@.type=="InternalIP")].address}'
192.168.168.197 192.168.168.198
$ kubectl get nodes -l node-role.kubernetes.io/master=true -o 'jsonpath={.items[*].status.addresses[?(@.type=="Hostname")].address}'
node1.example.com node2.example.com 

相关内容

  • 没有找到相关文章

最新更新