The latest release of vRealize Operations (the “manager” part of the product name has now been dropped), brings the ability to manage your Kubernetes environments from the vSphere infrastructure up.
The Kubernetes integration in vRealize Operations 8.1;
- vSphere with Kubernetes integration:
- Ability to discover vSphere with Kubernetes objects as part of the vCenter Server inventory.
- New summary pages for Supervisor Cluster, Namespaces, Tanzu Kubernetes cluster, and vSphere Pods.
- Out-of-the-box dashboards, alerts, reports, and views for vSphere with Kubernetes.
- The VMware Management Packs that are new and those that are updated for vRealize Operations Manager 8.1 are:
- VMware vRealize Operations Management Pack for Container Monitoring 1.4.3
Where does OpenShift Container Platform fit in?
All though the above highlighted release notes point towards vSphere with Kubernetes (aka project pacific), the Container monitoring management pack has been available for a while and has received a number of updates.
This management pack can be used with any of your Kubernetes setups. Bringing components into your infrastructure monitoring view;
So this means you can add in your OCP environment for monitoring.
Configuring vRealize Operations to monitor your OpenShift Clusters
Grab the latest Container monitoring management pack to be installed in your vRealize Operations environment.
- Log in to the vRealize Operations Manager with administrator privileges.
- In the menu, select Administration and in the left pane select Solutions > Repository.
- On the Repository tab, click Add/Upgrade.
- Browse to locate the temporary folder and select the PAK file.
- Click Upload. The upload might take several minutes.
- Read and accept the EULA,and click Next.
- When the vRealize Operations Management Pack for Container Monitoring is installed, click Finish.
To link any Kubernetes to your environment for monitoring, you need to install the cAdvisor Daemon. For OCP I used the cAdvisor YAML Definition on HostPort, secondly you need to create some credentials to authenticate to your cluster from your connection in vROPs.
Below is my token created from following the KB above, ensure you copy just the token itself, and when pasted there are no line breaks etc.
Through testing, I’ve found that token based authentication works well, and I followed this KB 75169, which gives you a sample YAML, creating this secret against Kube-System was fine in my lab environment, but for production usage, like all access and authorization creation you must understand the configuration and document.
If you want to review all your Kubernetes authentication options, see here.
Finally configure your Kubernetes Adapter in your vRealize Operations interface;
- From the main menu of vRealize Operations Manager, click Administration, and then in the left pane, click Solutions.
- From the Solutions list, select VMware vRealize Operations Management Pack for Container Monitoring.
- Click the Configure icon to edit an object.
- Enter the display name of the adapter.
- Enter the http URL of the Kubernetes master node in the Master URL text box.
- Select DaemonSet as the cAdvisor Service.
- Enter the port number of cAdvisor (Default is 31194)
- Enter the Credential details of the Master URL.
- Under advanced settings if the OCP cluster is running on vCenter Server which is monitored by vRealize Operations, you can view a link from the Kubernetes node to the vSphere Virtual Machine. To view the link, enter the IP address of the vCenter Server instance.
New Environment Views
You will find this management pack will create a lot of new objects in vRealize operations, one of them is a new K8S-World, which will hold the data of all the Kubernetes adapters configured in your environment, this grouping sits under the new Containers World.
In the below environment view, I am monitoring the memory utilisation of the three linked components.
- Kubernetes Cluster Node > The Virtual Machine in vSphere > The VMware ESXi host the VM is running on.
Looking at the Dashboards
By default, you only get the Kubernetes overview dashboard, which is built upon some of the imported views.
However I also highly recommend you try out the Kubernetes Namespace dashboard created by my colleague Simon Conyard.
The Overview Dashboard is split into three main areas;
- Kubernetes Cluster Summary showing cluster alerts figures
- Performance of Cluster nodes
- Performance of Pods & Containers
Select your Kubernetes cluster, which will relate to the name provided when configuring your Kubernetes adapter earlier in the configuration. As you can see here, this dashboard is Kubernetes platform agnostic, and I took this screenshot just as a VMware Tanzu Kubernetes Grid platform was added to vRealize Operations.
By selecting the active alerts, I will get a summary of which objects have triggered in the cluster, which I can select and view in the environment section.
Continuing down the dashboard, we then focus on the nodes, where I’ve selected my lowest health node.
We can see the node properties, pods relationship, key metrics and even pick our own metrics and properties to view for that node as well.
Below we can see my node health is reduced due to high memory consumption.
Finally, the last part of the dashboard looks at pods and containers. In the below we can see my API server pod availability has been all over the place. So I really need to look at this if I want to continue giving demos with this environment.
Finally I just want to highlight my favourite piece of the dashboard, which is the associated components, as below it shows you everything that is brought together as part of an app deployment in Kubernetes, but as a VI admin it can really help you visualise how everything is brought together, even if you’ve never used Kubernetes before.
Although this blog post points towards OpenShift Container Platform. There is nothing which is exclusive to OCP. Which for me shows the power of the vRealize Operations platform, the ability to be agnostic of the Kubernetes platform which it monitors. We could easily do a Find all + replace on this blog post and change OpenShift/OCP to Azure Kubernetes Service, and everything would remain the same. Alternatively you could read this blog post.