0

我正在尝试将 python API 用于 kubernetes,但我似乎无法执行该请求。我认为管道对我来说并不清楚。

我正在按照这里的步骤操作:Kubernetes python 客户端:身份验证问题

在远程服务器上:

  • 我设置了我的服务帐户并生成了链接中描述的秘密
  • 我将令牌添加到我的代码中

我被拒绝连接。

  • 我应该将集群中的任何信息导入本地客户端吗?
  • 港口好吗?
from kubernetes import client, config
def main():
    configuration = client.Configuration() 

    configuration.host = "http://my_ip:8080"
    configuration.api_key_prefix['authorization'] = "Bearer"
    configuration.api_key['authorization'] = "my_token"
    v1 = client.CoreV1Api()
    print("Listing pods with their IPs:")
    ret = v1.list_pod_for_all_namespaces(watch=False)
    for i in ret.items:
        print("%s\t%s\t%s" %
            (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

if __name__ == '__main__':
    main()

输出:

   raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='xx.xx.xx.xx', port=8080): Max retries exceeded with url: /api/v1/pods?watch=False (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1118e5668>: Failed to establish a new connection: [Errno 61] Connection refused'

当前本地客户端 kubectl 配置视图:

apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
4

2 回答 2

1

首先,检查 kubectl 的配置是否正确,如下面的文档摘录所示。

配置 kubectl

为了让 kubectl 找到并访问 Kubernetes 集群,它需要一个 kubeconfig 文件,该文件是在您使用 Minikube 集群创建集群kube-up.sh或成功部署 Minikube 集群时自动创建的。[...] 默认情况下,kubectl 配置位于~/.kube/config.

检查 kubectl 配置

通过获取集群状态检查 kubectl 是否正确配置:

kubectl cluster-info

如果您看到 URL 响应,则 kubectl 已正确配置为访问您的集群。如果您看到类似以下的消息,则 kubectl 未正确配置或无法连接到 Kubernetes 集群。

The connection to the server <server-name:port> was refused - did you specify the right host or port?


因为它看起来没有连接到集群。如果它没有返回 URL,您可以config从远程服务器(从$HOME/.kube目录)获取文件。

您可以将该文件放在本地计算机上,类似命名$HOME/.kube/config的 .

然后,您可以使用以下命令在 Python 脚本中加载该配置文件:

def main():
    config.load_kube_config()

示例可以在这里找到。

于 2019-04-01T14:20:38.923 回答
0

您忽略了在配置中指定 API 服务器证书。您包含的链接具有以下内容:

configuration.ssl_ca_cert = '<path_to_cluster_ca_certificate>'
于 2020-03-26T00:22:55.227 回答