このセクションでは、コンテナ化されたアプリケーションのデプロイ、スケジューリング、スケーリングなどの管理を自動化するためのコンテナオーケストレーションエンジンである Kubernetes を Masterにインストールする方法について紹介します。

ここでは、Kubernetes Master × 1台、Kubernetes Node × 2台のクラスター構成を前提にしています。

事前準備

swap が有効だとインストールが失敗するようなので、swap を無効化しておきます。

[root@localhost ~]# swapoff -a
[root@localhost ~]# 

リブートしてもスワップが有効にならないように、fstab 設定ファイルを編集します。

[root@localhost ~]# vi /etc/fstab 
(以下行をコメントアウト)
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

swap 領域の状態を確認します。swap 領域がすべてゼロになっていることが確認できます。

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1882736      110792      533044        8668     1238900     1542328
Swap:             0           0           0
[root@localhost ~]# 

Docker のインストール

リポジトリの追加に必要なパッケージをインストールします。

[root@kube-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
パッケージ device-mapper-persistent-data-0.7.3-3.el7.x86_64 はインストール済みか最新バージョンです
パッケージ 7:lvm2-2.02.180-10.el7_6.2.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-utils.noarch 0:1.1.31-50.el7 を インストール
--> 依存性の処理をしています: python-kitchen のパッケージ: yum-utils-1.1.31-50.el7.noarch
--> 依存性の処理をしています: libxml2-python のパッケージ: yum-utils-1.1.31-50.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ libxml2-python.x86_64 0:2.9.1-6.el7_2.3 を インストール
---> パッケージ python-kitchen.noarch 0:1.1.1-5.el7 を インストール
--> 依存性の処理をしています: python-chardet のパッケージ: python-kitchen-1.1.1-5.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-chardet.noarch 0:2.2.1-1.el7_1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package               アーキテクチャー
                                     バージョン               リポジトリー
                                                                           容量
================================================================================
インストール中:
 yum-utils             noarch        1.1.31-50.el7            base        121 k
依存性関連でのインストールをします:
 libxml2-python        x86_64        2.9.1-6.el7_2.3          base        247 k
 python-chardet        noarch        2.2.1-1.el7_1            base        227 k
 python-kitchen        noarch        1.1.1-5.el7              base        267 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 861 k
インストール容量: 4.3 M
Downloading packages:
(1/4): libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm           | 247 kB   00:00     
(2/4): python-chardet-2.2.1-1.el7_1.noarch.rpm             | 227 kB   00:00     
(3/4): yum-utils-1.1.31-50.el7.noarch.rpm                  | 121 kB   00:00     
(4/4): python-kitchen-1.1.1-5.el7.noarch.rpm               | 267 kB   00:00     
--------------------------------------------------------------------------------
合計                                               1.4 MB/s | 861 kB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-chardet-2.2.1-1.el7_1.noarch             1/4 
  インストール中          : python-kitchen-1.1.1-5.el7.noarch               2/4 
  インストール中          : libxml2-python-2.9.1-6.el7_2.3.x86_64           3/4 
  インストール中          : yum-utils-1.1.31-50.el7.noarch                  4/4 
  検証中                  : libxml2-python-2.9.1-6.el7_2.3.x86_64           1/4 
  検証中                  : python-kitchen-1.1.1-5.el7.noarch               2/4 
  検証中                  : yum-utils-1.1.31-50.el7.noarch                  3/4 
  検証中                  : python-chardet-2.2.1-1.el7_1.noarch             4/4 

インストール:
  yum-utils.noarch 0:1.1.31-50.el7                                              

依存性関連をインストールしました:
  libxml2-python.x86_64 0:2.9.1-6.el7_2.3 python-chardet.noarch 0:2.2.1-1.el7_1
  python-kitchen.noarch 0:1.1.1-5.el7    

完了しました!
[root@kube-master ~]# 

最新バージョンの Docker をインストールするために、Docker のリポジトリを追加します。

[root@kube-master ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
読み込んだプラグイン:fastestmirror
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
[root@kube-master ~]# 

Docker をインストールします。

[root@kube-master ~]# yum install docker-ce -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce.x86_64 3:18.09.0-3.el7 を インストール
--> 依存性の処理をしています: container-selinux >= 2.9 のパッケージ: 3:docker-ce-18.09.0-3.el7.x86_64
--> 依存性の処理をしています: containerd.io のパッケージ: 3:docker-ce-18.09.0-3.el7.x86_64
--> 依存性の処理をしています: docker-ce-cli のパッケージ: 3:docker-ce-18.09.0-3.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ container-selinux.noarch 2:2.74-1.el7 を インストール
--> 依存性の処理をしています: policycoreutils-python のパッケージ: 2:container-selinux-2.74-1.el7.noarch
---> パッケージ containerd.io.x86_64 0:1.2.0-3.el7 を インストール
---> パッケージ docker-ce-cli.x86_64 1:18.09.0-3.el7 を インストール
--> 依存性の処理をしています: libltdl.so.7()(64bit) のパッケージ: 1:docker-ce-cli-18.09.0-3.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libtool-ltdl.x86_64 0:2.4.2-22.el7_3 を インストール
---> パッケージ policycoreutils-python.x86_64 0:2.5-29.el7 を インストール
--> 依存性の処理をしています: setools-libs >= 3.3.8-4 のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libsemanage-python >= 2.5-14 のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: audit-libs-python >= 2.1.3-4 のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: python-IPy のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.4)(64bit) のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.2)(64bit) のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libcgroup のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libapol.so.4(VERS_4.0)(64bit) のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: checkpolicy のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1()(64bit) のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> 依存性の処理をしています: libapol.so.4()(64bit) のパッケージ: policycoreutils-python-2.5-29.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ audit-libs-python.x86_64 0:2.8.4-4.el7 を インストール
---> パッケージ checkpolicy.x86_64 0:2.5-8.el7 を インストール
---> パッケージ libcgroup.x86_64 0:0.41-20.el7 を インストール
---> パッケージ libsemanage-python.x86_64 0:2.5-14.el7 を インストール
---> パッケージ python-IPy.noarch 0:0.75-6.el7 を インストール
---> パッケージ setools-libs.x86_64 0:3.3.8-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                   バージョン          リポジトリー        容量
================================================================================
インストール中:
 docker-ce                x86_64   3:18.09.0-3.el7     docker-ce-stable    19 M
依存性関連でのインストールをします:
 audit-libs-python        x86_64   2.8.4-4.el7         base                76 k
 checkpolicy              x86_64   2.5-8.el7           base               295 k
 container-selinux        noarch   2:2.74-1.el7        extras              38 k
 containerd.io            x86_64   1.2.0-3.el7         docker-ce-stable    22 M
 docker-ce-cli            x86_64   1:18.09.0-3.el7     docker-ce-stable    14 M
 libcgroup                x86_64   0.41-20.el7         base                66 k
 libsemanage-python       x86_64   2.5-14.el7          base               113 k
 libtool-ltdl             x86_64   2.4.2-22.el7_3      base                49 k
 policycoreutils-python   x86_64   2.5-29.el7          base               456 k
 python-IPy               noarch   0.75-6.el7          base                32 k
 setools-libs             x86_64   3.3.8-4.el7         base               620 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+11 個の依存関係のパッケージ)

総ダウンロード容量: 56 M
インストール容量: 241 M
Downloading packages:
(1/12): audit-libs-python-2.8.4-4.el7.x86_64.rpm           |  76 kB   00:00     
(2/12): container-selinux-2.74-1.el7.noarch.rpm            |  38 kB   00:00     
(3/12): checkpolicy-2.5-8.el7.x86_64.rpm                   | 295 kB   00:00     
warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/containerd.io-1.2.0-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
containerd.io-1.2.0-3.el7.x86_64.rpm の公開鍵がインストールされていません
(4/12): containerd.io-1.2.0-3.el7.x86_64.rpm               |  22 MB   00:03     
(5/12): libcgroup-0.41-20.el7.x86_64.rpm                   |  66 kB   00:00     
(6/12): policycoreutils-python-2.5-29.el7.x86_64.rpm       | 456 kB   00:00     
(7/12): python-IPy-0.75-6.el7.noarch.rpm                   |  32 kB   00:00     
(8/12): libsemanage-python-2.5-14.el7.x86_64.rpm           | 113 kB   00:00     
(9/12): setools-libs-3.3.8-4.el7.x86_64.rpm                | 620 kB   00:00     
(10/12): libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm            |  49 kB   00:00     
(11/12): docker-ce-cli-18.09.0-3.el7.x86_64.rpm            |  14 MB   00:02     
(12/12): docker-ce-18.09.0-3.el7.x86_64.rpm                |  19 MB   00:06     
--------------------------------------------------------------------------------
合計                                               8.1 MB/s |  56 MB  00:06     
https://download.docker.com/linux/centos/gpg から鍵を取得中です。
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 From       : https://download.docker.com/linux/centos/gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : containerd.io-1.2.0-3.el7.x86_64               1/12 
  インストール中          : setools-libs-3.3.8-4.el7.x86_64                2/12 
  インストール中          : audit-libs-python-2.8.4-4.el7.x86_64           3/12 
  インストール中          : checkpolicy-2.5-8.el7.x86_64                   4/12 
  インストール中          : libtool-ltdl-2.4.2-22.el7_3.x86_64             5/12 
  インストール中          : 1:docker-ce-cli-18.09.0-3.el7.x86_64           6/12 
  インストール中          : python-IPy-0.75-6.el7.noarch                   7/12 
  インストール中          : libsemanage-python-2.5-14.el7.x86_64           8/12 
  インストール中          : libcgroup-0.41-20.el7.x86_64                   9/12 
  インストール中          : policycoreutils-python-2.5-29.el7.x86_64      10/12 
  インストール中          : 2:container-selinux-2.74-1.el7.noarch         11/12 
  インストール中          : 3:docker-ce-18.09.0-3.el7.x86_64              12/12 
  検証中                  : libcgroup-0.41-20.el7.x86_64                   1/12 
  検証中                  : 3:docker-ce-18.09.0-3.el7.x86_64               2/12 
  検証中                  : libsemanage-python-2.5-14.el7.x86_64           3/12 
  検証中                  : policycoreutils-python-2.5-29.el7.x86_64       4/12 
  検証中                  : 1:docker-ce-cli-18.09.0-3.el7.x86_64           5/12 
  検証中                  : python-IPy-0.75-6.el7.noarch                   6/12 
  検証中                  : libtool-ltdl-2.4.2-22.el7_3.x86_64             7/12 
  検証中                  : containerd.io-1.2.0-3.el7.x86_64               8/12 
  検証中                  : checkpolicy-2.5-8.el7.x86_64                   9/12 
  検証中                  : 2:container-selinux-2.74-1.el7.noarch         10/12 
  検証中                  : audit-libs-python-2.8.4-4.el7.x86_64          11/12 
  検証中                  : setools-libs-3.3.8-4.el7.x86_64               12/12 

インストール:
  docker-ce.x86_64 3:18.09.0-3.el7                                              

依存性関連をインストールしました:
  audit-libs-python.x86_64 0:2.8.4-4.el7                                        
  checkpolicy.x86_64 0:2.5-8.el7                                                
  container-selinux.noarch 2:2.74-1.el7                                         
  containerd.io.x86_64 0:1.2.0-3.el7                                            
  docker-ce-cli.x86_64 1:18.09.0-3.el7                                          
  libcgroup.x86_64 0:0.41-20.el7                                                
  libsemanage-python.x86_64 0:2.5-14.el7                                        
  libtool-ltdl.x86_64 0:2.4.2-22.el7_3                                          
  policycoreutils-python.x86_64 0:2.5-29.el7                                    
  python-IPy.noarch 0:0.75-6.el7                                                
  setools-libs.x86_64 0:3.3.8-4.el7                                             

完了しました!
[root@kube-master ~]#

インストールした Docker のバージョンを確認します。

[root@kube-master ~]# docker -v
Docker version 18.09.0, build 4d60db4
[root@kube-master ~]# 

Docker サービスの自動起動を有効化します。

■ 自動起動の有効化
[root@kube-master ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@kube-master ~]#

■ 自動起動の状態確認 
[root@kube-master ~]# systemctl is-enabled docker
enabled
[root@kube-master ~]# 

Docker サービスを起動します。

■ 起動
[root@kube-master ~]# systemctl start docker
[root@kube-master ~]# 

■ 起動状態の確認
[root@kube-master ~]# 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 木 2019-01-03 07:09:35 JST; 4s ago
     Docs: https://docs.docker.com
 Main PID: 3993 (dockerd)
    Tasks: 21
   Memory: 47.2M
   CGroup: /system.slice/docker.service
           ├─3993 /usr/bin/dockerd -H unix://
           └─4007 containerd --config /var/run/docker/containerd/containerd.t...

 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.50433...c
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.53782..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.53876..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.76080..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.93075..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.95385...0
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.95460..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.96534..."
 1月 03 07:09:35 kube-master dockerd[3993]: time="2019-01-03T07:09:35.96971..."
 1月 03 07:09:35 kube-master systemd[1]: Started Docker Application Contain....
Hint: Some lines were ellipsized, use -l to show in full.
[root@kube-master ~]# 

Kubernetes のインストール

Kubernetes をインストールするためのリポジトリを作成します。

[root@kube-master ~]# cat <<EOF > /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
EOF
[root@kube-master ~]# 

Kubernetes に関連するパッケージをインストールします。

[root@kube-master ~]# yum install -y kubelet kubeadm kubectl
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kubeadm.x86_64 0:1.13.1-0 を インストール
--> 依存性の処理をしています: kubernetes-cni >= 0.6.0 のパッケージ: kubeadm-1.13.1-0.x86_64
--> 依存性の処理をしています: cri-tools >= 1.11.0 のパッケージ: kubeadm-1.13.1-0.x86_64
---> パッケージ kubectl.x86_64 0:1.13.1-0 を インストール
---> パッケージ kubelet.x86_64 0:1.13.1-0 を インストール
--> 依存性の処理をしています: socat のパッケージ: kubelet-1.13.1-0.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ cri-tools.x86_64 0:1.12.0-0 を インストール
---> パッケージ kubernetes-cni.x86_64 0:0.6.0-0 を インストール
---> パッケージ socat.x86_64 0:1.7.3.2-2.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package              アーキテクチャー
                                   バージョン            リポジトリー      容量
================================================================================
インストール中:
 kubeadm              x86_64       1.13.1-0              kubernetes       7.9 M
 kubectl              x86_64       1.13.1-0              kubernetes       8.5 M
 kubelet              x86_64       1.13.1-0              kubernetes        21 M
依存性関連でのインストールをします:
 cri-tools            x86_64       1.12.0-0              kubernetes       4.2 M
 kubernetes-cni       x86_64       0.6.0-0               kubernetes       8.6 M
 socat                x86_64       1.7.3.2-2.el7         base             290 k

トランザクションの要約
================================================================================
インストール  3 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 50 M
インストール容量: 231 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/kubernetes/packages/53edc739a0e51a4c17794de26b13ee5df939bd3161b37f503fe2af8980b41a89-cri-tools-1.12.0-0.x86_64.rpm: ヘッダー V4 RSA/SHA512 Signature、鍵 ID 3e1ba8d5: NOKEY
53edc739a0e51a4c17794de26b13ee5df939bd3161b37f503fe2af8980b41a89-cri-tools-1.12.0-0.x86_64.rpm の公開鍵がインストールされていません
(1/6): 53edc739a0e51a4c17794de26b13ee5df939bd3161b37f503fe | 4.2 MB   00:01     
(2/6): 5af5ecd0bc46fca6c51cc23280f0c0b1522719c282e23a2b1c3 | 7.9 MB   00:01     
(3/6): 7855313ff2b42ebcf499bc195f51d56b8372abee1a19bbf15bb | 8.5 MB   00:02     
(4/6): socat-1.7.3.2-2.el7.x86_64.rpm                      | 290 kB   00:00     
(5/6): fe33057ffe95bfae65e2f269e1b05e99308853176e24a4d027b | 8.6 MB   00:02     
(6/6): 25cd948f63fea40e81e43fbe2e5b635227cc5bbda6d5e15d42a |  21 MB   00:03     
--------------------------------------------------------------------------------
合計                                               8.9 MB/s |  50 MB  00:05     
https://packages.cloud.google.com/yum/doc/yum-key.gpg から鍵を取得中です。
Importing GPG key 0xA7317B0F:
 Userid     : "Google Cloud Packages Automatic Signing Key <gc-team@google.com>"
 Fingerprint: d0bc 747f d8ca f711 7500 d6fa 3746 c208 a731 7b0f
 From       : https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg から鍵を取得中です。
Importing GPG key 0x3E1BA8D5:
 Userid     : "Google Cloud Packages RPM Signing Key <gc-team@google.com>"
 Fingerprint: 3749 e1ba 95a8 6ce0 5454 6ed2 f09c 394c 3e1b a8d5
 From       : https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : socat-1.7.3.2-2.el7.x86_64                      1/6 
  インストール中          : kubernetes-cni-0.6.0-0.x86_64                   2/6 
  インストール中          : kubelet-1.13.1-0.x86_64                         3/6 
  インストール中          : kubectl-1.13.1-0.x86_64                         4/6 
  インストール中          : cri-tools-1.12.0-0.x86_64                       5/6 
  インストール中          : kubeadm-1.13.1-0.x86_64                         6/6 
  検証中                  : cri-tools-1.12.0-0.x86_64                       1/6 
  検証中                  : kubelet-1.13.1-0.x86_64                         2/6 
  検証中                  : kubectl-1.13.1-0.x86_64                         3/6 
  検証中                  : kubernetes-cni-0.6.0-0.x86_64                   4/6 
  検証中                  : socat-1.7.3.2-2.el7.x86_64                      5/6 
  検証中                  : kubeadm-1.13.1-0.x86_64                         6/6 

インストール:
  kubeadm.x86_64 0:1.13.1-0 kubectl.x86_64 0:1.13.1-0 kubelet.x86_64 0:1.13.1-0

依存性関連をインストールしました:
  cri-tools.x86_64 0:1.12.0-0           kubernetes-cni.x86_64 0:0.6.0-0         
  socat.x86_64 0:1.7.3.2-2.el7         

完了しました!
[root@kube-master ~]# 

Kubernetes サービスの自動起動を有効化します。

■ 自動起動の有効化
[root@kube-master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /etc/systemd/system/kubelet.service.
[root@kube-master ~]# 

■ 自動起動の状態確認
[root@kube-master ~]# systemctl is-enabled kubelet
enabled
[root@kube-master ~]# 

Kubernetes サービスを起動します。

■ 起動
[root@kube-master ~]# systemctl start kubelet
[root@kube-master ~]# 

■ 起動状態の確認
[root@kube-master ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since 木 2019-01-03 07:18:41 JST; 3s ago
     Docs: https://kubernetes.io/docs/
  Process: 4390 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=255)
 Main PID: 4390 (code=exited, status=255)

 1月 03 07:18:41 kube-master systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a
 1月 03 07:18:41 kube-master systemd[1]: Unit kubelet.service entered failed state.
 1月 03 07:18:41 kube-master systemd[1]: kubelet.service failed.
[root@kube-master ~]# 

iptables がバイパスしているため、正しくルーティングされない問題がいくつか報告されているようなので、それを回避する設定をします。

[root@kube-master ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@kube-master ~]# 

sysctl – – system コマンドを実行し、以下設定が反映されていることを確認します。
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

[root@kube-master ~]# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
kernel.yama.ptrace_scope = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.d/k8s.conf ...
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
* Applying /etc/sysctl.conf ...
[root@kube-master ~]# 

dockerが使用している cgrourp driver を確認します。

[root@kube-master ~]# docker info | grep -i cgroup
Cgroup Driver: cgroupfs
[root@kube-master ~]# 

kubeletが認識している cgroup driver を確認します。 kubeleteでは、cgroup driver は特に表示されない。 dockerが使用している cgrourp driver と kubelet が認識している cgroup driverを一致している必要があるようであるが、特に何もしない。

[root@kube-master ~]# cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
[root@kube-master ~]#