Prepare the worker node
All worker nodes in the Kubernetes cluster must be able to mount the volumes you have provisioned for your pods. To prepare the worker nodes, you must install NFS or iSCSI tools based on your driver selection.
Selecting the right tools
If you are using a combination of drivers, you should install NFS and iSCSI tools.
Install the NFS tools if you are using: ontap-nas
, ontap-nas-economy
, ontap-nas-flexgroup
, azure-netapp-files
, gcp-cvs
Install the iSCSI tools if you are using: ontap-san
, ontap-san-economy
, solidfire-san
Recent versions of RedHat CoreOS have NFS and iSCSI installed by default. |
Node service discovery
Astra Trident attempts to automatically detect if the node can run iSCSI or NFS services.
Node service discovery identifies discovered services but does not guarantee services are properly configured. Conversely, the absence of a discovered service does not guarantee the volume mount will fail. |
Astra Trident creates events for the node to identify the discovered services. To review these events, run:
kubectl get event -A --field-selector involvedObject.name=<Kubernetes node name>
Astra Trident identifies services enabled for each node on the Trident node CR. To view the discovered services, run:
tridentctl get node -o wide -n <Trident namespace>
NFS volumes
Install the NFS tools using the commands for your operating system. Ensure the NFS service is started up during boot time.
sudo yum install -y nfs-utils
sudo apt-get install -y nfs-common
Reboot your worker nodes after installing the NFS tools to prevent failure when attaching volumes to containers. |
iSCSI volumes
Astra Trident can automatically establish an iSCSI session, scan LUNs, and discover multipath devices, format them, and mount them to a pod.
iSCSI self-healing capabilities
For ONTAP systems, Astra Trident runs iSCSI self-healing every five minutes to:
-
Identify the desired iSCSI session state and the current iSCSI session state.
-
Compare the desired state to the current state to identify needed repairs. Astra Trident determines repair priorities and when to preempt repairs.
-
Perform repairs required to return the current iSCSI session state to the desired iSCSI session state.
Logs of self-healing activity are located in the trident-main container on the respective Daemonset pod. To view logs, you must have set debug to "true" during Astra Trident installation.
|
Astra Trident iSCSI self-healing capabilities can help prevent:
-
Stale or unhealthy iSCSI sessions that could occur after a network connectivity issue. In the case of a stale session, Astra Trident waits seven minutes before logging out to reestablish the connection with a portal.
For example, if CHAP secrets were rotated on the storage controller and the network loses connectivity, the old (stale) CHAP secrets could persist. Self-healing can recognize this and automatically reestablish the session to apply the updated CHAP secrets. -
Missing iSCSI sessions
-
Missing LUNs
Install the iSCSI tools
Install the iSCSI tools using the commands for your operating system.
-
Each node in the Kubernetes cluster must have a unique IQN. This is a necessary prerequisite.
-
If using RHCOS version 4.5 or later, or other RHEL-compatible Linux distribution, with the
solidfire-san
driver and Element OS 12.5 or earlier, ensure that the CHAP authentication algorithm is set to MD5 in/etc/iscsi/iscsid.conf
. Secure FIPS-compliant CHAP algorithms SHA1, SHA-256, and SHA3-256 are available with Element 12.7.sudo sed -i 's/^\(node.session.auth.chap_algs\).*/\1 = MD5/' /etc/iscsi/iscsid.conf
-
When using worker nodes that run RHEL/RedHat CoreOS with iSCSI PVs, specify the
discard
mountOption in the StorageClass to perform inline space reclamation. See RedHat documentation.
-
Install the following system packages:
sudo yum install -y lsscsi iscsi-initiator-utils sg3_utils device-mapper-multipath
-
Check that iscsi-initiator-utils version is 6.2.0.874-2.el7 or later:
rpm -q iscsi-initiator-utils
-
Set scanning to manual:
sudo sed -i 's/^\(node.session.scan\).*/\1 = manual/' /etc/iscsi/iscsid.conf
-
Enable multipathing:
sudo mpathconf --enable --with_multipathd y --find_multipaths n
Ensure etc/multipath.conf
containsfind_multipaths no
underdefaults
. -
Ensure that
iscsid
andmultipathd
are running:sudo systemctl enable --now iscsid multipathd
-
Enable and start
iscsi
:sudo systemctl enable --now iscsi
-
Install the following system packages:
sudo apt-get install -y open-iscsi lsscsi sg3-utils multipath-tools scsitools
-
Check that open-iscsi version is 2.0.874-5ubuntu2.10 or later (for bionic) or 2.0.874-7.1ubuntu6.1 or later (for focal):
dpkg -l open-iscsi
-
Set scanning to manual:
sudo sed -i 's/^\(node.session.scan\).*/\1 = manual/' /etc/iscsi/iscsid.conf
-
Enable multipathing:
sudo tee /etc/multipath.conf <<-'EOF defaults { user_friendly_names yes find_multipaths no } EOF sudo systemctl enable --now multipath-tools.service sudo service multipath-tools restart
Ensure etc/multipath.conf
containsfind_multipaths no
underdefaults
. -
Ensure that
open-iscsi
andmultipath-tools
are enabled and running:sudo systemctl status multipath-tools sudo systemctl enable --now open-iscsi.service sudo systemctl status open-iscsi
For Ubuntu 18.04, you must discover target ports with iscsiadm
before startingopen-iscsi
for the iSCSI daemon to start. You can alternatively modify theiscsi
service to startiscsid
automatically.
Reboot your worker nodes after installing the iSCSI tools to prevent failure when attaching volumes to containers. |