はじめに
前々回、kubeadmを使い、ローカルでk8sを起動する方法を紹介しました。今回はkubeadmを使わずにk8sのソースコードからビルドし、起動する方法を紹介します。k8sのソースコードをいじって自分用のk8s環境を作りたいという方にはぜひ参考にしてください。
環境
Ubutnu 18.02
手順
まず、dockerをインストールします。ちゃんと公式ドキュメントを見ましょう。たまに非公式なものをインストールするとエラーが出ます。
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
(lsb_release -cs) \
stable"
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io
次にetcdをインストールするのですが、これは一回飛ばします。k8sのソースコードにはetcdをインストールするためのシェルスクリプトが入っているので怒られたらそれを使います。
あとgo言語ですね。 バージョンを確認して入れましょう。 自分のk8sソースコードに対応したgoを入れてください。 参考までに自分のインストール方法を載せます。
curl -O https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.13.1.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
追記:
もし「exec: "gcc": executable file not found in $PATH」 といった表示が出たら、sudo apt install gcc
でgccをインストールしてください。
OpenSSLとCFSSLもインストールします。それぞれコマンドを打ってみて既にインストールされているようならば問題ありません。自分の環境ではOpenSSLは入っていたのでCFSSLだけインストールします。
go get -u github.com/cloudflare/cfssl/cmd/...
export PATH=$PATH:$GOPATH/bin
それではk8sソースコードをcloneします。cloneする際、オプション -b でバージョンを指定することをおすすめします。最新のバージョンはまだ発見されていないバグがあるかもしれません。(まあ安定版も同じかもしれませんが)
追記:
git cloneする場所は~/go/src/k8s.io/ をおすすめします。
mkdir ~/go/src/k8s.io/
cd ~/go/src/k8s.io/
git clone https://github.com/kubernetes/kubernetes.git -b v1.15.5
cloneしたらkubernetesに入り、kubernetesを起動するためのシェルスクリプトを実行します。
cd kubernetes
hack/local-up-cluster.sh
ここでエラーがでました。git issueを探してみるとこんなものがありました。どうやらgo言語のモジュール関連のエラーらしいですね。
/hack/lib/init.shにある「GO111MODULE = auto」を「GO111MODULE = off」に変えると起動できます。
コメント