Update Portworx file system dependencies in OCP IBM Cloud
The Portworx Enterprise container ships with an archive containing precompiled modules for the kernels which were available at the time the container was released. If a kernel is released after a Portworx release, a pre-compiled version of the modules will not exist in the container. If Portworx is deployed in a setup which does not have access to mirrors.portworx.com
to download the latest modules (for example, an air-gapped deployment), then Portworx will fail to come up.
Alternatively, in such deployments, you can publish the updated containers to internal container repositories where Portworx can download the new kernel modules.
Regardless of whether your cluster accesses the updated container through mirrors.portworx.com
or an internal container registry, you can use that container to update your nodes' Portworx installation to include the latest batch of precompiled modules. Perform the update by running a DaemonSet in the cluster where Portworx has been installed.
Update filesystem dependencies
-
Run the following command to download the correct version of the manifest that installs a DaemonSet in your cluster. Substitute
<px-version>
with the specific Portworx version you require:REL="/<px-version>" && curl -fsL -o pxlibupdate-spec.yaml "https://install.portworx.com${REL}?comp=pxlibupdate"
-
Apply the spec:
oc apply -f pxlibupdate-spec.yaml
Inspect the pod log to determine success or failure of the update.
-
Run the following command to restart all Portworx pods:
oc label nodes --all px/service=restart --overwrite
To update Portworx filesystem dependencies on an IBM Cloud environment, perform the following steps:
-
Download the
pxlibupdate-spec.yaml
file:curl -fsL -o pxlibupdate-spec.yaml "https://install.portworx.com?comp=pxlibupdate"
-
Edit the downloaded YAML file:
sed -i -e "s#image: portworx/px-lib:pxfslibs-#image: icr.io/ext/portworx/px-lib:pxfslibs-#g" pxlibupdate-spec.yaml
sed -i -e '/- key: node-role.kubernetes.io/master/d' pxlibupdate-spec.yaml
sed -i -e '/operator: DoesNotExist/d' pxlibupdate-spec.yamlFor the Red Hat OpenShift on IBM Cloud (IBM ROKS) environment, append the following additional environmental variable:
sed -i -e MIRRORS_SERVER=https://px-mirror.storage.cloud.ibm.com
-
Apply the edited YAML file:
oc apply -f pxlibupdate-spec.yaml
Inspect the pod log to determine success or failure of the update.
-
Verify that all
pxlibupdate
pods are running:oc get pods -n <px-namespace> -l name=px-libs-update
NAME READY STATUS RESTARTS AGE
px-libs-update-m8jvs 1/1 Running 0 42s
px-libs-update-mgmcp 1/1 Running 0 42s
px-libs-update-qt44w 1/1 Running 0 42s -
Run the following command to restart all Portworx pods:
oc label nodes --all px/service=restart --overwrite
Wait for a few minutes for the Portworx pods to restart. You will notice that Portworx is deployed with the latest kernel version.
The DaemonSet above will update the pre-compiled module archives within the Portworx install location on the node (for example, /opt/pwx
).
Note that this process assumes that Portworx is already installed since it will only update an existing installation. The existing installation's version will be checked for compatibility with the update container, and if it is not compatible, then the update will not be done.