Edited at

CentOS7にKubernetes1.9をインストール

More than 1 year has passed since last update.

master node1台、worker node1台構成で作成します。

参考: https://www.linuxtechi.com/install-kubernetes-1-7-centos7-rhel7/


master nodeの作成


初期設定

# まずhostnameを変える

[user@localhost ~]# sudo hostnamectl set-hostname 'k8s-master'
# 次に/etc/hostsを編集。アドレスはそれぞれ適切なものに変えて下さい。
[user@k8s-master ~]# cat /etc/hosts
10.26.5.22 k8s-master
10.26.5.23 worker-node1

[user@k8s-master ~]# setenforce 0

[user@k8s-master ~]# sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 本当はちゃんと設定すべき
[user@k8s-master ~]# systemctl stop firewalld
[user@k8s-master ~]# systemctl disable firewalld


Kubernetes Repositoryの設定

[user@k8s-master ~]# cat /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
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


Kubeadm と Dockerのインストール

Dockerはversion17以降を入れる。

[user@k8s-master ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2

[user@k8s-master ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[user@k8s-master ~]# sudo yum makecache fast
[user@k8s-master ~]# sudo yum remove docker docker-common docker-selinux docker-engine
[user@k8s-master ~]# sudo yum install docker-ce
[user@k8s-master ~]# sudo yum install kubeadm -y

[user@k8s-master ~]# systemctl restart docker && systemctl enable docker
[user@k8s-master ~]# systemctl restart kubelet && systemctl enable kubelet


Kubernetes Masterの作成

[user@k8s-master ~]# sudo swapoff -a # offにしないとエラーになる

[user@k8s-master ~]# sudo kubeadm init

kubeadm initが成功したら、画面に以下のことをしろと表示されるので行う。あと画面にkubeadm join --token 〜〜というのも出力されているのでコピペしておく(node作成時に使う)。

[user@k8s-master ~]# mkdir -p $HOME/.kube

[user@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[user@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config


ネットワークの作成

ちなみに、Cluster Networkの選択肢はたくさんある。 https://kubernetes.io/docs/concepts/cluster-administration/networking/#how-to-achieve-this

[user@k8s-master ~]# export kubever=$(kubectl version | base64 | tr -d '\n')

[user@k8s-master ~]# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
serviceaccount "weave-net" created
clusterrole "weave-net" created
clusterrolebinding "weave-net" created
daemonset "weave-net" created

以下のようになったらmaster作成成功。STATUSがReadyになるまでしばらくかかる。

[user@k8s-master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION
k8s-master Ready master 4m v1.9.0


worker nodeの作成


初期設定

# まずhostnameを変える

[user@localhost ~]# hostnamectl set-hostname 'worker-node1'
# 次に/etc/hostsを編集。アドレスはそれぞれ適切なものに変えて下さい。
[user@worker-node1 ~]# cat /etc/hosts
10.26.5.22 k8s-master
10.26.5.23 worker-node1

[user@worker-node1 ~]# setenforce 0

[user@worker-node1 ~]# sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 本当はちゃんと設定すべき
[user@worker-node1 ~]# systemctl stop firewalld
[user@worker-node1 ~]# systemctl disable firewalld


Kubernetes Repositoryの設定

[user@worker-node1 ~]# cat /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
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


Kubeadm と Dockerのインストール

Dockerはversion17以降を入れる。

[user@k8s-master ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2

[user@k8s-master ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[user@k8s-master ~]# sudo yum makecache fast
[user@k8s-master ~]# sudo yum remove docker docker-common docker-selinux docker-engine
[user@k8s-master ~]# sudo yum install docker-ce
[user@k8s-master ~]# sudo yum install kubeadm -y

[user@k8s-master ~]# systemctl restart docker && systemctl enable docker
[user@k8s-master ~]# systemctl restart kubelet && systemctl enable kubelet


worker nodeをmaster nodeにjoinさせる

[user@worker-node1 ~]# sudo swapoff -a

# 注意: kubeadm joinコマンドは、master上でkubeadm initをした結果出力されたkubeadm join文字列をコピーして実行すること。
[user@worker-node1 ~]# sudo kubeadm join --token 28733d.3d360974098917f2 10.26.5.22:6443 --discovery-token-ca-cert-hash sha256:be78688abb6dfad729928eccbc49b4413cd19278ccf60826ee82e6ffb9525a5c

もし以下のようなエラーになった場合

[user@worker-node1 ~]$ sudo kubeadm join --token 360314.00f9c2183f273d11 10.26.5.54:6443 --discovery-token-ca-cert-hash sha256:0639d11cf722491bf4ce5cf7aef1da122ec7ffaa78e7d9e93d27a4e2d1b7b5a9
[preflight] Running pre-flight checks.
[WARNING FileExisting-crictl]: crictl not found in system path
[preflight] Some fatal errors occurred:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

rootになって以下を行い、kubeadm joinコマンドを実行する
$ su -
$ echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

master nodeのほうで以下のようになったらworker node作成成功

[user@k8s-master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION
k8s-master Ready master 12m v1.9.0
worker-node1 Ready <none> 11s v1.9.0