NetBackup™ Deployment Guide for Kubernetes Clusters
- Introduction
- Section I. Configurations
- Prerequisites
- Recommendations and Limitations
- Configurations
- Configuration of key parameters in Cloud Scale deployments
- Section II. Deployment
- Section III. Monitoring and Management
- Monitoring NetBackup
- Monitoring Snapshot Manager
- Monitoring fluentbit
- Monitoring MSDP Scaleout
- Managing NetBackup
- Managing the Load Balancer service
- Managing PostrgreSQL DBaaS
- Managing fluentbit
- Performing catalog backup and recovery
- Managing MSDP Scaleout
- Section IV. Maintenance
- MSDP Scaleout Maintenance
- PostgreSQL DBaaS Maintenance
- Patching mechanism for primary, media servers, fluentbit pods, and postgres pods
- Upgrading
- Cloud Scale Disaster Recovery
- Uninstalling
- Troubleshooting
- Troubleshooting AKS and EKS issues
- Troubleshooting AKS-specific issues
- Troubleshooting EKS-specific issues
- Troubleshooting AKS and EKS issues
- Appendix A. CR template
Patching of containers
This section describes the procedure for patching of the following containers (listed with examples):
Primary (main) containers
For example,
netbackup/main:10.5-patch
Media containers
For example,
netbackup/media:10.5-patch
Poddependency-init containers
For example,
netbackup/operator:10.5-patch
Fluentbit collector pods
For example,
netbackup/fluentbit: 10.5-patch
Fluentbit cleanup container
For example,
netbackup/fluentbit-log-cleanup: 10.5-patch
PostgreSQL pods
Table: Primary and Media container keywords
Profile name | Main container keyword | Init container keyword | Sidecar container keyword |
---|---|---|---|
Primary container keywords | |||
Primary |
Example,
| ||
Nbatd |
Example,
|
Example,
|
Example,
|
Mqbroker |
Example,
|
Example,
| |
Webservice |
Example,
|
Example,
|
Example,
Example,
|
Policyjob |
Example,
|
Example,
policyjob.secure-comms Example,
policyjob.nbhousekeeping Example,
| |
Policyjobmgr |
Example,
|
Example,
Example,
Example,
| |
Requestrouter |
Example,
| ||
Bootstrapper |
Example,
| ||
Media container keywords | |||
Media |
|
|
|
To patch the main, media, poddependency-init container
- Use the following command to obtain the environment name:
$ kubectl get environments -n <namespace>
- Depending on the container, use the following respective command to verify if serviceImageTag is present:
For primary container:
$ kubectl get environment -n <namespace> -o=jsonpath='{$.items[0].spec.primary.serviceImageTag}'
For media container:
$ kubectl get environment -n <namespace> -o=jsonpath='{$.items[0].spec.mediaServers[0].serviceImageTag}'
For poddependency-init container:
$ kubectl get environment -n <namespace> -o=jsonpath='{$.items[0].spec.mediaServers[0].serviceImageTag}'
Depending on the output perform one of the following:
If serviceImageTag is present, then run the following command by changing the value field. For example, change
10.5-patch
to the required image tag:For primary container:
$ kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag/primary.main", "value": "10.5-patch"}]'
For patching init containers of primary server:
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag/<init container keyword>", "value": "10.5-patch"}]'
For patching sidecar container of primary server
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag/<SideCar containers keyword>", "value": "10.5-patch"}]'
For media container:
$ kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/media.main", "value": "10.5-patch"}]'
For patching init containers of media server:
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/<Init containers keyword>", "value": "10.5-patch"}]'
For patching sidecar container of media server
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/<container keyword>", "value": "10.5-patch"}]'
For poddependency-init container:
$ kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/media.pod-dependency-init", "value": "10.5-patch"}]'
Or
If serviceImageTag is not present, then run the following command by changing the value field. For example, change
10.5-patch
to the required image tag:For primary container:
$ kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/primary/serviceImageTag/primary.main", "value": "10.5-patch"}]'
For patching init containers of primary server:
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/primary/serviceImageTag/<init container keyword>", "value": "10.5-patch"}]'
For patching sidecar container of primary server
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/primary/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/primary/serviceImageTag/<SideCar containers keyword>", "value": "10.5-patch"}]'
For media container:
$ kubectl patch environment nbu -n netbackup --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/media.main", "value": "10.5-patch"}]'
For patching init containers of media server:
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/<Init containers keyword>", "value": "10.5-patch"}]'
For patching sidecar container of media server
kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/<SideCar containers keyword>", "value": "10.5-patch"}]'
For poddependency-init container:
$ kubectl patch environment <env-name> -n <namespace> --type=json --patch '[{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag", "value": {}},{"op": "replace", "path": "/spec/mediaServers/0/serviceImageTag/media.pod-dependency-init", "value": "10.5-patch"}]'
Note:
For patching the sidecar containers for primary server:
If a specific container is patched with some image(ex. nbatd.pbx: 10.5-patch) and you want to patch that container universally (ex. pbx: 10.5-patch1), then you have to first delete the previous entry for that container from the environment.
From version 10.5, you can also patch the fluentbit collector pods using the fluentbit containers. The fluentbit collector, daemonset, and sidecar are the same container images.
Fluentbit container patch image example: netbackup/fluentbit:10.5-patch
Fluentbit cleanup container patch image example: netbackup/fluentbit-log-cleanup:10.5-patch
To patch the fluentbit collector pods
- Using the following command, get the currently configured values. Save the values in a file.
helm get values -n <namespace> fluentbit | grep -v "USER-SUPPLIED VALUES:" > <values file name>
- Update the output file to reflect new image tags:
Edit and update the tags in below json path file for the fluentbit-collector and execute the command:
fluentbit.image.tag to 10.5-patch (or actual patch tag)
Edit and update the tags in below json path file for the fluenbit-log-cleanup image and execute the command:
fluentbit.cleanup.image.tag to 10.5-patch (or actual patch tag)
- To update the deployment, run the helm command:
helm upgrade --install -n <namespace> fluentbit <fluentbit tgz> -f <values file name>
Note:
The tarball you need for this command is the one containing the helm templates, not the docker images. It is usually named fluentbit-<version>.tgz
The procedure describes the steps to update the image for NetBackup PostgreSQL pod in 10.5.
To update the containerized PostgreSQL pod for NetBackup version 10.5
Consider a scenario - In 10.5-xxxx deployment with netbackup-postgresql version 16.10.x.x, upgrade to netbackup-postgresql version 16.10.x.x using tag 10.5-patch2
- Suspend the backup job processing using the command:
nbpemreq -suspend_scheduling
- Load, tag, and push the new NetBackup PostgreSQL image using the commands:
To load the PostgreSQL imagedocker load -i VRTSnetbackup-postgresql-16.4.0002.tar.gz
To load the PostgreSQL-upgrade imagesdocker load -i VRTSnetbackup-postgresql-upgrade-16.4-0002.tar.gz
To tag the new imagesdocker tag netbackup/postgresql:16.4-0002 exampleacr.azurecr.io/netbackup/postgresql:10.5-patch2
docker tag localhost/netbackup/postgresql-upgrade:16.4-0002 exampleacr.azurecr.io/netbackup/postgresql-upgrade:10.5_patch2
To push the PostgreSQL imagedocker push exampleacr.azurecr.io/netbackup/postgresql:10.5-patch2
docker push exampleacr.azurecr.io/netbackup/postgresql-upgrade:10.5-patch2
- Upgrade the PostgreSQL using Helm chart:
To save PostgreSQL chart values to a file: helm show values postgresql-10.5-64.tgz > postgres-values.yaml
vi postgres-values.yaml
Upgrade the PostgreSQL: helm upgrade --install postgresql postgresql-10.5-64.tgz -f postgres-values.yaml -n netbackup
- Resume the backup job processing using the command:
nbpemreq -resume_scheduling