<p>I have setup Official Kubernetes Python Client (<a href="https://github.com/kubernetes-client/python" rel="noreferrer">https://github.com/kubernetes-client/python</a>).</p>

<p>I am running Python code to connect to a Kubernetes cluster and it's throwing an <strong>error</strong>:</p>

<blockquote>
  <p>urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='****', port=6443): Max retries exceeded with url: /api/v1/namespaces/default/pods (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))</p>
</blockquote>

<p><strong>Installed requirements:</strong></p>

<pre><code>cachetools        3.1.0 ,
certifi           2019.3.9 ,
chardet           3.0.4 , 
google-auth       1.6.3 ,
idna              2.8 ,
ipaddress         1.0.22 ,
kubernetes        10.0.0-snapshot ,
oauthlib          3.0.1 ,
pip               19.0.3 ,
pyasn1            0.4.5 ,
pyasn1-modules    0.2.4 ,
python-dateutil   2.8.0 ,
PyYAML            5.1 ,
requests          2.21.0 ,
requests-oauthlib 1.2.0 ,
rsa               4.0 ,
setuptools        41.0.0 ,
six               1.12.0 ,
urllib3           1.24.1 ,
websocket-client  0.56.0 ,
wheel             0.33.1 
</code></pre>

<p><code>kubectl</code> is working fine with the same config <code>$HOME/.kube/config</code> and same proxy settings.</p>

<p>Below is my code:</p>

<pre><code>from kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
</code></pre>

<p>In my case simply loading the config via <code>load_kube_config</code> didn't work as well. I ended up first running a proxy:</p>

<pre><code>kubectl proxy --port=8888
</code></pre>

<p>and then changing the host using the <code>Configuration</code> object:</p>

<pre><code>configuration = client.Configuration()
configuration.host = "localhost:8888"
api_client = client.CoreV1Api(client.ApiClient(configuration))
</code></pre>
