27
37

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-03-20

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
27
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
37