在搭建家庭Kubernetes时遇到的困难 – 独特的篇章 –
家庭使用的Kubernetes非常受欢迎!
由於僅僅因為偶然購買了便宜的Raspberry Pi 3 Model B,基於Raspberry Pi和kubeadm的應用,我成功建立了自己的家用Kubernetes集群。

由于已经存在下面这样一篇很好的构建方法文章,因此本文只对我遇到的细节部分进行说明。
-
- Raspberry PiでおうちKubernetes構築【物理編】
-
- Raspberry PiでおうちKubernetes構築【論理編】
-
- Raspberry Piにkubernetesクラスタをインストールする
- 3日間クッキング【Kubernetes のラズペリーパイ包み “サイバーエージェント風”】
我想按顺序设置主机名。
完成设置无故筐体和电缆设置后,尝试在Raspberry Pi配置中设置主机名时,无法确定哪个IP地址被分配给了哪台计算机。

为了确认哪个IP地址与哪个Raspi相对应,我们决定关闭LED灯。
- Raspberry Pi 基盤 の LED を 消灯する _ 験なきものを思はずは
pi@raspi:~ $ echo none | sudo tee /sys/class/leds/led0/trigger
none
pi@raspi:~ $ echo none | sudo tee /sys/class/leds/led1/trigger
none
pi@raspi:~ $ echo 0 | sudo tee /sys/class/leds/led1/brightness
0

关闭灯光后,设置主机名后,只需重新启动即可恢复原状。
还有一种方法,即通过访问硬盘,绿色LED会闪烁,通过执行 sudo apt-get update 命令观察LED的闪烁,也可以确认与IP对应的Raspi。
顺便提一下,您可以使用arp命令等方式来确认连接Raspberry Pi所需的IP地址。
$ arp -a
在设置主机名之后,默认情况下,Avahi会启动,因此如果您使用Mac,借助Bonjour,您可以通过主机名访问如下。我认为Linux和Windows也可以通过安装Avahi来实现通过主机名访问。
$ ssh <ホスト名>.local
Docker的版本
到目前为止(2019年2月),通过apt-get安装的Docker版本是18.09。由于当前Kubernetes推荐的版本是18.06,所以在执行kubeadm init时会出现错误(尽管可以选择跳过此选项…)。
- CRI installation – Kubernetes
因此,您需要指定版本进行安装。
您可以通过apt-get安装的版本在下面进行确认。
$ sudo apt-cache showpkg docker-ce
...
Provides:
5:18.09.0~3-0~raspbian-stretch -
18.06.1~ce~3-0~raspbian -
18.06.0~ce~3-0~raspbian -
18.03.1~ce-0~raspbian -
18.03.0~ce-0~raspbian -
17.12.1~ce-0~raspbian -
17.12.0~ce-0~raspbian -
17.09.1~ce-0~raspbian -
17.09.0~ce-0~raspbian -
Reverse Provides:
指定安装版本的方法如下:
sudo apt-get install docker-ce=<version>
我想从客户端机器访问Kubernetes集群。
很高兴告诉您,我们已经完成了Kubernetes集群的构建,并确认可以通过Raspberry Pi上的ssh来运行kubectl。现在,我遇到了一个问题,我想要从我的Mac客户端使用kubectl进行操作。
通常,在使用az命令或gcloud命令时,它们会自动为我进行设置,所以我没有意识到在Kubernetes中需要添加用户的方法。
通过参考下面的文章,执行生成密钥和配置kubectl的步骤,您就可以访问了。
- Kubernetesでユーザを作成する(X509 Client Certs編)
使用适用于ARM的镜像
尝试使用Python示例图像进行操作确认时,无法运行。
# Base Image
FROM python:3.6
# ...(中略
# Run the application
CMD ["python", "/opt/myapp/app.py"]
实行结果的错误如下所示
$ kubectl logs <pod>
standard_init_linux.go:190: exec user process caused "exec format error"
在我本地的Docker上能够启动,但我不知道原因而苦恼了一阵子,后来发现是因为基础镜像的Python是为x86构建的。仔细想想,这是理所当然的,因为树莓派的CPU是ARM架构的,所以需要使用适用于ARM的构建镜像。
# Base Image
FROM armhf/python:3.6
# ...(中略
因为Docker Hub上存在适用于ARM的镜像,所以只需对其进行调整即可正常运行。
总结
综合考虑后,我认为Kubernetes与此完全无关。
实际上,多亏了前辈们的优秀文章,我几乎毫不费力地顺利构建起来。
多亏了kubeadm,构建Kubernetes也只需一条命令。
正如大家所说,最困难的部分也就是从亚克力板上剥离保护膜。
構築前和構築中事實上只有3G可用,這樣用起來怎麼樣呢?我認為在本地使用單節點集群,如Docker for Mac等已經足夠了。
但在構築後使用後,它非常方便。由於不會給用戶端機器帶來負擔,即使在執行重型處理時也很順暢。另外,擁有感非常強。果然,每個家庭都應該有一個Kubernetes集群!
祝你过上愉快的Kubernetes生活!