因为Kubernetes在树莓派上打包看起来很美味,所以我尝试使用kubeadm来创建
初次见面,我是 @shirot61。
这篇文章的目的是什么?
标题就是这样。
目的
3日間クッキング【Kubernetes のラズペリーパイ包み “サイバーエージェント風”】がとても美味しそうだったので、
kubernetes & Raspberry Pi 素人でも作れるか、試してみたかった。
SoftwareDesign 3 月号の kubernetes 特集をみて、kubernetes に入門したくなった。
せっかく作ったので、どこかにまとめておきたかった
即使是要做料理
在3天的烹饪活动中,由于逻辑构建被省略,我正在各个方面进行调查时,Z Lab的@hatotaka厨师利用kubeadm进行了集群构建!
- Raspberry PI と kubeadm で自宅 Kubernetes クラスタを構築する
所以,在逻辑构建时,我参考了那个(几乎是照搬)。(非常感谢)
因此,我们现在要构建的 k8s 集群如下所示。
-
- Raspberry pi
モデル: Raspberry Pi 3 Model B
OS: Raspbian stretch lite (2018-03-13)
Kubernetes
kubeadm: v1.9.4
Pod Network: Flannel
@hatotaka さん的文章与我之间的区别只是版本而已。
我会使用macOS High Sierra来构建这些。
素材
以下是从Cyber Agent Chef的食材(图片)中凝视和收集而来的食材。
Raspberry Pi 3 Model B3 個ヒートシンク3 セットmicroSDカード 16GB3 枚4段積層式 Raspberry Pi 3 ケース1 個6ポート 60W USB 充電器 (Anker PowerPort 6)1 個2.4A microUSB ケーブル4 本コンパクト無線親機 (WMR-433W-BK)1 個NETGEAR GS305-100JPS1 個0.3m LAN ケーブル4 本
这是一张排列好的材料图片。

经常会混入不同的东西,但无所谓了!我们将使用 NETGEAR 的交换机。(贴纸…)
烹饪开始
从树莓派的搭建到LAN的设置
从袋子里取出树莓派。

只需要一种选择,即用中文提供以下内容的同义句:
安装散热器。


也许应该换成稍短一些的电缆..
然后,为了进行无线局域网的设置,
- 在浏览器中访问 192.168.13.1,选择无线网络模式,指定连接目标并输入连接目标的加密密钥,然后连接超时了…?
请别再折腾了。
查詢後發現,家裡的網絡需要PPPoE身份驗證。
而無線路由器WMR-433W-BK並不支援PPPoE驗證,所以這就是連接超時的原因…
所以這次我們就
有线局域网 – 交换机 – 树莓派 ×3
我们已经突然改变了与之连接的方式。
Raspbian的安装和各种设置(如更改主机名和用户名)
操作系统的安装
所以首先,下载 Raspberry Pi 系统(Raspbian),然后进行安装。
Hi, I’m sorry, but I can only provide assistance in English.
初学者应该使用NOOBS开始,该软件提供了从标准发行版中选择操作系统的选项。
尽管有关的描述中提到了NOOBS并推荐使用,但那只是可忽略的东西。
由于我不需要 GUI,所以我会从这里下载Raspbian Stretch Lite,然后将 microSD卡插入我的 Mac。
之后的步骤如下所示。
// raspbianの解凍
$ cd ~/raspbianがDLされた場所
$ unzip 2018-03-13-raspbian-stretch-lite.zip
// SDカードのパスをチェック
// 自分の環境だと、 /dev/disk2s1 だった
$ diskutil list
// SDカードのアンマウント
// diskutil list で調べたパスを指定する
$ sudo diskutil unmount /dev/disk2s1
// イメージの書き込み
$ sudo dd bs=1m if=2018-03-13-raspbian-stretch-lite.img of=/dev/rdisk2 conv=sync
詳細內容:在樹莓派文檔中安裝操作系統映像。
接下来,启用ssh功能。
// sshの有効化
$ cd /Volumes/boot
$ touch ssh
接下来,为了启用cgroups的cpu和内存功能,
请在/Volumes/boot/cmdline.txt文件中添加cgroup_enable=cpuset cgroup_memory=1。
这样就可以了。
登录到树莓派
由于不知道树莓派的地址,无法登录。
$ arp -a
执行以下操作,以查找分配给每个 Raspberry Pi 的 IP 地址。
通过SSH登录
$ ssh pi@192.168.xxx.xxx
// 以下、ついでにやっときます
$ sudo apt-get update
$ sudo apt-get -y upgrade
// k8s 1.8からスワップが有効だとkubeletが起動しないそうなので、先にやっとく(起動しっぱなしにしてたら、消せって怒られた)
// スワップを切ることで、SDカードの寿命を伸ばせる
$ sudo dphys-swapfile swapoff
$ sudo dphys-swapfile uninstall
$ sudo update-rc.d dphys-swapfile remove
然后,进行主机名和用户名等设置更改等操作。
$ slogin user@host.local
确认能登录。
使用三台树莓派进行操作。
安装Docker和kubeadm ~ 进行主节点和节点的设置
安装 Docker。
注意:本次使用的 Raspbian(Debian)版本(代号)是 stretch。
我会安装Docker。
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
// $(. /etc/os-release; echo "$ID") で、OS の名前を引っ張ってこれる(wheezy 以降?)
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
$ echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-get -y install docker-ce
详细信息:获取适用于Debian的Docker CE。
kubeadm 安装
我们将安装kubeadm。
$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
// k8s 公式(下の詳細リンクのとこ)の方には、ヒアドキュメントを使ってやる方法で書いてあるけど、
// @hatotaka さんみたいに、パイプと tee 使った方が、なんだかカッコ良い
$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl
具体步骤:安装kubeadm和Kubernetes。
大师的配置
我将进行主人设定的安装。
在kubeadm init命令中,也许使用–apiserver-advertise-address来指定主节点的地址会更合适吗?
参考:使用kubeadm安装kubernetes v1.8 + Flannel。
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
[init] Using Kubernetes version: v1.9.4
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks.
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token xxxxxx.xxxxxxxxxxxxxxxx 192.168.1.13:6443 --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// kubeadm init で表示されたメッセージに従う
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
确认kubectl是否能正常执行。
$ kubectl verision
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.4", GitCommit:"bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState:"clean", BuildDate:"2018-03-12T16:29:47Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/arm"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.4", GitCommit:"bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState:"clean", BuildDate:"2018-03-12T16:21:35Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/arm"}
部署法兰绒
$ kubectl apply -f <(curl -s https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml |sed 's/amd64/arm/g')
安装节点
进行节点设置。
按照运行kubeadm init命令时出现的提示信息,输入命令将其加入到主节点。
$ kubeadm join --token xxxxxx.xxxxxxxxxxxxxxxx 192.168.1.13:6443 --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
然后向完成迈进
最后,使用主控节点(Master)执行kubectl get node命令,以确认节点的加入。
$ kubectl get node
NAME STATUS ROLES AGE VERSION
raspi001 Ready master 3d v1.9.4
raspi002 Ready <none> 3d v1.9.4
raspi003 Ready <none> 3d v1.9.4
以上是安装完成。
终于,Raspberry Pi 上的 Kubernetes 包已经完成了!!

看起来非常好吃。(总算做成功了…)
最后
这次,参考了CyberAgent的MasayaAoyama先生的文章和Z Lab的@hatotaka先生的文章。
物理的構築
3日間クッキング【Kubernetes のラズペリーパイ包み “サイバーエージェント風”】
論理的構築
Raspberry PI と kubeadm で自宅 Kubernetes クラスタを構築する
进行了。
这样一来
每家一个居家 Kubernetes 的时代
看起来不会错过这个。
就是这样,
即使是完全的Kubernetes(和Raspberry Pi)新手,
也可以轻松构建Kubernetes集群,
感到兴奋不已。
以后我们将使用这个来操作Kubernetes。
尽管文章拙劣,但感谢您一直阅读到最后。
若有任何指正或建议,请不吝赐教。
我所参考的文章
-
- 3日間クッキング【Kubernetes のラズペリーパイ包み “サイバーエージェント風”】
-
- Raspberry PI と kubeadm で自宅 Kubernetes クラスタを構築する
-
- Raspbianのインストールと最強の初期設定
- kubeadm で kubernetes v1.8 + Flannel をインストール