https://kosagi.com/w/api.php?action=feedcontributions&user=Xobs&feedformat=atomStudio Kousagi Wiki - User contributions [en]2024-03-19T08:42:04ZUser contributionsMediaWiki 1.31.0https://kosagi.com/w/index.php?title=Main_Page&diff=1930Main Page2018-01-01T08:31:53Z<p>Xobs: /* Tomu */</p>
<hr />
<div>Welcome to Sutajio Ko-Usagi's wiki! <br />
<br />
==Novena==<br />
[[Novena Main Page]] -- open hardware compute platform<br />
<br />
==Chibitronics==<br />
[http://chibitronics.com Chibitronics] -- circuit stickers and more<br><br />
[https://chibitronics.com//wiki/index.php?title=Main_Page Tech Wiki]<br />
<br />
==Kovan==<br />
[[Kovan Main Page]] -- open hardware robotics platform<br><br />
<br />
==Tomu==<br />
[https://tomu.im/ Tomu main page] -- simple, open, and tiny USB widget<br><br />
<br />
==NeTV2==<br />
[https://alphamaxmedia.com/w/index.php?title=NeTV2 NeTV2 Main page] (via Alphamax LLC) -- open hardware video processing device<br><br />
<br />
==NeTV==<br />
[[NeTV Main Page]] -- open hardware HDMI video overlay device<br><br />
[[DIY Plastics Kit]]<br><br />
[[Taking NeTV Apart]]<br><br />
[[NeTV Support]]<br><br />
<br />
==Fernvale==<br />
[[Fernvale Main Page]]<br />
<br />
==Orchard==<br />
[[Orchard Main Page]]<br />
<br />
==About== <br />
Sutajio Ko-usagi PTE LTD specializes in the production and support of open hardware products designed by [http://en.wikipedia.org/wiki/Andrew_Huang bunnie] of [http://bunniestudios.com bunniestudios]. While bunniestudios is an IP-oriented company, Sutajio Ko-usagi is an operations-oriented company, focused on the manufacturing and sales of hardware to OEMs and hobbyists. It is based in Singapore. This wiki is intended to support customers of products made by Sutajio Ko-Usagi.<br />
<br />
==Note to new Users==<br />
Account creation policy has been modified to require an explicit authorization step. You need to enter a bio to prove you are a human and not a bot. Sorry for the intrusion of privacy but the wiki was being overrun by spam.</div>Xobshttps://kosagi.com/w/index.php?title=Main_Page&diff=1929Main Page2018-01-01T08:31:43Z<p>Xobs: Add link to Tomu</p>
<hr />
<div>Welcome to Sutajio Ko-Usagi's wiki! <br />
<br />
==Novena==<br />
[[Novena Main Page]] -- open hardware compute platform<br />
<br />
==Chibitronics==<br />
[http://chibitronics.com Chibitronics] -- circuit stickers and more<br><br />
[https://chibitronics.com//wiki/index.php?title=Main_Page Tech Wiki]<br />
<br />
==Kovan==<br />
[[Kovan Main Page]] -- open hardware robotics platform<br><br />
<br />
==Tomu==<br />
[[https://tomu.im/ Tomu main page] -- simple, open, and tiny USB widget<br><br />
<br />
==NeTV2==<br />
[https://alphamaxmedia.com/w/index.php?title=NeTV2 NeTV2 Main page] (via Alphamax LLC) -- open hardware video processing device<br><br />
<br />
==NeTV==<br />
[[NeTV Main Page]] -- open hardware HDMI video overlay device<br><br />
[[DIY Plastics Kit]]<br><br />
[[Taking NeTV Apart]]<br><br />
[[NeTV Support]]<br><br />
<br />
==Fernvale==<br />
[[Fernvale Main Page]]<br />
<br />
==Orchard==<br />
[[Orchard Main Page]]<br />
<br />
==About== <br />
Sutajio Ko-usagi PTE LTD specializes in the production and support of open hardware products designed by [http://en.wikipedia.org/wiki/Andrew_Huang bunnie] of [http://bunniestudios.com bunniestudios]. While bunniestudios is an IP-oriented company, Sutajio Ko-usagi is an operations-oriented company, focused on the manufacturing and sales of hardware to OEMs and hobbyists. It is based in Singapore. This wiki is intended to support customers of products made by Sutajio Ko-Usagi.<br />
<br />
==Note to new Users==<br />
Account creation policy has been modified to require an explicit authorization step. You need to enter a bio to prove you are a human and not a bot. Sorry for the intrusion of privacy but the wiki was being overrun by spam.</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1928Kubernetes on Novena2017-06-21T01:05:07Z<p>Xobs: /* Installing Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
*Before you begin*: Write http://repo.novena.io/novena/images/novena-mmc-disk-r1.img to an SD card, e.g. using "dd".<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv lightdm gstreamer1.0-x ghostscript firefox-esr \<br />
sane-utils imagemagick-common eject emacs24 emacs libgstreamer-plugins-base1.0-0 \<br />
libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good hunspell-en-us \<br />
libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libavresample2 libavutil54 \<br />
libavcodec56 libavformat56 libsane libswscale3 libgs9 libgs9-common libjasper1 \<br />
libjbig2dec0 libfreetype6<br />
<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
apt-get install xfsprogs # btrfs isn't well supported yet by kubeadm<br />
mkfs.xfs /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
# Update /mnt/etc/fstab to point swap to /dev/sda2<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
==Resetting==<br />
<br />
To reset things, use "kubeadm reset", and clean up after the program.<br />
<br />
1. Reset<br />
kubeadm reset<br />
<br />
2. Clean up<br />
ip link delete flannel.1; rm -rf /var/lib/cni /run/flannel /etc/cni /var/lib/etcd; ifconfig cni0 down; brctl delbr cni0</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1927Palawan DVT2017-06-20T01:22:12Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED footprint and schematic symbol have mismatched leads, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO6''': The board is four layers. This is unnecessary. Make the board two layers.<br />
* '''ECO7''': The "Pair" button is not connected to a pin that can do ADC or IRQ. Move "Pair" to PTB7.<br />
* '''ECO8''': The LED is not hooked up to a pin that can do PWM. Move LED to PTA12.<br />
* '''ECO9''': It is unclear whether code is running on Tx or Rx. Change R101 from 22k to 2.2k.<br />
* '''ECO10''': The ESD diode's footprint and schematic symbol have swapped leads. Swap the pin number mapping.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO4''': All diodes have their schematic/pcb footprint pins swapped. Fix this.<br />
* '''ECO5''': Through-holes are not .1" spacing. See if it isn't possible to fix this.<br />
<br />
<br />
Pins:<br />
PAIR - IRQ, ADC (PTB7 is the only match)<br />
LED - High-current, PWM (PTA12 is the only match)<br />
DIO0 - IRQ (PTA10 is closest)</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1926Palawan DVT2017-06-16T01:32:27Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED footprint and schematic symbol have mismatched leads, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO6''': The board is four layers. This is unnecessary. Make the board two layers.<br />
* '''ECO7''': The "Pair" button is not connected to a pin that can do ADC or IRQ. Move "Pair" to PTB7.<br />
* '''ECO8''': The LED is not hooked up to a pin that can do PWM. Move LED to PTA12.<br />
* '''ECO9''': It is unclear whether code is running on Tx or Rx. Change R101 from 22k to 2.2k.<br />
* '''ECO10''': The ESD diode's footprint and schematic symbol have swapped leads. Swap the pin number mapping.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
<br />
Pins:<br />
PAIR - IRQ, ADC (PTB7 is the only match)<br />
LED - High-current, PWM (PTA12 is the only match)<br />
DIO0 - IRQ (PTA10 is closest)</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1925Palawan DVT2017-06-10T08:42:59Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED is backwards, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO6''': The board is four layers. This is unnecessary. Make the board two layers.<br />
* '''ECO7''': The "Pair" button is not connected to a pin that can do ADC or IRQ. Move "Pair" to PTB7.<br />
* '''ECO8''': The LED is not hooked up to a pin that can do PWM. Move LED to PTA12.<br />
* '''ECO9''': It is unclear whether code is running on Tx or Rx. Change R101 from 22k to 2.2k.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
<br />
Pins:<br />
PAIR - IRQ, ADC (PTB7 is the only match)<br />
LED - High-current, PWM (PTA12 is the only match)<br />
DIO0 - IRQ (PTA10 is closest)</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1924Palawan DVT2017-06-10T08:39:33Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED is backwards, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO6''': The board is four layers. This is unnecessary. Make the board two layers.<br />
* '''ECO7''': The "Pair" button is not connected to a pin that can do ADC or IRQ. Move "Pair" to PTB7.<br />
* '''ECO8''': The LED is not hooked up to a pin that can do PWM. Move LED to PTA12.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
<br />
Pins:<br />
PAIR - IRQ, ADC (PTB7 is the only match)<br />
LED - High-current, PWM (PTA12 is the only match)<br />
DIO0 - IRQ (PTA10 is closest)</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1923Palawan DVT2017-06-10T08:30:14Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED is backwards, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA11.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
* '''ECO6''': The board is four layers. This is unnecessary. Make the board two layers.<br />
* '''ECO7''': The "Pair" button is not connected to a pin that can do ADC or IRQ. Move "Pair" to PTA12.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA11.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1922Palawan DVT2017-06-10T05:38:03Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED is backwards, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''ECO4''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1921Palawan DVT2017-06-10T05:37:47Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* '''ECO1''': The LED is backwards, and should be flipped around.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* '''ECO3''': There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* '''EC04''': The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* '''ECO5''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* '''ECO1''': There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* '''ECO2''': RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* '''ECO3''': The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1920Palawan DVT2017-06-10T05:37:04Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
* *ECO1*: The LED is backwards, and should be flipped around.<br />
* *ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* *ECO3*: There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
* *EC04*: The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
* *ECO5*: The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
* *ECO1*: There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
* *ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
* *ECO3*: The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1919Palawan DVT2017-06-10T05:32:14Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
*ECO1*: The LED is backwards, and should be flipped around.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
*ECO3*: There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
*EC04*: The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
*ECO5*: The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
*ECO1*: There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1918Palawan DVT2017-06-10T05:30:20Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
*ECO1*: The LED is backwards, and should be flipped around.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA12.<br />
*ECO3*: There is a ground (and power) plane directly under the RFM69HW. This should be pulled back.<br />
*EC04*: The LP3982 footprint has no "Pin 1" marker. Add a Pin 1 marker.<br />
*ECO5*: The KL02 footprint has a non-obvious "Pin 1" marker. Make it clearer.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
*ECO1*: There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10, PTA11, or PTA12.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1917Palawan DVT2017-06-08T08:56:19Z<p>Xobs: </p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
*ECO1*: The LED is backwards, and should be flipped around.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10, PTA11, or PTA12.<br />
<br />
==Palawan Tx ECOs==<br />
<br />
*ECO1*: There is a stray via on the board. Run DRC prior to exporting to gerbers to repour copper.<br />
*ECO2*: RFM69HW DIO0 is connected to a pin that cannot generate an interrupt. Move DIO0 to PTA10, PTA11, or PTA12.</div>Xobshttps://kosagi.com/w/index.php?title=Palawan_DVT&diff=1916Palawan DVT2017-05-14T09:51:23Z<p>Xobs: Created page with "Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio. ==Palawan Rx ECOs== *ECO1*: The LED is backwards, and should be fl..."</p>
<hr />
<div>Palawan DVT represents a complete redesign. The main MCU has changed, and we now use a SoM for the radio.<br />
<br />
==Palawan Rx ECOs==<br />
<br />
*ECO1*: The LED is backwards, and should be flipped around.</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1915Kubernetes on Novena2017-05-03T09:50:58Z<p>Xobs: /* Installing Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
*Before you begin*: Write http://repo.novena.io/novena/images/novena-mmc-disk-r1.img to an SD card, e.g. using "dd".<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv lightdm<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
apt-get install xfsprogs # btrfs isn't well supported yet by kubeadm<br />
mkfs.xfs /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
# Update /mnt/etc/fstab to point swap to /dev/sda2<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
==Resetting==<br />
<br />
To reset things, use "kubeadm reset", and clean up after the program.<br />
<br />
1. Reset<br />
kubeadm reset<br />
<br />
2. Clean up<br />
ip link delete flannel.1; rm -rf /var/lib/cni /run/flannel /etc/cni /var/lib/etcd; ifconfig cni0 down; brctl delbr cni0</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1914Kubernetes on Novena2017-05-03T09:49:37Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
*Before you begin*: Write http://repo.novena.io/novena/images/novena-mmc-disk-r1.img to an SD card, e.g. using "dd".<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv lightdm<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
# Update /mnt/etc/fstab to point swap to /dev/sda2<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
==Resetting==<br />
<br />
To reset things, use "kubeadm reset", and clean up after the program.<br />
<br />
1. Reset<br />
kubeadm reset<br />
<br />
2. Clean up<br />
ip link delete flannel.1; rm -rf /var/lib/cni /run/flannel /etc/cni /var/lib/etcd; ifconfig cni0 down; brctl delbr cni0</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1913Kubernetes on Novena2017-05-02T10:53:19Z<p>Xobs: /* Using Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
==Resetting==<br />
<br />
To reset things, use "kubeadm reset", and clean up after the program.<br />
<br />
1. Reset<br />
kubeadm reset<br />
<br />
2. Clean up<br />
ip link delete flannel.1; rm -rf /var/lib/cni /run/flannel /etc/cni /var/lib/etcd; ifconfig cni0 down; brctl delbr cni0</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1912Kubernetes on Novena2017-05-02T09:10:40Z<p>Xobs: /* Using Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml | sed "s/amd64/arm/g" | kubectl create -f -</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1911Kubernetes on Novena2017-05-02T09:03:19Z<p>Xobs: /* Using Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
2. Deploy Heapster, to get more information on the dashboard:<br />
kubectl create -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml<br />
curl -sSL https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/standalone/heapster-controller.yaml | sed "s/amd64/arm/g" | kubectl create -f -</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1910Kubernetes on Novena2017-05-02T08:59:49Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1909Kubernetes on Novena2017-05-02T08:26:34Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1908Kubernetes on Novena2017-05-02T08:06:13Z<p>Xobs: /* Using Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==<br />
<br />
1. Deploy the dashboard.<br />
curl -sSL https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml | sed "s/amd64/arm/g" | kubectl create -f -</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1907Kubernetes on Novena2017-05-02T07:36:55Z<p>Xobs: /* Joining machines to the cluster */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs4 defaults 0 0<br />
<br />
3. Ensure public SSH keys are copied to all devices<br />
<br />
4. Set PasswordAuthentication to "no" in /etc/ssh/sshd_config<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1906Kubernetes on Novena2017-05-02T04:46:50Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
7. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
<br />
===Joining machines to the cluster===<br />
<br />
1. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
2. Copy over /etc/fstab<br />
10.0.246.13:/data /data nfs defaults 0 0<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1905Kubernetes on Novena2017-05-02T03:00:48Z<p>Xobs: /* Installing Kubernetes */</p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade<br />
apt-get install -y apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1904Kubernetes on Novena2017-03-22T07:28:52Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us. We need to specify version 0.7.0 because newer versions aren't compatible with Docker's new iptables rules.<br />
curl -sSL https://rawgit.com/coreos/flannel/v0.7.0/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1903Kubernetes on Novena2017-03-22T07:24:24Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.12.6-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1902Kubernetes on Novena2017-03-22T06:49:38Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines.<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1901Kubernetes on Novena2017-03-22T04:10:52Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1900Kubernetes on Novena2017-03-22T03:27:35Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get install -y network-manager<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1899Kubernetes on Novena2017-03-22T03:14:42Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
These steps assume you're starting from a base Novena image, such as the one found here on the Kosagi wiki.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1898Kubernetes on Novena2017-03-22T02:08:25Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1897Kubernetes on Novena2017-03-22T02:05:46Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove software that comes installed by default on Novena, but is unnecessary for servers.<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1896Kubernetes on Novena2017-03-22T02:02:02Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove unnecessary software<br />
apt-get remove -y --auto-remove --purge hexchat pidgin bluez bluez-tools bluez-hcidump \<br />
enigmail hexchat icedove iceweasel pavucontrol x11-xserver-utils xscreensaver \<br />
libbluetooth3 keychain xserver-xorg-video-modesetting arandr android-tools-adb \<br />
android-tools-fastboot android-tools-fsutils xfce4-goodies xfce4-power-manager \<br />
xfce4-mixer xfce4-terminal mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 \<br />
libqt5core5a libqt5widgets5 x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder \<br />
xfce4-notifyd xfce4-session xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi \<br />
xfonts-75dpi xfonts-scalable xfwm4 xfwm4-themes xinit xorg xorg-docs-core \<br />
libdrm-armada2-dbg libetnaviv-dev libetnaviv-dbg novena-disable-ssp novena-eeprom-gui \<br />
novena-firstrun xorg-novena xserver-xorg-video-armada xserver-xorg-video-armada-dbg \<br />
xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1895Kubernetes on Novena2017-03-22T01:47:36Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove unnecessary software<br />
apt-get purge hexchat pidgin bluez bluez-tools bluez-hcidump enigmail hexchat icedove \<br />
iceweasel pavucontrol x11-xserver-utils xscreensaver libbluetooth3 keychain \<br />
xserver-xorg-video-modesetting arandr android-tools-adb android-tools-fastboot \<br />
android-tools-fsutils xfce4-goodies xfce4-power-manager xfce4-mixer xfce4-terminal \<br />
mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 libqt5core5a libqt5widgets5 \<br />
x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder xfce4-notifyd xfce4-session \<br />
xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-scalable \<br />
xfwm4 xfwm4-themes xinit xorg xorg-docs-core libdrm-armada2-dbg libetnaviv-dev \<br />
libetnaviv-dbg novena-disable-ssp novena-eeprom-gui novena-firstrun xorg-novena \<br />
xserver-xorg-video-armada xserver-xorg-video-armada-dbg xserver-xorg-video-armada-etnaviv<br />
apt-get autoremove<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1894Kubernetes on Novena2017-03-22T01:45:04Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
0. Remove unnecessary software<br />
apt-get purge hexchat pidgin bluez bluez-tools bluez-hcidump enigmail hexchat icedove \<br />
iceweasel pavucontrol x11-xserver-utils xscreensaver libbluetooth3 keychain \<br />
xserver-xorg-video-modesetting arandr android-tools-adb android-tools-fastboot \<br />
android-tools-fsutils xfce4-goodies xfce4-power-manager xfce4-mixer xfce4-terminal \<br />
mousepad orage dbus-x11 irssi synaptic qalc libqt5gui5 libqt5core5a libqt5widgets5 \<br />
x11-apps x11-session-utils xbitmaps xfce4 xfce4-appfinder xfce4-notifyd xfce4-sesion \<br />
xfce4-settings xfdesktop4 xfdesktop4-data xfonts-100dpi xfonts-75dpi xfonts-scalable \<br />
xfwm4 xfwm4-themes xinit xorg xorg-docs-core libdrm-armada2-dbg libetnavivv-dev \<br />
libetnaviv-dbg novena-disable-ssp novevna-eeprom-gui novena-firstrun xorg-novena \<br />
xserver-xorg-video-armada xserver-xorg-video-armada-dbg xserver-xorg-video-armada-etnaviv<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1893Kubernetes on Novena2017-03-22T01:36:28Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh). If you need a specific version, you can list them with:<br />
apt-cache madison docker-engine<br />
<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine=1.13.1-0~debian-jessie \<br />
docker-compose="1.9.0-23" \<br />
docker-machine="0.9.0-39"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1892Kubernetes on Novena2017-03-22T01:24:25Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-jessie main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Definitive_GPIO_guide&diff=1891Definitive GPIO guide2017-03-18T10:53:30Z<p>Xobs: /* Linux Device Tree Naming Convention */</p>
<hr />
<div>=Mapping names to Numbers=<br />
GPIOs on the i.MX6 linux system are confusing, at best.<br />
<br />
There are several naming conventions at play.<br />
<br />
==Hardware Naming Convention==<br />
* Every ball on the physical i.MX6 chip has a "pad name" by Freescale.<br />
* Each ball has a unique alphanumeric identifier which maps it to a location in the BGA.<br />
* Each pad has a "canonical name". This is the name that is shown on the schematic symbol inside the part, next to the pin and pin number. It has no essential connection to the function's actual signal mapping.<br />
* The schematics assign a "net name" to the functional wire connected to the pad. This attempts to be a description of what the wire is actually used for and doesn't attempt to reconcile against the pad name in any way. <br />
<br />
There is a strict 1:1:1 mapping of balls to canonical names to net names. For example:<br />
<br />
* Ball C20 <-> Pad SD1_DAT1 <-> Net FPGA_EXP_ON (FPGA expansion power on)<br />
* Ball R6 <-> Pad GPIO_4 <-> Net SD2_CD (SD slot 2 card detect)<br />
* Ball R20 <-> Pad DISP0_DAT13 <-> Net FPGA_RESET_N (FPGA reset, active low)<br />
<br />
==User manual/register map naming Convention==<br />
Unlike hardware names, pad names are re-used, and every pad has up to 8 potential actual functions.<br />
<br />
The selection of these signal mappings is controlled by a pad/group register, whose name is derived from the canonical pad name. This is a bit confusing, because for example, a pad named SD1_DAT1 has a pad mux register named IOMUXC_SW_*MUX*_CTL_PAD_SD1_DATA1 (asterisk for emphasis only), and it's responsible for configuring SD1_DATA1, ECSPI5_SS0, PWM3_OUT, GPT_CAPTURE2, and GPIO1_IO17 function multiplexing to the SD1_DAT1 pad.<br />
<br />
There's also IOMUXC_SW_*PAD*_CTL_PAD_SD1_DATA1 that's responsible for configuring the physical drive characteristic of the pad, which could, again, be mapped to any of the 5 functions. <br />
<br />
Again, you can have up to 8 functions per pad, and importantly, it's not always the case that a pad's default function matches its canonical name.<br />
<br />
Almost every pad has a GPIO function, and GPIO functions are internally tracked by a "bank/bit" convention. There are 7 banks of GPIOs with up to 32 bits each, and as is quite typical of hardware naming conventions, the index is 1-based, not 0 based; but the register addresses are all 0-based, requiring you to subtract 1 from the name.<br />
<br />
==Linux Userspace Naming Convention==<br />
* Almost every pad has, as one of its 8 possible functions, a GPIO role.<br />
* Linux uses a single integer to enumerate all pads, therefore Freescale's bank/bit notation for GPIOs must be mapped.<br />
* The bank/bit to Linux userspace formula is:<br />
<br />
linux gpio number = (gpio_bank - 1) * 32 + gpio_bit<br />
<br />
So, GPIO1_IO17 maps to (1 - 1) * 32 + 17 = 17. <br />
<br />
A more complex example is DISP0_DAT13. It maps to GPIO5_IO07, so its userspace number is (5 - 1) * 32 + 7 = 135.<br />
<br />
Thus, the algorithm to go from a schematic pin to a Linux userspace number is as follows:<br />
<br />
# Find the function on the schematic (e.g. PCIE_PWRON)<br />
# Trace it to the pad on a CPU. Note the canonical name (e.g. GPIO_17)<br />
# Look the canonical name up in table 28-4 of the reference manual to resolve the GPIO bit/bank notation (e.g., GPIO_17 = GPIO7_IO12), or search for the pad name in the table on this page (derived from the i.MX6Q Reference Manual Rev 1 4/2013).<br />
# Apply the translation formula: (7 - 1) * 32 + 12 = linux userspace gpio204<br />
<br />
Note in the above example, the "pad name" GPIO_17 had *nothing* to do with the actual GPIO bit/bank notation. So don't let the names fool you. Think of pad names as unique strings with no inherent meaning, and your life will be easier.<br />
<br />
==Linux Device Tree Naming Convention==<br />
There's another place where you might want to call out a GPIO: the device tree. <br />
<br />
Novena's device tree entry would be found in arch/arm/boot/dts/imx6q-novena.dts.<br />
<br />
When referring to a GPIO in a device tree node, you use the bit/bank mapping scheme. For example, AUD_PWRON (schematic net name) maps to DISP0_DAT23 (i.MX6Q pad name). This maps to GPIO5_IO17 (per lookup in table below), and therefore the device tree entry for this is <br />
<br />
power-gpio = <&gpio5 17 0><br />
<br />
The third field is for gpio polarity (0 = active high, 1 = active low). In the context of an interrupt, the third field specifies the polarity of the edge trigger, see Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt <br />
<br />
Sometimes you have to "hog" a pin in the device tree. To do that, look for the node iomuxc, in the pinctrl_hog:hoggrp. Here, you have to use a series of names and numbers that you look up in the pin control file. <br />
<br />
Easiest way I've found is to start by searching the bank/bit name in the file, whose name is "imx6q-pinfuc.h". Note the format for the name is "GPIOn_IOmm" (I always forget the IO before the bit name). <br />
<br />
Searching the canonical pad name is confusing because the pad name is re-used up to 8 times, and it doesn't sufficiently disambiguate the function.<br />
<br />
MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17 0x80000000<br />
<br />
According to Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt that number to the right of the hog spec can be used to set up things like pull-ups, pull-downs, keepers, drive strength, etc. The value 0x80000000 is special and means "I don't know and don't change from the default". Otherwise, it's set according to the following chart (basically the bitfields of the IOMUXC lower 17 bits):<br />
<pre><br />
PAD_CTL_HYS (1 << 16)<br />
PAD_CTL_PUS_100K_DOWN (0 << 14)<br />
PAD_CTL_PUS_47K_UP (1 << 14)<br />
PAD_CTL_PUS_100K_UP (2 << 14)<br />
PAD_CTL_PUS_22K_UP (3 << 14)<br />
PAD_CTL_PUE (1 << 13)<br />
PAD_CTL_PKE (1 << 12)<br />
PAD_CTL_ODE (1 << 11)<br />
PAD_CTL_SPEED_LOW (1 << 6)<br />
PAD_CTL_SPEED_MED (2 << 6)<br />
PAD_CTL_SPEED_HIGH (3 << 6)<br />
PAD_CTL_DSE_DISABLE (0 << 3)<br />
PAD_CTL_DSE_240ohm (1 << 3)<br />
PAD_CTL_DSE_120ohm (2 << 3)<br />
PAD_CTL_DSE_80ohm (3 << 3)<br />
PAD_CTL_DSE_60ohm (4 << 3)<br />
PAD_CTL_DSE_48ohm (5 << 3)<br />
PAD_CTL_DSE_40ohm (6 << 3)<br />
PAD_CTL_DSE_34ohm (7 << 3)<br />
PAD_CTL_SRE_FAST (1 << 0)<br />
PAD_CTL_SRE_SLOW (0 << 0)<br />
</pre><br />
<br />
Pro tip: don't use a value of 0, it doesn't work.<br />
<br />
==Using Sysfsgpio on Linux==<br />
<br />
As an example, we'll use the controllable 5V power source.<br />
<br />
The Device Tree lists it as gpio3,19:<br />
<br />
gpios = <&gpio3 19 GPIO_ACTIVE_HIGH><br />
<br />
To get the Linux GPIO number, use the formula above: (bank - 1 * 32) + pin:<br />
<br />
(3-1 * 32) + 19 = 83<br />
<br />
Therefore, the 5v (fan)source is GPIO 83.<br />
<br />
Expose the GPIO to userspace:<br />
<br />
echo 83 > /sys/class/gpio/export<br />
<br />
Make it an output:<br />
<br />
echo out > /sys/class/gpio/gpio83/direction<br />
<br />
And set it high:<br />
<br />
echo 1 > /sys/class/gpio/gpio83/value<br />
<br />
=i.MX6Q GPIO bit/bank to Pad name Table=<br />
This table should *only* be used for the i.MX6Q. If you're mapping a Dual-Lite variant, please refer to the user manual (which you can download from the Freescale website). <br />
<br />
<pre><br />
GPIO1_IO00 - GPIO_0<br />
GPIO1_IO01 - GPIO_1<br />
GPIO1_IO02 - GPIO_2<br />
GPIO1_IO03 - GPIO_3<br />
GPIO1_IO04 - GPIO_4<br />
GPIO1_IO05 - GPIO_5<br />
GPIO1_IO06 - GPIO_6<br />
GPIO1_IO07 - GPIO_7<br />
GPIO1_IO08 - GPIO_8<br />
GPIO1_IO09 - GPIO_9<br />
GPIO1_IO10 - SD2_CLK<br />
GPIO1_IO11 - SD2_CMD<br />
GPIO1_IO12 - SD2_DAT3<br />
GPIO1_IO13 - SD2_DAT2<br />
GPIO1_IO14 - SD2_DAT1<br />
GPIO1_IO15 - SD2_DAT0<br />
GPIO1_IO16 - SD1_DAT0<br />
GPIO1_IO17 - SD1_DAT1<br />
GPIO1_IO18 - SD1_CMD<br />
GPIO1_IO19 - SD1_DAT2<br />
GPIO1_IO20 - SD1_CLK<br />
GPIO1_IO21 - SD1_DAT3<br />
GPIO1_IO22 - ENET_MDIO<br />
GPIO1_IO23 - ENET_REF_CLK<br />
GPIO1_IO24 - ENET_RX_ER<br />
GPIO1_IO25 - ENET_CRS_DV<br />
GPIO1_IO26 - ENET_RXD1<br />
GPIO1_IO27 - ENET_RXD0<br />
GPIO1_IO28 - ENET_TX_EN<br />
GPIO1_IO29 - ENET_TXD1<br />
GPIO1_IO30 - ENET_TXD0<br />
GPIO1_IO31 - ENET_MDC<br />
GPIO2_IO00 - NANDF_D0<br />
GPIO2_IO01 - NANDF_D1<br />
GPIO2_IO02 - NANDF_D2<br />
GPIO2_IO03 - NANDF_D3<br />
GPIO2_IO04 - NANDF_D4<br />
GPIO2_IO05 - NANDF_D5<br />
GPIO2_IO06 - NANDF_D6<br />
GPIO2_IO07 - NANDF_D7<br />
GPIO2_IO08 - SD4_DAT0<br />
GPIO2_IO09 - SD4_DAT1<br />
GPIO2_IO10 - SD4_DAT2<br />
GPIO2_IO11 - SD4_DAT3<br />
GPIO2_IO12 - SD4_DAT4<br />
GPIO2_IO13 - SD4_DAT5<br />
GPIO2_IO14 - SD4_DAT6<br />
GPIO2_IO15 - SD4_DAT7<br />
GPIO2_IO16 - EIM_A22<br />
GPIO2_IO17 - EIM_A21<br />
GPIO2_IO18 - EIM_A20<br />
GPIO2_IO19 - EIM_A19<br />
GPIO2_IO20 - EIM_A18<br />
GPIO2_IO21 - EIM_A17<br />
GPIO2_IO22 - EIM_A16<br />
GPIO2_IO23 - EIM_CS0<br />
GPIO2_IO24 - EIM_CS1<br />
GPIO2_IO25 - EIM_OE<br />
GPIO2_IO26 - EIM_RW<br />
GPIO2_IO27 - EIM_LBA<br />
GPIO2_IO28 - EIM_EB0<br />
GPIO2_IO29 - EIM_EB1<br />
GPIO2_IO30 - EIM_EB2<br />
GPIO2_IO31 - EIM_EB3<br />
GPIO3_IO00 - EIM_DA0<br />
GPIO3_IO01 - EIM_DA1<br />
GPIO3_IO02 - EIM_DA2<br />
GPIO3_IO03 - EIM_DA3<br />
GPIO3_IO04 - EIM_DA4<br />
GPIO3_IO05 - EIM_DA5<br />
GPIO3_IO06 - EIM_DA6<br />
GPIO3_IO07 - EIM_DA7<br />
GPIO3_IO08 - EIM_DA8<br />
GPIO3_IO09 - EIM_DA9<br />
GPIO3_IO10 - EIM_DA10<br />
GPIO3_IO11 - EIM_DA11<br />
GPIO3_IO12 - EIM_DA12<br />
GPIO3_IO13 - EIM_DA13<br />
GPIO3_IO14 - EIM_DA14<br />
GPIO3_IO15 - EIM_DA15<br />
GPIO3_IO16 - EIM_D16<br />
GPIO3_IO17 - EIM_D17<br />
GPIO3_IO18 - EIM_D18<br />
GPIO3_IO19 - EIM_D19<br />
GPIO3_IO20 - EIM_D20<br />
GPIO3_IO21 - EIM_D21<br />
GPIO3_IO22 - EIM_D22<br />
GPIO3_IO23 - EIM_D23<br />
GPIO3_IO24 - EIM_D24<br />
GPIO3_IO25 - EIM_D25<br />
GPIO3_IO26 - EIM_D26<br />
GPIO3_IO27 - EIM_D27<br />
GPIO3_IO28 - EIM_D28<br />
GPIO3_IO29 - EIM_D29<br />
GPIO3_IO30 - EIM_D30<br />
GPIO3_IO31 - EIM_D31<br />
GPIO4_IO05 - GPIO_19<br />
GPIO4_IO06 - KEY_COL0<br />
GPIO4_IO07 - KEY_ROW0<br />
GPIO4_IO08 - KEY_COL1<br />
GPIO4_IO09 - KEY_ROW1<br />
GPIO4_IO10 - KEY_COL2<br />
GPIO4_IO11 - KEY_ROW2<br />
GPIO4_IO12 - KEY_COL3<br />
GPIO4_IO13 - KEY_ROW3<br />
GPIO4_IO14 - KEY_COL4<br />
GPIO4_IO15 - KEY_ROW4<br />
GPIO4_IO16 - DI0_DISP_CLK<br />
GPIO4_IO17 - DI0_PIN15<br />
GPIO4_IO18 - DI0_PIN2<br />
GPIO4_IO19 - DI0_PIN3<br />
GPIO4_IO20 - DI0_PIN4<br />
GPIO4_IO21 - DISP0_DAT0<br />
GPIO4_IO22 - DISP0_DAT1<br />
GPIO4_IO23 - DISP0_DAT2<br />
GPIO4_IO24 - DISP0_DAT3<br />
GPIO4_IO25 - DISP0_DAT4<br />
GPIO4_IO26 - DISP0_DAT5<br />
GPIO4_IO27 - DISP0_DAT6<br />
GPIO4_IO28 - DISP0_DAT7<br />
GPIO4_IO29 - DISP0_DAT8<br />
GPIO4_IO30 - DISP0_DAT9<br />
GPIO4_IO31 - DISP0_DAT10<br />
GPIO5_IO00 - EIM_WAIT<br />
GPIO5_IO02 - EIM_A25<br />
GPIO5_IO04 - EIM_A24<br />
GPIO5_IO05 - DISP0_DAT11<br />
GPIO5_IO06 - DISP0_DAT12<br />
GPIO5_IO07 - DISP0_DAT13<br />
GPIO5_IO08 - DISP0_DAT14<br />
GPIO5_IO09 - DISP0_DAT15<br />
GPIO5_IO10 - DISP0_DAT16<br />
GPIO5_IO11 - DISP0_DAT17<br />
GPIO5_IO12 - DISP0_DAT18<br />
GPIO5_IO13 - DISP0_DAT19<br />
GPIO5_IO14 - DISP0_DAT20<br />
GPIO5_IO15 - DISP0_DAT21<br />
GPIO5_IO16 - DISP0_DAT22<br />
GPIO5_IO17 - DISP0_DAT23<br />
GPIO5_IO18 - CSI0_PIXCLK<br />
GPIO5_IO19 - CSI0_MCLK<br />
GPIO5_IO20 - CSI0_DATA_EN<br />
GPIO5_IO21 - CSI0_VSYNC<br />
GPIO5_IO22 - CSI0_DAT4<br />
GPIO5_IO23 - CSI0_DAT5<br />
GPIO5_IO24 - CSI0_DAT6<br />
GPIO5_IO25 - CSI0_DAT7<br />
GPIO5_IO26 - CSI0_DAT8<br />
GPIO5_IO27 - CSI0_DAT9<br />
GPIO5_IO28 - CSI0_DAT10<br />
GPIO5_IO29 - CSI0_DAT11<br />
GPIO5_IO30 - CSI0_DAT12<br />
GPIO5_IO31 - CSI0_DAT13<br />
GPIO6_IO00 - CSI0_DAT14<br />
GPIO6_IO01 - CSI0_DAT15<br />
GPIO6_IO02 - CSI0_DAT16<br />
GPIO6_IO03 - CSI0_DAT17<br />
GPIO6_IO04 - CSI0_DAT18<br />
GPIO6_IO05 - CSI0_DAT19<br />
GPIO6_IO06 - EIM_A23<br />
GPIO6_IO07 - NANDF_CLE<br />
GPIO6_IO08 - NANDF_ALE<br />
GPIO6_IO09 - NANDF_WP_B<br />
GPIO6_IO10 - NANDF_RB0<br />
GPIO6_IO11 - NANDF_CS0<br />
GPIO6_IO14 - NANDF_CS1<br />
GPIO6_IO15 - NANDF_CS2<br />
GPIO6_IO16 - NANDF_CS3<br />
GPIO6_IO17 - SD3_DAT7<br />
GPIO6_IO18 - SD3_DAT6<br />
GPIO6_IO19 - RGMII_TXC<br />
GPIO6_IO20 - RGMII_TD0<br />
GPIO6_IO21 - RGMII_TD1<br />
GPIO6_IO22 - RGMII_TD2<br />
GPIO6_IO23 - RGMII_TD3<br />
GPIO6_IO24 - RGMII_RX_CTL<br />
GPIO6_IO25 - RGMII_RD0<br />
GPIO6_IO26 - RGMII_TX_CTL<br />
GPIO6_IO27 - RGMII_RD1<br />
GPIO6_IO28 - RGMII_RD2<br />
GPIO6_IO29 - RGMII_RD3<br />
GPIO6_IO30 - RGMII_RXC<br />
GPIO6_IO31 - EIM_BCLK<br />
GPIO7_IO00 - SD3_DAT5<br />
GPIO7_IO01 - SD3_DAT4<br />
GPIO7_IO02 - SD3_CMD<br />
GPIO7_IO03 - SD3_CLK<br />
GPIO7_IO04 - SD3_DAT0<br />
GPIO7_IO05 - SD3_DAT1<br />
GPIO7_IO06 - SD3_DAT2<br />
GPIO7_IO07 - SD3_DAT3<br />
GPIO7_IO08 - SD3_RST<br />
GPIO7_IO09 - SD4_CMD<br />
GPIO7_IO10 - SD4_CLK<br />
GPIO7_IO11 - GPIO_16<br />
GPIO7_IO12 - GPIO_17<br />
GPIO7_IO13 - GPIO_18<br />
</pre></div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1890Kubernetes on Novena2017-03-16T07:20:50Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
10. As of this post, networking is broken. To fix it, break the firewall for the Docker interface:<br />
sudo iptables -A FORWARD -i cni0 -j ACCEPT<br />
sudo iptables -A FORWARD -o cni0 -j ACCEPT<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1889Kubernetes on Novena2017-03-16T06:57:23Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Ensure cAdvisor doesn't start up. It's nice to have, but it leaks lots of information.<br />
printf '[Service]\nEnvironment="KUBELET_EXTRA_ARGS=--cadvisor-port=0"\n' > /etc/systemd/system/kubelet.service.d/05-disable-cadvisor.conf<br />
systemctl daemon-reload<br />
systemctl restart kubelet<br />
<br />
8. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
9. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Novena_linux-kernel&diff=1888Novena linux-kernel2017-03-16T00:24:51Z<p>Xobs: </p>
<hr />
<div>The mainline Linux kernel contains Make targets to build .deb packages. We extend this slightly to also include DTB files, and to allow for an arbitrary kernel installation directory.<br />
<br />
The Novena kernel is relatively close to mainline. It has a few additional patches, most of which will eventually get merged.<br />
<br />
The kernel's github page is present at https://github.com/xobs/novena-linux, though be warned that it undergoes frequent rebasing. This could make your "git pull" fail.<br />
<br />
To build a new kernel, perform the following steps:<br />
<br />
# git clone https://github.com/xobs/novena-linux.git (or git clone git@github.com:xobs/novena-linux.git)<br />
# cd novena-linux<br />
# git branch -r # List remote branches<br />
# git checkout [branchname] # e.g. git checkout v3.19-novena-etnadrm-r3<br />
# make novena_defconfig<br />
# make -j4 zImage<br />
# make -j4 modules<br />
# sudo make -j4 modules_install<br />
<br />
Then, copy arch/arm/boot/zImage to /boot/<br />
<br />
If you need to modify device tree files, run the following:<br />
<br />
# make dtbs<br />
<br />
Then, copy arch/arm/boot/dts/imx6q-novena.dtb to your boot device as novena.dtb.<br />
<br />
==Debian Packages==<br />
We use the following script to build kernel packages:<br />
<br />
./package-kernel.sh<br />
<br />
It is stored in the root of the kernel source, and will automatically tag and rebuild everything. A build takes about two hours, and does a fresh checkout of the tree.<br />
<br />
The script is something along these lines:<br />
<br />
#!/bin/sh<br />
threads=2<br />
version=1.4<br />
make -j${threads} \<br />
LD=gold \<br />
KBUILD_DEBARCH=armhf \<br />
KBUILD_IMAGE=zImage \<br />
KBUILD_DTB=imx6q-novena.dtb \<br />
KBUILD_DESTDIR=usr/share/linux-novena \<br />
KDEB_PKGVERSION=${version} \<br />
EMAIL="xobs@kosagi.com" \<br />
NAME="Sean Cross" \<br />
dtbs || exit 1<br />
make -j${threads} \<br />
LD=gold \<br />
KBUILD_DEBARCH=armhf \<br />
KBUILD_IMAGE=zImage \<br />
KBUILD_DTB=imx6q-novena.dtb \<br />
KBUILD_DESTDIR=usr/share/linux-novena \<br />
KDEB_PKGVERSION=${version} \<br />
EMAIL="xobs@kosagi.com" \<br />
NAME="Sean Cross" \<br />
deb-pkg</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1887Kubernetes on Novena2017-03-14T11:47:08Z<p>Xobs: </p>
<hr />
<div>Kubernetes is a high-availability clustering package. It is available for ARM, but mostly is used on x86-64. These steps detail how to use it on Novena.<br />
<br />
==Installing Kubernetes==<br />
<br />
Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces<br />
<br />
==Using Kubernetes==</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1886Kubernetes on Novena2017-03-14T11:45:36Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian. Adapted from https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/ for Novena.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169<br />
<br />
7. Install Flannel on the Master, which will manage the network for us.<br />
curl -sSL https://rawgit.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm/g" | kubectl create -f -<br />
<br />
8. Wait for all pods to be Running:<br />
kubectl get po --all-namespaces</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1885Kubernetes on Novena2017-03-14T11:43:39Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks<br />
<br />
It will output something like the following:<br />
Your Kubernetes master has initialized successfully!<br />
<br />
You should now deploy a pod network to the cluster.<br />
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:<br />
http://kubernetes.io/docs/admin/addons/<br />
<br />
You can now join any number of machines by running the following on each node:<br />
<br />
kubeadm join --token=964a50.d8053ed3de195a11 10.0.245.169<br />
<br />
6. Join the cluster from other machines. We still need to skip preflight checks.<br />
kubeadm join --token=964a50.d8053ed3de195a11 --skip-preflight-checks 10.0.245.169</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1884Kubernetes on Novena2017-03-14T10:54:22Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
reboot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm on the master device to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1883Kubernetes on Novena2017-03-14T10:45:32Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
apt-get install apt-transport-https # Used for accessing the newer repos<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1882Kubernetes on Novena2017-03-14T10:43:04Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
export DOCKER_ENGINE_VERSION="17.03.0~ce-0~debian-jessie"<br />
export DOCKER_COMPOSE_VERSION="1.9.0-23"<br />
export DOCKER_MACHINE_VERSION="0.9.0-39"<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine="${DOCKER_ENGINE_VERSION}" \<br />
docker-compose="${DOCKER_COMPOSE_VERSION}" \<br />
docker-machine="${DOCKER_MACHINE_VERSION}"<br />
<br />
4. Install kubeadm<br />
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -<br />
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list<br />
apt-get update && apt-get install -y kubeadm<br />
<br />
5. Run kubeadm to start the cluster. As of this moment, we need to skip preflight checks due to changes in Docker version numbering.<br />
kubeadm init --pod-network-cidr 10.244.0.0/16 --skip-preflight-checks</div>Xobshttps://kosagi.com/w/index.php?title=Kubernetes_on_Novena&diff=1881Kubernetes on Novena2017-03-14T10:33:13Z<p>Xobs: </p>
<hr />
<div>Some steps I've taken to install Kubernetes on Debian.<br />
<br />
1. Update the key.<br />
wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb<br />
sudo dpkg -i kosagi-repo_1.2-r1_all.deb<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade<br />
<br />
2. At this point, it's probably a good idea to move to a SATA disk.<br />
dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=1<br />
fdisk /dev/sda<br />
# Re-create partitions 2 and 3. Make partition 2 at least 6GB<br />
# for swap (type 82), and make partition 3 the rest of the disk.<br />
# Type "x" for Expert mode, then "i", and change the ID to 0x4e6f7653.<br />
# Then "r" to return to the main menu, and "w" to write it to disk.<br />
mkfs.ext4 /dev/sda3 # or install btrfs-tools or xfsprogs and make a different type<br />
mount /dev/sda3 /mnt<br />
rsync -avxHAX --progress / /mnt/<br />
novena-eeprom -w -f es8328,pcie,gbit,hdmi,eepromoops,sataroot<br />
<br />
3. Install Docker (borrowed from https://github.com/hypriot/image-builder-odroid-c1/blob/master/builder/chroot-script.sh)<br />
wget -q https://packagecloud.io/gpg.key -O - | apt-key add -<br />
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main' > /etc/apt/sources.list.d/hypriot.list<br />
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C52609D<br />
echo 'deb [arch=armhf] https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list<br />
apt-get update<br />
DEBIAN_FRONTEND=noninteractive apt-get install \<br />
libltdl7 \<br />
docker-engine \<br />
docker-compose \<br />
docker-machine</div>Xobs