本当はAnsibleとか使ってプロビジョニングするのが良きなのでしょうが
そこまでまだ勉強できていませんということで,
愚直に,公式にそって入れていきます.
まず,Masterから.
早速暗雲
k8s公式のBefore you beginに,
- 2 GB or more of RAM per machine (any less will leave little room for your apps)
- 2 CPUs or more
とありますねぇ.まぁ.無視で.
まずDocker入れる
公式に従って,下記コマンドでインストール.
これバージョン古い気がするけどいいのかな.
# yum install -y docker
ちなみにインストールされたDockerのバージョンは1.13.1・・・古い...(´・ω・`)
そのせいかdocker daemonを起動できません.SELinuxがpermissiveにもかかわらず.
仕方ないですね.Disabledにしましょう.
やりかたはこちら参照.
でようやくdocker daemonを起動します.
# systemctl enable docker
# systemctl start docker
ちなみに初期のrootパスワードはいじってなければvagrantです.
次にkubeadmとkubeletとkubectlをインストールします.
まずリポジトリ登録から.
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
そして,インストールしてkubeletを起動します.
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
CentOS入れてるので下記の処理もやります.
# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system
次にkubeadmでセキュアなクラスターを作ります.
ここで,公式通りにやると暗雲立ち込めたあの子たちのせいでエラーが返ってきます.
kubeletちゃんと動いてないよsystemctl status kubelet
で見ろよと言われるので見る.
するとswapはサポートされてないよを言われる.
ふと,GitLab入れるときとかメモリ足りるか不安になりつつ,
下記のようにswapを無効化してkubelet daemonを再起動します.
# swapoff -a
# systemctl restart kubelet
そして,まだいろいろエラー来るので,下記のようにして黙殺.(良いのかはわからない)
# kubeadm init --ignore-preflight-errors all
クラスターができたので,マスターノードの一般ユーザーから,ノードの管理(kubectl)ができるようにする.
ちなみに,kubeadm init
するとセキュアなクラスターができます.それがkubeadmのポリシー.
なので,デフォルトでRBACがオンになっている.
まずはkubeadm init
したときに結果が出力されているので,その通りにやります.
出力結果はどこかにメモしておくのが吉かもしれない.
# exit
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
これで,kubeadm 使って,vagrantユーザーからクラスタの管理ができるようになりました.
こっからNode間のネットワークのためのツールを入れてようやくNodeをjoinさせられるけど
力尽きました.
また明日改めて書きます.