【问题标题】:How to access Kubernetes API from node directly如何直接从节点访问 Kubernetes API
【发布时间】:2022-01-27 17:13:57
【问题描述】:

如何从 Kubernetes 节点访问 API 服务器,如何找到 API 端点并处理身份验证?顺便说一下,它是一个 Windows 节点。

我很惊讶在 Internet 上找不到太多关于此的信息,直接从节点访问 Kubernetes API 是不是一个糟糕的设计?

【问题讨论】:

    标签: kubernetes azure-aks kubernetes-apiserver


    【解决方案1】:

    “来自节点”听起来像是一个边缘用例,例如插件,通常使用在节点附加期间部署的“admin.conf”文件来覆盖,并包含连接到 api 服务器所需的任何内容。

    更常用的方法是将工作负载部署在 Pod 中,该服务帐户将具有适当的角色绑定来访问 API 服务器。

    【讨论】:

      【解决方案2】:

      如何直接从node访问Kubernetes API?

      • 有多种方式,其中一种方式是从主节点
      # Get API Server URL:
      kubectl cluster-info
      
      #access it using the curl 
      curl https://<api serverIP>:6443/api/v1/nodes  --cacert /etc/srv/kubernetes/pki/ca-certificates.crt   --cert /var/lib/kubelet/pki/kubelet-client.crt   --key /var/lib/kubelet/pki/kubelet-client.key
      

      如何找出 API 端点并处理身份验证?

      • 我使用的一种技术是将 --v=11 与 kubectl 命令一起使用,它将提供 kubernetes 资源的端点
      #example :
       kubectl get pods --v=11 2>&1 | grep GET
      I1229 10:20:41.098241   42907 round_trippers.go:423] curl -k -v -XGET  -H "Accept: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.19.4 (linux/amd64) kubernetes/d360454" 'https://10.157.160.165:6443/api/v1/namespaces/default/pods?limit=500'
      I1229 10:20:41.116964   42907 round_trippers.go:443] GET https://<apiserver>:6443/api/v1/namespaces/default/pods?limit=500 200 OK in 18 milliseconds
      
      

      顺便说一句,它是一个Windows节点

      • 理想情况下,上述步骤应该可以工作,您可能需要找到 grep 和 curl 的等效命令。将证书的位置更改为适当的位置。您可以从 admin.conf 文件中找到证书的位置。

      【讨论】:

        猜你喜欢
        • 2019-07-13
        • 1970-01-01
        • 2019-01-21
        • 2011-06-14
        • 2021-05-16
        • 2011-04-12
        • 2020-09-02
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多