Difference between revisions of "Accessing a Kubernetes cluster"

From MyWiki
Jump to: navigation, search
Line 32: Line 32:
 
<source lang="bash">
 
<source lang="bash">
 
$ APISERVER=$(kubectl config view | grep https | cut -f 2- -d ":" | tr -d " ")
 
$ APISERVER=$(kubectl config view | grep https | cut -f 2- -d ":" | tr -d " ")
 +
</source>
 +
 +
'''Confirm that the APISERVER stored the same IP as the Kubernetes master IP by issuing the following 2 commands and comparing their outputs:'''
 +
<source lang="bash">
 +
$ echo $APISERVER
 +
https://192.168.99.100:8443
 +
 +
$ kubectl cluster-info
 +
Kubernetes master is running at https://192.168.99.100:8443 ...
 
</source>
 
</source>

Revision as of 16:24, 22 September 2019

We access a Kubernetes cluster by three methods:

  • kubectl, the CLI tool
  • Kubernetes Dashboard
  • curl with the right credentials to access the cluster via APIs

$ kubectl config view
$ kubectl cluster-info
$ kubectl cluster-info dump


$ minikube dashboard
$ kubectl proxy

When kubectl proxy is running, we can send requests to the API over the localhost on the proxy port 8001 (from another terminal, since the proxy locks the first terminal):

$ curl http://localhost:8001/

We can explore every single path combination with curl or in a browser, such as:
http://localhost:8001/api/v1
http://localhost:8001/apis/apps/v1
http://localhost:8001/healthz
http://localhost:8001/metrics

APIs - without 'kubectl proxy
When not using the proxy we need to authenticate to the API server with either a Bearer Token or by providing a set of keys and certificates
A Bearer Token is an access token which is generated by the authentication server (the API server on the master node) and given back to the client.
Get the token:

$ TOKEN=$(kubectl describe secret -n kube-system $(kubectl get secrets -n kube-system | grep default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t' | tr -d " ")

Get the API server endpoint:

$ APISERVER=$(kubectl config view | grep https | cut -f 2- -d ":" | tr -d " ")

Confirm that the APISERVER stored the same IP as the Kubernetes master IP by issuing the following 2 commands and comparing their outputs:

$ echo $APISERVER
https://192.168.99.100:8443
 
$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443 ...