ä»åã®è¨äºã¯ååã®è¨äºã®ç¶ãã«ãªãã¾ããååã¯Fedora 36 Serverã§MicroShiftãåããã¦ã¿ã¾ããã ä»åã¯Fedora 36 IoT Editionã§MicroShiftãåããã¦ã¿ã¾ãã
Fedora IoT Editionã¯ã©ãºãã¤ã®ãããªARMãã¼ããIoTæ©å¨åãã«ãã«ããããFedoraã§ãã ä¸è¬çãªæ§æã®LinuxãããIoTæ©å¨ã«ç¹åããLinuxãåããã»ããã©ãºãã¤ã«ã¯è¯ãã¨æãã®ã§ã ä»å試ãã¦ã¿ããã¨ã«ãã¾ããã
ããã¤ã¹ã®ç¢ºèª
ã¾ãã¯ããã¤ã¹ã®ç¢ºèªãmicroSDãã¼ãã§Fedora Serverãèµ·åãã¦ãSDã«ã¼ããªã¼ãã¼ãåãä»ãã¦ãã¾ãã å³ã¯ååã®ä½¿ãã¾ããã§ãã
æå ã®ç°å¢ã§ã¯sdaã該å½ã®ããã¤ã¹ã¿ããã§ãã
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 1 29.7G 0 disk ââsda1 8:1 1 501M 0 part ââsda2 8:2 1 1G 0 part ââsda3 8:3 1 28.2G 0 part mmcblk0 179:0 0 29.7G 0 disk ââmmcblk0p1 179:1 0 600M 0 part /boot/efi ââmmcblk0p2 179:2 0 1G 0 part /boot ââmmcblk0p3 179:3 0 5.4G 0 part â ââfedora_fedora-root 253:0 0 28.1G 0 lvm / ââmmcblk0p4 179:4 0 1K 0 part ââmmcblk0p5 179:5 0 22.7G 0 part ââfedora_fedora-root 253:0 0 28.1G 0 lvm / zram0 252:0 0 7.6G 0 disk [SWAP]
次ã¯sfdisk
ã使ã£ããã¼ãã£ã·ã§ã³ã¯ãªã¢ã®ä¾ã§ããããã¤ã¹ãééããªãããã«æ°ãã¤ãã¾ããäºåã«ãã©ã¼ãããæ¸ã¿ã®å ´åã¯ã¹ããããã¾ãã
$ sudo sfdisk --delete /dev/sda ãã¼ãã£ã·ã§ã³æ å ±ãå¤æ´ããã¾ããã ioctl() ãå¼ã³åºãã¦ãã¼ãã£ã·ã§ã³æ å ±ãåèªã¿è¾¼ã¿ãã¾ãã ãã£ã¹ã¯ãåæãã¦ãã¾ãã
ã¤ã¡ã¼ã¸ã®æ¸ãè¾¼ã¿
ã³ãã³ããå®è¡ãã¦ãFedora IoTã¤ã¡ã¼ã¸ãæ¸ãè¾¼ã¿ã¾ããæå®ããå ¬ééµã¯ãã¼ãã¢ãä½ãããæ¢åã®ãã¼ãã¢ã®å ¬ééµãæå®ãã¦ã¤ã¡ã¼ã¸ä½æãå®è¡ãã¾ãã ãã®ãã¼ã«ã«ããããã¼ãã£ã·ã§ã³ã®æ¡å¤§ã¾ã§ã®å¦çã¯å ¨é¨èªåã§è¡ã£ã¦ããã¾ãã
$ cd ~/fedoraiot36 $ sudo arm-image-installer \ --target=rpi4 \ --image=Fedora-IoT-36-20220618.0.aarch64.raw.xz \ --resizefs \ --addkey=id_rsa.pub \ --media=/dev/sda ===================================================== = Selected Image: = Fedora-IoT-36-20220618.0.aarch64.raw.xz = Selected Media : /dev/sda = U-Boot Target : rpi4 = Root partition will be resized = SSH Public Key id_rsa.pub will be added. ===================================================== ***************************************************** ***************************************************** ******** WARNING! ALL DATA WILL BE DESTROYED ******** ***************************************************** ***************************************************** Type 'YES' to proceed, anything else to exit now = Proceed? YES = Writing: ... = Installation Complete! Insert into the rpi4 and boot.
ãã°ã¤ã³
ã¤ã¡ã¼ã¸æ¸ãè¾¼ã¿ãçµãã£ãããRaspberry Pi 4ã®é»æºãåã£ã¦ãmicroSDãå ¥ãæ¿ãã¦èµ·åãã¾ãã ãã°ã¤ã³ã¯rootã¦ã¼ã¶ã¼ã§è¡ãã¾ããIPã¢ãã¬ã¹ã¯DHCPãµã¼ãã¼ããä¾çµ¦ãããã¯ãã§ãã
% ssh -i ~/.ssh/id_rsa [email protected] ... Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.0.55' (ED25519) to the list of known hosts. Script '01_update_platforms_check.sh' FAILURE (exit code '1'). Continuing... Boot Status is GREEN - Health Check SUCCESS
OSã®ã¢ãããã¼ã
æåã«OSã®ã¢ãããã¼ããè¡ãã¾ããyumãdnfã§ã¯ãªãã¦rpm-ostreeã使ãã¾ãã ã¢ããã°ã¬ã¼ããçµããã¨ããã®ã³ãã³ããå®è¡ãã¦åèµ·åããã¨è¡¨ç¤ºããã¾ãã
# rpm-ostree upgrade Staging deployment... done ... Run "systemctl reboot" to start a reboot
åèµ·åãããã¨ã§rpm-ostreeãã·ã¹ãã ã®å¤æ´ãã³ãããããããã§ãï¼åé¡ãããã°å¾©å ãã§ããããã§ãï¼ã åèµ·åå¾ãæ°ããã½ããã¦ã§ã¢ã®ç·¨æã§ã·ã¹ãã ãå©ç¨ã§ãã¾ãã
ãã¹ãåã®è¨å®ï¼å ±éï¼
èµ·åãããããã°ã¤ã³ãã¦ä»¥ä¸ã®ããã«ã³ãã³ããå®è¡ãã¦ãã¹ãåãè¨å®ãã¾ãã nmcliã³ãã³ãã¯ç¨æããã¦ããããã§ãã
# nmcli general hostname microshift.tooyama.org # hostname -A microshift.tooyama.org
CRI-Oã®ã¤ã³ã¹ãã¼ã«
CRI-Oã®ã¤ã³ã¹ãã¼ã«ã«ã¤ãã¦ãrpm-ostreeã³ãã³ãã使ãã¾ãã CRI-Oï¼ã¨ãå¾ã§ä½¿ãã®ã§wgetï¼ãã¤ã³ã¹ãã¼ã«ãã¾ãã ãã®ä»å¿ è¦ãªããã±ã¼ã¸ãããã°è¿½å ãã¦ããã¾ãããããã§éè¦ãªãã¤ã³ãã¯å¿ è¦ãªãããã±ã¼ã¸ã¯æ¥µåãããªãã¨ããæã§ãã
ãªãããªãã¸ããªã¼ã«microshiftããã±ã¼ã¸ããããããªã®ã§ãããä»åã¯ãã¡ãã¯ä½¿ãã¾ããã ã¤ã³ã¹ãã¼ã«å¾ã¯åèµ·åãå¿ è¦ã§ãã
# rpm-ostree install cri-o wget ... Changes queued for next boot. Run "systemctl reboot" to start a reboot # systemctl reboot
CRI-Oã¤ã³ã¹ãã¼ã«ã®ãã¤ã³ã
rpm-ostree install
ãå®è¡ããå ´åã¯ããã®æç¹ã§ææ°ã®ããã±ã¼ã¸ããªãã¸ããªã¼ãããã¦ã³ãã¼ããã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
ãã¼ã¸ã§ã³ãæå®ãããå ´åã¯ã次ã®ããã«ããã±ã¼ã¸ã¢ã¸ã¥ã¼ã«ã追å ãã¦ã¤ã³ã¹ãã¼ã«ããã°è¯ãããã§ãã
ç®çã®ãã¼ã¸ã§ã³ããªãå ´åãããã¾ãã®ã§ããã®ç¹ã¯æ³¨æã§ãã
[08/23/2022 追è¨] æé ãæãã¦ãã¾ããã®ã§è¿½è¨ãã¾ããï¼ååã®curlé¨åã追è¨ç®æï¼ã
# curl -L -o /etc/yum.repos.d/fedora-modular.repo https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/fedora-modular.repo # curl -L -o /etc/yum.repos.d/fedora-updates-modular.repo https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/fedora-updates-modular.repo # curl -L -o /etc/yum.repos.d/group_redhat-et-microshift-fedora-36.repo https://copr.fedorainfracloud.org/coprs/g/redhat-et/microshift/repo/fedora-36/group_redhat-et-microshift-fedora-36.repo # rpm-ostree ex module enable cri-o:1.23 # rpm-ostree install cri-o cri-tools
CRI-Oã®èµ·å
èµ·åå¾ãCRI-Oãµã¼ãã¹ãèµ·åãã¾ãã
# systemctl enable --now crio Created symlink /etc/systemd/system/cri-o.service â /usr/lib/systemd/system/crio.service. Created symlink /etc/systemd/system/multi-user.target.wants/crio.service â /usr/lib/systemd/system/crio.service. # systemctl status crio|grep Active Active: active (running) since Tue 2022-08-09 06:29:11 UTC; 1min 15s ago
ãã®ãã¨ã®æµãã¯ãFedora 36 Serverã§MicroShiftããããã¤ããæ¹æ³ã¨åæ§ã§ãã
- firewall-cmdã§å¿ è¦ãªãã¼ãéæ¾
- MicroShiftãã¤ããªã¼ããã¦ã³ãã¼ã
- MicroShiftãã¤ããªã¼ã«å®è¡æ¨©éãã¤ãã
- MicroShiftãå®è¡
ã¡ãã£ã¨å¼·å¼ãªã®ã§ãããCRI-O 1.24ã§OpenShift 4.8 (K8s 1.21ãã¼ã¹)ãåãããããã§ãã
# cat /etc/os-release |grep VERSION= VERSION="36.20220807.0 (IoT Edition)" REDHAT_BUGZILLA_PRODUCT_VERSION=36 REDHAT_SUPPORT_PRODUCT_VERSION=36 OSTREE_VERSION='36.20220807.0' # oc get no -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME microshift.tooyama.org Ready <none> 48m v1.21.0 192.168.0.55 <none> Fedora Linux 36.20220807.0 (IoT Edition) 5.18.16-200.fc36.aarch64 cri-o://1.24.1 # oc get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system kube-flannel-ds-ng2z8 1/1 Running 0 4m15s kubevirt-hostpath-provisioner kubevirt-hostpath-provisioner-jf5b6 1/1 Running 0 4m5s openshift-dns dns-default-d7phk 2/2 Running 0 4m16s openshift-dns node-resolver-jpwbj 1/1 Running 0 4m16s openshift-ingress router-default-85bcfdd948-wxw2q 1/1 Running 0 4m19s openshift-service-ca service-ca-7764c85869-zml2d 1/1 Running 0 7s
ããã±ã¼ã¸ã¤ã³ã¹ãã¼ã«æãã¾ãã«ããã¾ããããservice-ca
ã¨ããPodãCrashLoopBackOff
ã«ãªã£ã¦ãã¾ãå ´åã¯ãã¿ã¤ãã³ã°ãåé¡ã ã£ãå ´åã¯ãã®Podãåé¤ãããã¨ã§åä½æããã¦Running
ã«ãªãã¾ããä½åº¦ãåãç¾è±¡ãçºçããå ´åã¯ããã®åå ãæ¢ãå¿
è¦ãããã¾ãããã
# oc get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system kube-flannel-ds-ng2z8 1/1 Running 0 3m46s kubevirt-hostpath-provisioner kubevirt-hostpath-provisioner-jf5b6 1/1 Running 0 3m36s openshift-dns dns-default-d7phk 2/2 Running 0 3m47s openshift-dns node-resolver-jpwbj 1/1 Running 0 3m47s openshift-ingress router-default-85bcfdd948-wxw2q 1/1 Running 0 3m50s openshift-service-ca service-ca-7764c85869-xfz2h 0/1 CrashLoopBackOff 2 3m51s # oc delete po service-ca-7764c85869-xfz2h -n openshift-service-ca pod "service-ca-7764c85869-xfz2h" deleted # oc get po -n openshift-service-ca NAME READY STATUS RESTARTS AGE service-ca-7764c85869-zml2d 1/1 Running 0 2m56s
é©å½ã«Podã¨ãµã¼ãã¹ãä½ã£ã¦ãåä½ç¢ºèªããã¦ã¿ã¾ãã
# oc create deployment hello-pods --image=docker.io/nginx:stable-alpine deployment.apps/hello-pods created # oc expose deployment hello-pods --type=NodePort --port=80 service/hello-pods exposed # oc get svc hello-pods NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-pods NodePort 10.43.48.65 <none> 80:31943/TCP 24s # curl http://localhost:31943 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... # oc delete svc hello-pods && oc delete deployment hello-pods service "hello-pods" deleted deployment.apps "hello-pods" deleted
ãµã¼ãã¹ã¨ãã¦MicroShiftãå®è¡
OpenShift + Raspberry Piã¨MicroShift â Part 11: Raspberry Pi 4 with Fedora 35 Serverã®å 容ãåèã«ããã¨ããã¤ããªã¼ãå®è¡ããã®ã§ã¯ãªãMicroShiftãµã¼ãã¹ã¨ãã¦å®è¡ã§ãããã§ãã
ãã¤ã³ãã¯microshift
ããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ããããã®ããã±ã¼ã¸ã«å«ã¾ãããã¤ããªã¼ã¯ä½¿ããããã¦ã³ãã¼ããããã¤ããªã¼ãå®è¡ããããã«ãµã¼ãã¹ãã¡ã¤ã«ãä¿®æ£ããç¹ã§ãã
æå¾ã«è©¦ãã¦ã¿ããã¨æãã¾ããåºæ¬çãªæµãã¯ããã¾ã§ã¨ä¸ç·ãªã®ã§ãã³ãã³ãã®ã¿åæãã¦ããã¾ãã
nmcli general hostname microshiftshift.tooyama.org rpm-ostree upgrade systemctl reboot curl -L -o /etc/yum.repos.d/fedora-modular.repo https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/fedora-modular.repo curl -L -o /etc/yum.repos.d/fedora-updates-modular.repo https://src.fedoraproject.org/rpms/fedora-repos/raw/rawhide/f/fedora-updates-modular.repo curl -L -o /etc/yum.repos.d/group_redhat-et-microshift-fedora-36.repo https://copr.fedorainfracloud.org/coprs/g/redhat-et/microshift/repo/fedora-36/group_redhat-et-microshift-fedora-36.repo rpm-ostree ex module enable cri-o:1.23 rpm-ostree install cri-o cri-tools microshift systemctl reboot curl -L https://github.com/openshift/microshift/releases/download/4.8.0-0.microshift-2022-04-20-182108/microshift-linux-arm64 > /usr/local/bin/microshift chmod +x /usr/local/bin/microshift cp /usr/lib/systemd/system/microshift.service /etc/systemd/system/microshift.service sed -i "s|/usr/bin|/usr/local/bin|" /etc/systemd/system/microshift.service systemctl daemon-reload systemctl enable crio --now systemctl enable microshift --now
ã¡ãªã¿ã«ãããã§ä½¿ãããmicroshift.service
ã®ä¸èº«ã¯ã次ã®ãããªå
容ãæ¸ããã¦ãã¾ããã
[Unit] Description=MicroShift Wants=network-online.target crio.service After=network-online.target crio.service [Service] WorkingDirectory=/usr/local/bin/ ExecStart=microshift run Restart=always User=root [Install] WantedBy=multi-user.target
ãã°ãã(注1)å¾ ã£ã¦ããã¨ããã®æ¹æ³ã§ãMicroShiftãåä½ãããã¨ããããã¾ããã
# oc get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system kube-flannel-ds-bg2p7 1/1 Running 0 16m kubevirt-hostpath-provisioner kubevirt-hostpath-provisioner-nqlzh 1/1 Running 0 11m openshift-dns dns-default-c9k6g 2/2 Running 0 16m openshift-dns node-resolver-v7hv2 1/1 Running 0 16m openshift-ingress router-default-85bcfdd948-f4fz7 1/1 Running 0 16m openshift-service-ca service-ca-7764c85869-4hds8 1/1 Running 0 16m # oc get no NAME STATUS ROLES AGE VERSION minishift.tooyama.org Ready <none> 16m v1.21.0 # oc create deployment hello-pods --image=docker.io/nginx:stable-alpine deployment.apps/hello-pods created # oc expose deployment hello-pods --type=NodePort --port=80 service/hello-pods exposed # oc get svc hello-pods NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-pods NodePort 10.43.220.204 <none> 80:32036/TCP 3m16s
ã¨ããããã§ãä»åã¯Fedora 36 IoT Editionã使ã£ã¦MicroShiftãåããã¦ã¿ã¾ããã
Raspberry Pi 4Bã§æ®éã®Fedora Serverã使ãã®ã¨æ¯ã¹ã¦ãIoT Editionã®ã»ããå®å®ãã¤ä½ã¡ã¢ãªã¼ã§åä½ããã®ã確èªãã¾ããã ãã£ã¹ã¯ã¢ã¯ã»ã¹ã©ã³ãããã¾ãé »ç¹ã«ç¹ç¯ããªãã¨ããããè¦ãã«ãçµæ§ããªã±ã¼ããªmicroSDã«ãåªããããªæ°ããã¾ããã MicroShiftãç¹ã«åé¡ãªãåä½ãã¾ãããã
ã©ãºãã¤åãã®OSã¨ãã¦ãFedora 36 IoT Editionãã¯ããRaspberry Pi OSãããDebianãããUbuntuï¼Not Ubuntu Coreï¼ãã«æ¬¡ãå©ç¨OSã®åè£ã¨ãã¦è¯ãã®ããããã¾ãããæªã ã¡ãã£ã¨è§¦ã£ãããããªã®ã§ãããã¡ãã£ã¨èª¿æ»ã¯å¿ è¦ã§ã¯ããã¾ããã
(注1) çµæ§ãªæéå¾
ã£ã¦ããéãps aux
ã¨ãsystemctl status microshift
ãcrictl pods
ãcrictl images
ãtop
ãªã©ã®ã³ãã³ãã使ã£ã¦ç¶æ³ã確èªãã¦ãã¾ããã