#前回の内容
kubeadmでのk8sクラスタの構築 1
#はじめに
masterノードにKubernetesの関連パッケージをインストールする。
workerノードはパッケージをインストールしたmasterをクローンして作る。
#事前準備(master)
今の状態のスナップショットを取っておく。
#masterノードのセットアップ
##swapの無効化
swapがあるとkubeletが起動しないので、無効化する。
swapoffだけだと再起動すると元に戻るので、/etc/fstabファイルのswapの記述をコメントアウトする。
$ sudo swapoff -a
$ sudo vi /etc/fstab
・・・
#/dev/mapper/centos-swap swap swap defaults 0 0 <--コメントアウト
##ブリッジでのIPv4/IPv6トラフィックの許可
以下のファイルを作成する。
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
##SELinuxの無効化
$ sudo setenforce 0
/etc/selinux/configファイルのSELINUXパラメータを「permissive」に変更する。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
・・・
##コンテナランタイムのインストール
ここでは、Docker CEを使用するので、CentOSにデフォルトでdocker関連のパッケージが入っているか確認する。入っていたら、削除する。
# yum list installed | grep docker
Docker CEのインストールに必要なパッケージがインストールされているか確認する。インストールされていなかったら、インストールする。
# yum list installed | grep yum-utils
yum-utils.noarch 1.1.31-52.el7 @anaconda
# yum list installed | grep device-mapper-persistent-data
device-mapper-persistent-data.x86_64 0.8.5-1.el7 @anaconda
# yum list installed | grep lvm2
lvm2.x86_64 7:2.02.185-2.el7_7.2 @updates
lvm2-libs.x86_64 7:2.02.185-2.el7_7.2 @updates
###yumリポジトリの登録
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
読み込んだプラグイン:fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
###Docker CEのインストール
# yum makecache fast
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
・・・
メタデータのキャッシュを作成しました
# yum install docker-ce.x86_64
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* extras: ty1.mirror.newmediaexpress.com
* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています
・・・
依存性関連をインストールしました:
audit-libs-python.x86_64 0:2.8.5-4.el7 checkpolicy.x86_64 0:2.5-8.el7 container-selinux.noarch 2:2.107-3.el7 containerd.io.x86_64 0:1.2.10-3.2.el7
docker-ce-cli.x86_64 1:19.03.6-3.el7 libsemanage-python.x86_64 0:2.5-14.el7 policycoreutils-python.x86_64 0:2.5-33.el7 python-IPy.noarch 0:0.75-6.el7
setools-libs.x86_64 0:3.3.8-4.el7
完了しました!
念のため確認する。
# yum list installed | grep docker
containerd.io.x86_64 1.2.10-3.2.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.6-3.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:19.03.6-3.el7 @docker-ce-stable
###設定ファイルの作成
以下のファイルを作成する。
# mkdir /etc/docker
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
###Dockerの起動
# mkdir -p /etc/systemd/system/docker.service.d
# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# systemctl daemon-reload
# systemctl start docker
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2020-02-24 22:35:47 JST; 6s ago
・・・
##kubernetesのパッケージインストール
###リポジトリの登録
以下のファイルを作成する。
[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
exclude=kube*
###パッケージインストール
# yum install kubelet --disableexcludes=kubernetes
# yum install kubeadm --disableexcludes=kubernetes
# yum install kubectl --disableexcludes=kubernetes
念のため確認
# yum list installed | grep kube
cri-tools.x86_64 1.13.0-0 @kubernetes
kubeadm.x86_64 1.17.3-0 @kubernetes
kubectl.x86_64 1.17.3-0 @kubernetes
kubelet.x86_64 1.17.3-0 @kubernetes
kubernetes-cni.x86_64 0.7.5-0 @kubernetes
###cgroupドライバの確認と設定
# docker info | grep Cgroup
Cgroup Driver: systemd
以下のファイルを作成する。
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: "systemd"
###kubeletサービスオプションの設定
以下のファイルを作成する。
# mkdir /etc/systemd/system/kubelet.service.d
[Service]
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
サービスをロードする
# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
# systemctl daemon-reload
# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
#まとめ
これでmasterノードはinitすればいいはず。
initする前に、workerノードをクローンで作る。
#参考資料
Kubernetes実践ガイド