代码之家  ›  专栏  ›  技术社区  ›  lucidquiet

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

  •  3
  • lucidquiet  · 技术社区  · 7 年前

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

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

    2 回复  |  直到 7 年前
        1
  •  3
  •   Rico    7 年前

    主服务器通常具有与其相关联的“主服务器”角色。例如:

    $ 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: ""
    
        2
  •  3
  •   Konstantin Vustin    7 年前

    更多方法:

    $ 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