因为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 本

这是一张排列好的材料图片。

IMG_1055.jpg

经常会混入不同的东西,但无所谓了!我们将使用 NETGEAR 的交换机。(贴纸…)

烹饪开始

从树莓派的搭建到LAN的设置

从袋子里取出树莓派。

IMG_1058.JPG

只需要一种选择,即用中文提供以下内容的同义句:

安装散热器。

IMG_1059.JPG
IMG_1066.png

也许应该换成稍短一些的电缆..


然后,为了进行无线局域网的设置,

    在浏览器中访问 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 包已经完成了!!

IMG_1077.JPG

看起来非常好吃。(总算做成功了…)

最后

这次,参考了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 をインストール
广告
将在 10 秒后关闭
bannerAds