In this section, we will test our connections to our Kubernetes clusters one at a time and then lastly connect to the Kubernetes dashboard and view our Kubernetes clusters’ information. To test our connections we must ensure that the right ports are open, set our cluster’s context with the DC/OS Kubernetes service, get Kubernetes nodes’ information, and test with a simple NGINX deployment.
Check that Port :6443 and :6444 are open.
Before attempting to connect kubectl to the MKE clusters, you will want to check to ensure that ports :6443 and :6444 are accessible by your local machine to the DC/OS Cluster. Closed ports :6443 and :6444 will cause kubectl commands to just hang. Typically, these settings are handled by your systems administrator. Or, if using a cloud provider such as AWS, these would be rules configured in your EC2–>Security Groups tab.
Test the connection to kubernetes-cluster1 at port :6443
-
First, configure your
contexttokubernetes-cluster1at port:6443.If using Edge-LB Auto Pools, in your CLI, enter the following snippet:
dcos kubernetes cluster kubeconfig \ --insecure-skip-tls-verify \ --context-name=kubernetes-cluster1 \ --cluster-name=kubernetes-cluster1 \ --apiserver-url=https://${EDGELB_PUBLIC_AGENT_IP}:6443/kubernetes-cluster1If not using Edge-LB Auto Pools, enter the following snippet:
dcos kubernetes cluster kubeconfig \ --insecure-skip-tls-verify \ --context-name=kubernetes-cluster1 \ --cluster-name=kubernetes-cluster1 \ --apiserver-url=https://${EDGELB_PUBLIC_AGENT_IP}:6443which will configure DC/OS Kubernetes to connect to
kubernetes-cluster1from the Kubernetes CLI,kubectl. TheEDGELB_PUBLIC_AGENT_IPshould still be cached in your terminal environment from the previous section, if not, make sure to insert the proper value. -
Next, get your Kubernetes nodes’ info for
kubernetes-cluster1.In your CLI, enter:
kubectl get nodesto receive details regarding your the nodes of
kubernetes-cluster1.If you do not get an almost immediate response, check your firewall settings and ensure that you can communicate with your public agent node.
-
Then, create a NGINX deployment on
kubernetes-cluster1.Enter the following in your CLI:
kubectl apply -f https://k8s.io/examples/application/deployment.yamlto launch the deployment.
-
View the NGINX deployment just launched.
In your CLI, run:
kubectl get deploymentsThe resulting output should look similar to the following:
$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-deployment 2 2 2 2 23s -
Lastly, delete the NGINX deployment to finish up this connection test for
kubernetes-cluster1.Run the following command in your CLI:
kubectl delete deployment nginx-deploymentand the deployment will be deleted.
Test the connection to kubernetes-cluster2
Now you will do the same to test kubernetes
-
Connect the second Kubernetes cluster to the
kubeconfigin order to sendkubectlcommands to it.If using Edge-LB Auto Pools, in your CLI, paste in the following, again, your
EDGELB_PUBLIC_AGENT_IPshould still be cached in your terminal environment from the previous section:dcos kubernetes cluster kubeconfig \ --insecure-skip-tls-verify \ --context-name=kubernetes-cluster2 \ --cluster-name=kubernetes-cluster2 \ --apiserver-url=https://${EDGELB_PUBLIC_AGENT_IP}:6443/kubernetes-cluster2If not using Edge-LB Auto Pools, enter the following snippet:
dcos kubernetes cluster kubeconfig \ --insecure-skip-tls-verify \ --context-name=kubernetes-cluster2 \ --cluster-name=kubernetes-cluster2 \ --apiserver-url=https://${EDGELB_PUBLIC_AGENT_IP}:6444Your
kubectlcommands should now connect tokubernetes-cluster2.Once the 2 contexts are configured, they will be saved in ~/.kube/config. To switch, you can either set the context generally:
kubectl config use-context kubernetes-cluster2Or use the flag
--context kubernetes-cluster1in commands like so:kubectl get nodes --context kubernetes-cluster1 -
As before for
kubernetes-cluster1, get the nodes’ information forkubernetes-cluster2.In your CLI, enter:
kubectl get nodesand note that the output should show that you are now using
kubernetes-cluster2, similar to the following:$ kubectl get nodes NAME STATUS ROLES AGE VERSION kube-control-plane-0-instance.kubernetes-cluster2.mesos Ready master 145m v1.17.8 kube-node-0-kubelet.kubernetes-cluster2.mesos Ready <none> 142m v1.17.8 -
Next, create a NGINX deployment on
kubernetes-cluster1:Enter the following in your CLI:
kubectl apply -f https://k8s.io/examples/application/deployment.yamland the deployment will begin.
-
View that NGINX deployment in action:
kubectl get deploymentsThe resulting output should look similar to below:
$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-deployment 2 2 2 2 23s Delete NGINX deployment: -
Finally, delete your test deployment.
Simply enter:
kubectl delete deployment nginx-deploymentand the deployment will be shut down.
Access the Kubernetes Dashboard from your browser
In one simple but satisfying validation of our connection into our Kubernetes cluster manager from outside the cluster, we will access the Kubernetes Dashboard and view our cluster currently in context.
-
Access the Kubernetes dashboard.
In your CLI, enter:
kubectl proxywhich should start the proxy server.
-
Then, navigate to: http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ and you should see your Kubernetes dashboard and information.
When the Kubernetes login screen is shown, you should choose the Kubeconfig option, click the Choose kubeconfig file text box and pick the location of your kubeconfig file (typically, $HOME/.kube/config).
Note: When accessed, and depending on whether you are running DC/OS or DC/OS EE (as well as on your browser’s configuration) you may be presented a warning indicating that the TLS certificate being used by the Kubernetes Dashboard is not trusted. It is generally safe to permanently trust this TLS certificate by adding an exception in your browser, or to skip past it. To learn more about TLS certificates, visit the Kubernetes Dashboard section.
Mission Complete!
Well done! You have successfully completed the Getting Started Guide for Kubernetes. You have set up your DC/OS Enterprise cluster to be able to run Kubernetes as a service on DC/OS.
For more information regarding operating Kubernetes as a service on DC/OS, check out the Operations section.
Kubernetes Documentation