LoginSignup
0
0

More than 3 years have passed since last update.

kubeadmでのk8sクラスタの構築 2/3

Last updated at Posted at 2020-02-24

前回の内容

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トラフィックの許可

以下のファイルを作成する。

/etc/sysctl.d/k8s.conf
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
/etc/docker/daemon.json
{
        "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のパッケージインストール

リポジトリの登録

以下のファイルを作成する。

/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
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

以下のファイルを作成する。

/var/lib/kubelet/config.yaml
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: "systemd"

kubeletサービスオプションの設定

以下のファイルを作成する。

# mkdir /etc/systemd/system/kubelet.service.d
/etc/systemd/system/kubelet.service.d/20-extra-args.conf
[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ノードをクローンで作る。

続き

kubeadmでのk8sクラスタの構築 3/3

参考資料

Kubernetes実践ガイド

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