{"id":1740,"date":"2025-06-25T10:39:05","date_gmt":"2025-06-25T08:39:05","guid":{"rendered":"https:\/\/virtualguru.cz\/?p=1740"},"modified":"2025-06-25T10:39:05","modified_gmt":"2025-06-25T08:39:05","slug":"instalace-portworx-csi-driver-25-2-s-flasharray-purity-6-5-5-na-ubuntu-24-04-1-lts-server-docker-26-1-3-k8s-1-30-10","status":"publish","type":"post","link":"https:\/\/virtualguru.cz\/en\/2025\/06\/25\/instalace-portworx-csi-driver-25-2-s-flasharray-purity-6-5-5-na-ubuntu-24-04-1-lts-server-docker-26-1-3-k8s-1-30-10\/","title":{"rendered":"Installation of Portworx CSI driver 25.2 with FlashArray (Purity 6.5.5) on Ubuntu 24.04.1 LTS server + Docker 26.1.3 + K8s 1.30.10"},"content":{"rendered":"<p>Dokumentace Portworx:<br \/>\n<a href=\"https:\/\/docs.portworx.com\/portworx-csi\">https:\/\/docs.portworx.com\/portworx-csi<\/a><\/p>\n<p>Dokumentace Ubuntu:<br \/>\n<a href=\"https:\/\/documentation.ubuntu.com\/server\/\">https:\/\/documentation.ubuntu.com\/server\/<\/a><\/p>\n<p>Po\u017eadavky:<br \/>\n\u00a0<a href=\"https:\/\/docs.portworx.com\/portworx-csi\/system-requirements\">https:\/\/docs.portworx.com\/portworx-csi\/system-requirements<\/a><\/p>\n<p>Zm\u011bny oproti po\u017eadavk\u016fm:worker node:<br \/>\nmin. 8GB RAM (testov\u00e1no s 16GB), min 4x vCPU<br \/>\nse 4GB RAM nelze vytvo\u0159it intern\u00ed KVDB, se 2x vCPU &#8211; warning stav<\/p>\n<p>Open-ISCSI, multipath<\/p>\n<h2><strong>Postup pro Arrow LAB<\/strong>:<\/h2>\n<p>4x VM pxcsi1 &#8211; pxcsi2<br \/>\nHardware: 4x vCPU, 16GB RAM, ens33 &#8211; VM Network (192.168.6.0\/24), ens44 &#8211; vD-iSCSI-VM (192.168.220.0\/24), HDD SCSI 64GB (Datastore: OS4-vVOLDS-PST)<\/p>\n<p>Default Ubuntu Server 24.04 LTS<\/p>\n<p>Instalace K8s na Ubuntu servery, viz:<br \/>\n<a href=\"https:\/\/www.cherryservers.com\/blog\/install-kubernetes-ubuntu\">https:\/\/www.cherryservers.com\/blog\/install-kubernetes-ubuntu<\/a><\/p>\n<h4>Postup konfigurace linux server\u016f:<\/h4>\n<h5><strong>Vypnout swap na v\u0161ech nodech<\/strong><\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">sudo swapoff -a\r\nsudo vi \/etc\/fstab\r\n# koment \u0159\u00e1dek se swap device<\/pre>\n<p>&nbsp;<\/p>\n<h5>P\u0159idat v\u0161echny nody a pole do host tabulky<\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo vi \/etc\/hosts<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-linenumbers=\"false\">192.168.6.151 pxcsi1\r\n192.168.6.152 pxcsi2\r\n192.168.6.153 pxcsi3\r\n192.168.6.154 pxcsi4\r\n192.168.6.46 ceepsm20dst2\r\n\r\n192.168.220.191 pxcsi1-iscsi\r\n192.168.220.192 pxcsi2-iscsi\r\n192.168.220.193 pxcsi3-iscsi\r\n192.168.220.194 pxcsi4-iscsi<\/pre>\n<p>&nbsp;<\/p>\n<h5><strong>Zapnout NTP na v\u0161ech nodech<\/strong> <br \/>\n(viz. dokument v\u00fd\u0161e v LABU VM servery &#8211; vynech\u00e1no, v produkci mandatory)<\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">sudo apt install systemd-timesyncd\r\nsudo timedatectl set-ntp true\r\nsudo timedatectl status<\/pre>\n<p>&nbsp;<\/p>\n<h5><strong>Firewall<br \/>\n<\/strong>&#8211; standardn\u011b vypnut\u00fd &#8211; ov\u011b\u0159en\u00ed, gener\u00e1ln\u00ed vypnut\u00ed (LAB ONLY!!!)<\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">sudo ufw status\r\nsudo ufw disable<\/pre>\n<p>&nbsp;<\/p>\n<p>Produkce:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo apt install net-tools<\/code><br \/>\n(pokud nen\u00ed instalovan\u00fd netstat)<\/p>\n<p>Tyto porty mus\u00ed b\u00fdt voln\u00e9 a povolen\u00e9 na fw<br \/>\ncontrol-plane node:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo netstat -tulpn | grep \"6443\\|2379\\|2380\\|10250\\|10259\\|10257\"<\/code><\/p>\n<p>worker node:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo netstat -tulpn | grep \"10250\"<\/code><\/p>\n<h5><strong>Load Containerd modules (all nodes)<\/strong><\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">sudo modprobe overlay\r\nsudo modprobe br_netfilter<\/pre>\n<p>permanentn\u00ed nastaven\u00ed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-linenumbers=\"false\">sudo tee \/etc\/modules-load.d\/k8s.conf &lt;&lt;EOF\r\noverlay\r\nbr_netfilter\r\nEOF<\/pre>\n<p>&nbsp;<\/p>\n<h5><strong>Configure Kubernetes IPv4 networking (all nodes)<\/strong><\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-linenumbers=\"false\">cat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/k8s.conf\r\nnet.bridge.bridge-nf-call-iptables\u00a0 = 1\r\nnet.bridge.bridge-nf-call-ip6tables = 1\r\nnet.ipv4.ip_forward\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 1\r\nEOF<\/pre>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo sysctl --system<\/code><\/p>\n<h5><strong>Install Docker (on all nodes)<\/strong><\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-linenumbers=\"false\">sudo apt update\r\nsudo apt install docker.io -y\r\n\r\nsudo systemctl status docker\r\nsudo systemctl enable docker\r\n\r\nsudo mkdir \/etc\/containerd\r\nsudo sh -c \"containerd config default &gt; \/etc\/containerd\/config.toml\"\r\n\r\nsudo sed -i 's\/ SystemdCgroup = false\/ SystemdCgroup = true\/' \/etc\/containerd\/config.toml\r\n\r\nsudo systemctl restart containerd.service\r\nsudo systemctl status containerd.service<\/pre>\n<h5><strong>Install Kubernetes components (on all nodes)<\/strong><\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo apt-get install -y apt-transport-https ca-certificates curl gpg<\/code><\/p>\n<p>Podporovan\u00e1 verze je 1.30 a 1.31 &#8211; instalace ov\u011b\u0159ena s verz\u00ed 1.30<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-linenumbers=\"false\">sudo mkdir \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/Release.key | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg\r\n\r\necho 'deb [signed-by=\/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg] https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/ \/' | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list\r\n\r\nsudo apt update\r\nsudo apt install kubelet kubeadm kubectl -y<\/pre>\n<h5>\u00a0<strong>Initialize Kubernetes cluster (on master node)<\/strong><\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-linenumbers=\"false\">sudo kubeadm config images pull\r\nsudo kubeadm init --pod-network-cidr=10.10.0.0\/16<\/pre>\n<p>&nbsp;<\/p>\n<p>P\u0159\u00edklad!<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/k8s_cluster_worker_join.png\" \/><\/p>\n<p>Jako root:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">export KUBECONFIG=\/etc\/kubernetes\/admin.conf<\/code><\/p>\n<p>Jako regular user:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">mkdir -p $HOME\/.kube\r\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\r\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/pre>\n<h5><strong>Install Calico network add-on plugin<\/strong><strong> on master node<br \/>\n<\/strong>Ov\u011b\u0159eno s verz\u00ed 3.26.1<\/h5>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">kubectl create -f https:\/\/raw.githubusercontent.com\/projectcalico\/calico\/v3.26.1\/manifests\/tigera-operator.yaml\r\n\r\ncurl https:\/\/raw.githubusercontent.com\/projectcalico\/calico\/v3.26.1\/manifests\/custom-resources.yaml -O\r\n\r\nsed -i 's\/cidr: 192\\.168\\.0\\.0\\\/16\/cidr: 10.10.0.0\\\/16\/g' custom-resources.yaml\r\n\r\nkubectl create -f custom-resources.yaml<\/pre>\n<p>Nechceme spou\u0161t\u011bt pody na control plane<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl taint nodes pxcsi1 node-role.kubernetes.io\/control-plane=:NoSchedule<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get nodes<\/code><\/p>\n<h5><strong>Add worker nodes to the cluster (on worker nodes)<\/strong><\/h5>\n<p>IP, token a hash z p\u0159edchoz\u00edho odd\u00edlu a p\u0159\u00edkazu kubeadm init pro inicializaci K8s clusteru<\/p>\n<p>P\u0159\u00edklad !<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-linenumbers=\"false\">kubeadm join 84.32.214.62:6443 --token 2i5iru.f4m1vbxyc9w2ve7q \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 --discovery-token-ca-cert-hash sha256:29edadbccfc479ca35d1480058069dcadf7f694e510756fd153e4f65ae7f39f8\r\n\r\nkubectl get nodes\r\nkubectl get pods --all-namespaces -o wide<\/pre>\n<p>&nbsp;<\/p>\n<h2><strong>PORTWORX CSI<\/strong>:<\/h2>\n<h5>P\u0159\u00edprava:<br \/>\nVoln\u00e9 porty:<br \/>\n9001, 9002, 9003, 9004, 9012, 9013, 9014, 9018, 9019, 9021, 9022, 9029, 12002<\/h5>\n<h4>P\u0159\u00edstup na pole p\u0159es SCSI rozhran\u00ed:<\/h4>\n<h5><strong>Configuring Linux Host for iSCSI with FlashArray<\/strong><\/h5>\n<p><a href=\"https:\/\/support.purestorage.com\/bundle\/m_linux\/page\/Solutions\/Linux\/Installing_and_Configuring\/topics\/concept\/c_configuring_linux_host_for_iscsi_with_flasharray.html\">https:\/\/support.purestorage.com\/bundle\/m_linux\/page\/Solutions\/Linux\/Installing_and_Configuring\/topics\/concept\/c_configuring_linux_host_for_iscsi_with_flasharray.html<\/a><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">systemctl status iscsi<br \/>\n<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">systemctl enable iscsi<\/code><\/p>\n<p>Configure multipath.conf file<br \/>\n<a href=\"https:\/\/docs.portworx.com\/portworx-csi\/install\/prepare\/flash-array\">https:\/\/docs.portworx.com\/portworx-csi\/install\/prepare\/flash-array<\/a><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo vi \/etc\/multipath.conf<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">blacklist {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 devnode \"^pxd[0-9]*\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 devnode \"^pxd*\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 device {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 vendor \"VMware\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 product \"Virtual disk\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n}\r\n\r\ndefaults {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 polling_interval\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 find_multipaths \"on\"\r\n}\r\n\r\ndevices {\r\n\u00a0\u00a0\u00a0 device {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 vendor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"NVME\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 product\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Pure Storage FlashArray\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path_selector\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"queue-length 0\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path_grouping_policy\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 group_by_prio\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 prio\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ana\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 failback\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 immediate\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fast_io_fail_tmo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 user_friendly_names\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 no\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 no_path_retry\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 features\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dev_loss_tmo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 60\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 device {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 vendor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"PURE\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 product\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"FlashArray\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path_selector\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"service-time 0\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hardware_handler\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"1 alua\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path_grouping_policy\u00a0\u00a0\u00a0\u00a0 group_by_prio\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 prio\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 alua\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 failback\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 immediate\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path_checker\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tur\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fast_io_fail_tmo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 user_friendly_names\u00a0\u00a0\u00a0\u00a0\u00a0 no\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 no_path_retry\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 features\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dev_loss_tmo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 600\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">systemctl restart multipathd.service<\/code><\/p>\n<p><strong>Toto je kritick\u00e1 \u010d\u00e1st <\/strong>&#8211; nody mus\u00ed b\u00fdt schopny ud\u011blat automaticky login na iSCSI target porty pole a to i po restartu! Ubundu m\u00e1 default manual login!<\/p>\n<h5>Zji\u0161t\u011bn\u00ed IQN initiator adapt\u00e9ru nodu:<\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cat \/etc\/iscsi\/initiatorname.iscsi<\/code><\/p>\n<p>pokud maj\u00ed nody shodn\u00fd initiator, je pot\u0159eba upravit na unik\u00e1tn\u00ed. Bu\u010f manu\u00e1ln\u011b nebo takto:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">echo \"InitiatorName=`\/sbin\/iscsi-iname`\" &gt; \/etc\/iscsi\/initiatorname.iscsi<\/code><\/p>\n<p>p\u0159i zm\u011bn\u011b IQN restart iscsi<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">systemctl restart iscsi<\/code><\/p>\n<h5><strong>Vytvo\u0159it host z\u00e1znamy na poli bu\u010f pomoc\u00ed GUI nebo CLI<\/strong><br \/>\nNa poli pro v\u0161echny hosty:<\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">purehost create &lt;Linux hostname&gt;<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">purehost setattr --addiqnlist &lt;IQN number&gt; &lt;Linux hostname&gt;<\/code><\/p>\n<p>pro v\u0161echny host nody, IQN viz v\u00fd\u0161e pro ka\u017ed\u00fd node ze souboru \/etc\/iscsi\/initiatorname.iscsi<\/p>\n<p>voliteln\u011b lze d\u00e1t hosty do stejn\u00e9 host grupy:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">purehgroup create --hostlist pxcsi1,pxcsi2,pxcsi3,pxcsi4 pxcsi<\/code><\/p>\n<h5>Vytvo\u0159en\u00ed test LUNu a p\u0159ipojen\u00ed k host\u016fm:<\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">purevol create pxcsi-test-vol 16GB<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">purevol connect pxcsi-test-vol --hgroup pxcsi<\/code><\/p>\n<p>Na v\u0161ech nodech (jako root, jinak p\u0159ed v\u0161e sudo):<\/p>\n<p>Pokud m\u00e1 host dedikovan\u00fd interface pro ISCSI, chceme, aby ISCSI provoz \u0161el pouze p\u0159es tento interface. V Arrow LABU je to s\u00ed\u0165 vD-iSCSI-VM (192.168.220.0\/24) a VM m\u00e1 interface do t\u00e9to s\u00edt\u011b ens34<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ip address show<\/code><\/p>\n<p>Vytvo\u0159en\u00ed jm\u00e9na a iface pro iscsi a p\u0159id\u00e1n\u00ed IQN z \/etc\/iscsi\/initiatorname.iscsi :<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m iface -I ens34 -o new<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m iface -I ens34 -o update -n iface.initiatorname -v &lt;IQN number&gt;<br \/>\n<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m iface<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/linux_iscsiadm_iface.png\" \/><\/p>\n<p>Na poli:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pureport list<\/code><\/p>\n<p>Na v\u0161ech nodech &#8211; IP iSCSI port z pureport:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m discovery -t st -p &lt;FlashArray iSCSI IP&gt;:3260<\/code><\/p>\n<p>login na v\u0161echny iSCSI target porty &#8211; NA V\u0160ECHNY IP z p\u0159edchoz\u00edho discovery:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m node -p &lt;FlashArray iSCSI IP&gt; --login<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/linux_iscsiadm_mode.png\" \/><\/p>\n<p><strong>Nyn\u00ed by m\u011bl b\u00fdt vid\u011bt testovac\u00ed LUN z pole<\/strong><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">multipath -ll<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/linux_multipath_ll.png\" \/><\/p>\n<p>automatick\u00fd login k targetu po bootu (nezafungovalo)<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m node -L automatic<\/code><\/p>\n<p>toto zafungovalo:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m node --targetname &lt;IQN Pure FlashArray target&gt; -o update -n node.startup -v automatic<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/iscsiadm_mode_target.png\" \/><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">iscsiadm -m node --op show | grep startup<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/iscsiadm_mode_show.png\" \/><\/p>\n<h4><strong>Set up user access in FlashArray<\/strong><\/h4>\n<p><a href=\"https:\/\/docs.portworx.com\/portworx-csi\/install\/prepare\/flash-array\">https:\/\/docs.portworx.com\/portworx-csi\/install\/prepare\/flash-array<\/a><\/p>\n<p>Pomoc\u00ed GUI nebo CLI vytvo\u0159it na poli u\u017eivatele se storage_admin pr\u00e1vy, vytvo\u0159it API kl\u00ed\u010d<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pureadmin create --role storage_admin pxcsi<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pureadmin create --api-token pxcsi<\/code><\/p>\n<h5><strong>Create pure.json file<\/strong><\/h5>\n<p>&lt;fa-management-endpoint&gt; m\u016f\u017ee b\u00fdt jak management IP pole, tak hostname, pokud jej lze resolvovat z host nod\u016f k8s clusteru. API token u\u017eivatele se storage_admin pr\u00e1vy, viz. p\u0159edchoz\u00ed bod.<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">vi pure.json<\/code><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n\u00a0 \"FlashArrays\": [\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"MgmtEndPoint\": \"&lt;fa-management-endpoint&gt;\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"APIToken\": \"&lt;fa-api-token&gt;\"\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 ]\r\n}<\/pre>\n<h5><strong>Vytvo\u0159en<\/strong><strong>\u00ed<\/strong><strong> namespace pro Portworx a secret s API kl<\/strong><strong>\u00ed<\/strong><strong>\u010dem pro p\u0159ipojen<\/strong><strong>\u00ed<\/strong><strong> k poli<\/strong><\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl create namespace portworx<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl create secret generic px-pure-secret --namespace portworx --from-file=pure.json<\/code><\/p>\n<h4><strong>Instalace Portworx CSI<\/strong><\/h4>\n<p><a href=\"https:\/\/docs.portworx.com\/portworx-csi\/install\/install-portworx-csi\">https:\/\/docs.portworx.com\/portworx-csi\/install\/install-portworx-csi<\/a><\/p>\n<h5>Generov\u00e1n\u00ed K8s manifestu:<\/h5>\n<p><a href=\"https:\/\/central.portworx.com\/\">https:\/\/central.portworx.com\/<\/a><\/p>\n<p>PX-CSI Version \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 25.2.0<br \/>\nDistribution Name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 None<br \/>\nK8s Version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1.30.10<br \/>\n(kubectl version &#8211;short 2&gt;&amp;1 || kubectl version) | awk -Fv &#8218;\/Server Version: \/ {print $3}&#8216;<br \/>\nNamespace\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 portworx<br \/>\nCluster Name Prefix\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pxcsi<br \/>\nSAN\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iSCSI<br \/>\nStarting Port\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 9001<br \/>\nTelemetry\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Enabled<br \/>\nKVDB Device\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Default<br \/>\nEnvironment Var\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PURE_ISCSI_ALLOWED_IFACES\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ens34<br \/>\nUse Custom Registry\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 not selected<\/p>\n<p>Pozn\u00e1mka:<\/p>\n<p>Default KVDB device znamen\u00e1, \u017ee si Portworx oper\u00e1tor b\u011bhem instalace vytvo\u0159\u00ed na poli volume<\/p>\n<p>pxcloudrive-nnnnnnnnnn o velikosti 32GB pro ka\u017ed\u00fd worker node a namapuje jej. Mus\u00ed tedy bezpodm\u00edne\u010dn\u011b fungovat p\u0159ipojen\u00ed na iSCSI target pole a to i po rebootu. Jinak instalace vis\u00ed na nemo\u017enosti vytvo\u0159it KVDB device nebo implementovat datab\u00e1zi.<\/p>\n<p>PURE_ISCSI_ALLOWED_IFACES povol\u00ed pro iSCSI p\u0159enos pouze pro tento\/tyto iface. Mus\u00ed b\u00fdt definov\u00e1n p\u0159es iscsiadm viz. p\u0159edchoz\u00ed sekce!!!<\/p>\n<h5><strong>Deploy operator:<\/strong><\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl apply -f 'https:\/\/install.portworx.com\/25.2.0?comp=pxoperator&amp;oem=px-csi&amp;kbver=1.30.10&amp;ns=portworx'<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get pods -n portworx<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">root@pxcsi1:\/home\/pxadmin# kubectl get pods -n portworx -o wide | grep -e portworx -e px<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">portworx-operator-54d9bc6fcf-99spq\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\/1\u00a0\u00a0\u00a0\u00a0 Running\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2 (58m ago)\u00a0\u00a0\u00a0\u00a0\u00a0 108m\u00a0\u00a0 10.10.6.4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pxcsi2\u00a0\u00a0 &lt;none&gt;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;none&gt;<\/code><\/p>\n<h5><strong>Deploy Portworx CSI:<\/strong><\/h5>\n<p><strong>pot<\/strong><strong>\u00e9<\/strong><strong>, co je hotov<\/strong><strong>\u00fd<\/strong><strong> deployment oper<\/strong><strong>\u00e1<\/strong><strong>toru!<br \/>\n<\/strong>Bu\u010f pomoc\u00ed vygenerovan\u00e9ho odkazu nebo lze download spec a ulo\u017eit jako json file a ud\u011blat deployment pomoc\u00ed n\u011bj.<\/p>\n<p>vygenerovan\u00fd odkaz (p\u0159\u00edklad):<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl apply -f 'https:\/\/install.portworx.com\/25.2.0?oem=px-csi&amp;operator=true&amp;ce=pure&amp;csi=true&amp;stork=false&amp;mon=true&amp;promop=true&amp;kbver=1.30.10&amp;ns=portworx&amp;c=pxcsi-1a3f9179-b023-4b64-a960-28dfc460f07b&amp;r=9001&amp;pureSanType=ISCSI&amp;tel=true&amp;e=PURE_ISCSI_ALLOWED_IFACES%3D%22ens34%22'<\/code><\/p>\n<p>nebo pomoc\u00ed<br \/>\nportworx-csi.json (p\u0159\u00edklad)<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\"># SOURCE: https:\/\/install.portworx.com\/25.2.0?oem=px-csi&amp;operator=true&amp;ce=pure&amp;csi=true&amp;stork=false&amp;mon=true&amp;promop=true&amp;kbver=1.30.10&amp;ns=portworx&amp;c=pxcsi-1a3f9179-b023-4b64-a960-28dfc460f07b&amp;r=9001&amp;pureSanType=ISCSI&amp;tel=true&amp;e=PURE_ISCSI_ALLOWED_IFACES%3D%22ens34%22\r\nkind: StorageCluster\r\napiVersion: core.libopenstorage.org\/v1\r\nmetadata:\r\n\u00a0 name: pxcsi-1a3f9179-b023-4b64-a960-28dfc460f07b\r\n\u00a0 namespace: portworx\r\n\u00a0 annotations:\r\n\u00a0\u00a0\u00a0 portworx.io\/install-source: \"https:\/\/install.portworx.com\/25.2.0?oem=px-csi&amp;operator=true&amp;ce=pure&amp;csi=true&amp;stork=false&amp;mon=true&amp;promop=true&amp;kbver=1.30.10&amp;ns=portworx&amp;c=pxcsi-1a3f9179-b023-4b64-a960-28dfc460f07b&amp;r=9001&amp;pureSanType=ISCSI&amp;tel=true&amp;e=PURE_ISCSI_ALLOWED_IFACES%3D%22ens34%22\"\r\n\u00a0\u00a0\u00a0 portworx.io\/misc-args: \"--oem px-csi\"\r\nspec:\r\n\u00a0 image: portworx\/oci-monitor:25.2.0\r\n\u00a0 imagePullPolicy: Always\r\n\u00a0 kvdb:\r\n\u00a0\u00a0\u00a0 internal: true\r\n\u00a0 cloudStorage:\r\n\u00a0\u00a0\u00a0 kvdbDeviceSpec: size=32\r\n\u00a0 stork:\r\n\u00a0\u00a0\u00a0 enabled: false\r\n\u00a0 csi:\r\n\u00a0\u00a0\u00a0 enabled: true\r\n\u00a0 monitoring:\r\n\u00a0\u00a0\u00a0 telemetry:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 enabled: true\r\n\u00a0\u00a0\u00a0 prometheus:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 enabled: true\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 exportMetrics: true\r\n\u00a0 env:\r\n\u00a0 - name: PURE_FLASHARRAY_SAN_TYPE\r\n\u00a0\u00a0\u00a0 value: \"ISCSI\"\r\n\u00a0 - name: \"PURE_ISCSI_ALLOWED_IFACES\"\r\n\u00a0\u00a0\u00a0 value: \"ens34\"<\/pre>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl apply -f portworx-csi.json<\/code><\/p>\n<h5><strong>Monitoring instalace:<\/strong><\/h5>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get storagecluster -n portworx<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get pods -n portworx -o wide | grep -e portworx -e px<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/virtualguru.cz\/wp-content\/uploads\/2025\/06\/kubectl_pods_portworx.png\" \/><\/p>\n<p>pokud n\u011bjak\u00fd pod je v crashloop mode, pak<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl describe &lt;pod name&gt; -n portworx<\/code><\/p>\n<p><strong>po <\/strong><strong>\u00fa<\/strong><strong>sp\u011b\u0161n<\/strong><strong>\u00e9<\/strong><strong> instalaci je na worker nodech dostupn<\/strong><strong>\u00fd<\/strong><strong> p\u0159<\/strong><strong>\u00ed<\/strong><strong>kaz pxctl<\/strong><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/opt\/pwx\/bin\/pxctl<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pxctl status<\/code><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pxctl license<\/code><\/p>\n<p>Instalace Portworx CSI je \u00fasp\u011b\u0161n\u011b u konce!<\/p>","protected":false},"excerpt":{"rendered":"<p>Dokumentace Portworx: https:\/\/docs.portworx.com\/portworx-csi Dokumentace Ubuntu: https:\/\/documentation.ubuntu.com\/server\/ Po\u017eadavky: \u00a0https:\/\/docs.portworx.com\/portworx-csi\/system-requirements Zm\u011bny oproti po\u017eadavk\u016fm:worker node: min. 8GB RAM (testov\u00e1no s 16GB), min 4x vCPU se 4GB RAM nelze&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/virtualguru.cz\/en\/2025\/06\/25\/instalace-portworx-csi-driver-25-2-s-flasharray-purity-6-5-5-na-ubuntu-24-04-1-lts-server-docker-26-1-3-k8s-1-30-10\/\">Continue Reading<span class=\"screen-reader-text\">Installation of Portworx CSI driver 25.2 with FlashArray (Purity 6.5.5) on Ubuntu 24.04.1 LTS server + Docker 26.1.3 + K8s 1.30.10<\/span> <i class=\"fas fa-angle-right\"><\/i><\/a><\/div>","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"iawp_total_views":54,"footnotes":""},"categories":[51,70],"tags":[74,75,73,52,71,72],"class_list":["post-1740","post","type-post","status-publish","format-standard","hentry","category-k8s","category-purestorage","tag-csi","tag-docker","tag-flasharray","tag-k8s","tag-portworx","tag-ubuntu","entry"],"_links":{"self":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/comments?post=1740"}],"version-history":[{"count":9,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1740\/revisions"}],"predecessor-version":[{"id":1756,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/posts\/1740\/revisions\/1756"}],"wp:attachment":[{"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/media?parent=1740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/categories?post=1740"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualguru.cz\/en\/wp-json\/wp\/v2\/tags?post=1740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}