今回は「CentOS上にシングルマスター構成のKubernetesクラスターを構築する方法」についてまとめます。
いくつかブログやホームページを確認しながらやってみたのですが、うまくいかないものですね… 今回の記事では「目指せ冪等!」としてバージョン指定で構築方法をまとめました。
概要
マスターノード1台、ワーカーノード2台の3台構成で構築してみます。 同一筐体の上に仮想マシン3台を作成して、その3台でクラスタ環境を構築していきます。
利用するモジュール類は以下のようなものです。
- docker (コンテナエンジン)
- flannel (ネットワーク)
- kubeadm (Kubernetes 構築ツール)
Dockerはきちんとバージョン指定するのに、手作業の環境構築でバージョン指定しない違和感が激しかったので、今回はきちんとバージョン指定で環境構築していきます。 利用しているパッケージやイメージのバージョンは以下の通りです。
OS |
---|
CentOS Linux release 7.3.1611 (Core) |
パッケージ | アーキテクチャー | バージョン |
---|---|---|
systemd | x86_64 | 219-62.el7_6.6 |
docker-ce | x86_64 | 18.09.6 |
docker-ce-cli | x86_64 | 18.09.6 |
containerd.io | x86_64 | 1.2.5 |
kubeadm | x86_64 | 1.14.2 |
kubectl | x86_64 | 1.14.2 |
kubelet | x86_64 | 1.14.2 |
イメージ | バージョン |
---|---|
flannel | 0.11.0 |
OSが少し古いものを使いまわしていたので systemd の更新をしないと cgroup-driver を systemd に変更して動作させることができませんでした。 上の表はあらかじめアップデート済みの状態で記述しています。 もし、バージョンが異なるようであれば事前にアップデートが必要になります。
仮想マシン準備
必要となる仮想マシン3台分(マスター1台、ワーカー2台)を準備します。
基本的に root ユーザーで実施していきます( sudo
が手間なので…)。
仮想マシン作成
仮想マシンを作成する際、以下のような内容で作成しました。 基本的にはデフォルトのままで、CPUだけ修正しています。 Kubernetes は CPU コア 2コア 以上 で作成しないと動作しないので、作成時に間違えないよう注意してください。
CPU | 2コア |
---|---|
メモリ | 2048MB |
ハードディスク | 16GB |
SCSI コントローラ | VMware Paravirtual |
ネットワーク アダプタ | VM Network |
CD/DVD ドライブ |
データストア ISO ファイル (CentOS 7 のインストーラー イメージ) |
systemdの更新
この手順は OS のバージョンによっては不要です。 バージョン確認して新しければいったんスキップしてもよいでしょう。 もし、「kubelet が systemd で起動できない」といった症状が出た場合はこの手順に戻って更新が必要になります。
バージョン確認
1 | yum list | grep systemd |
systemdの入れ直し
1 2 | yum remove systemd yum install systemd-219-62.el7_6.6.x86_64 |
マスターノード、ワーカーノード共通の構築
ホスト名、IPアドレス
あとで出てくるコマンド kubeadm init
においてIPは決められている前提になるので、最初に固定しておきます。
-
ホスト名の設定
1hostnamectl
set
-hostname <hostname>
-
ネットワークの設定
1vi /etc/sysconfig/network-scripts/ifcfg-ens192
12345678910111213141516171819TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens192"
DEVICE="ens192"
ONBOOT="yes"
IPADDR=10.51.1.100
PREFIX=16
GATEWAY=10.51.0.254
DNS1=8.8.8.8
DNS2=8.8.4.4
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
1systemctl restart network
swap 無効化
swap が有効だと kubelet
が起動しないので、 swap をあらかじめ無効化しておきます。
-
swapを一時的に無効化
1swapoff -a
-
swapを恒久的に無効化
リブート時に再有効化されないためには
/etc/fstab
の内容を一部コメントアウトします。 コメントアウトするのはswap
の記載がある行(L.10)です。1vi /etc/fstab
12345678910#
# /etc/fstab
# Created by anaconda on Thu May 23 20:34:05 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=868f654f-e5e7-4369-9b43-99c462ac384d /boot xfs defaults 0 0
# /dev/mapper/cl-swap swap swap defaults 0 0
Docker インストール
今回はコンテナエンジンとして「Docker」を利用します。 Dockerは cgroup-driver にデフォルトだと cgroupfs を利用しているので、 Kubernetes 推奨の systemd で起動するように変更して設定していきます。
-
実行に必要なパッケージをインストール
1yum install -y yum-utils device-mapper-persistent-data lvm2
-
安定板リポジトリを設定
1yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
DockerCEをインストール
1234sudo yum install \
docker-ce-18.09.6 \
docker-ce-cli-18.09.6 \
containerd.io-1.2.5
-
daemonの設定
systemd 経由で起動されるよう
/etc/docker/daemon.json
ファイルを以下の内容で作成します。1vi /etc/docker/daemon.json
12345678{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
以下のコマンドを実行してサービス用のフォルダを作成します。
1mkdir
-p /etc/systemd/system/docker.service.d
-
daemonの再読み込み
1systemctl daemon-reload
-
Dockerの自動起動を有効化
1systemctl enable docker
-
Dockerを起動
1systemctl
start
docker
Dockerが正常にインストールできたかどうかは、docker run hello-world
コマンドを実行して確認できます。
以下には実行結果のサンプルも含めて掲載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [root@k8s-master ~]# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:0e11c388b664df8a27a901dce21eb89f11d8292f7fca1b3e3c4321bf7897bffe Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: For more examples and ideas, visit: |
Kubernetes インストール
Kubernetes といってもインストールする実態は kubeadm 、 kubelet 、 kubectl の3つです。
-
ネットワーク設定(iptables)
以下のような内容の
/etc/sysctl.d/k8s.conf
ファイルを作成します。1vi /etc/sysctl.d/k8s.conf
12net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
以下のコマンドで設定ファイルの読み込みを行います。
1sysctl --system
-
ネットワーク設定(hosts)
ホスト名でアクセスできるよう、
/etc/hosts
に以下のネットワーク情報を追記します。1vi /etc/hosts
12310.51.1.100 k8s-master
10.51.1.101 k8s-node01
10.51.1.102 k8s-node02
-
リポジトリの設定
以下のような内容の
/etc/yum.repos.d/kubernetes.repo
ファイルを作成12345678[kubernetes]
name=Kubernetes
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*
-
SELinux の 無効化
12setenforce 0
sed -i
's/^SELINUX=enforcing$/SELINUX=permissive/'
/etc/selinux/config
-
Kubernetes の インストール
12345yum install -y \
kubelet-1.14.2-0.x86_64 \
kubeadm-1.14.2-0.x86_64 \
kubectl-1.14.2-0.x86_64 \
--disableexcludes=kubernetes
-
daemonの設定変更
Cgroup Driver に systemd を指定します。
/var/lib/kubelet/kubeadm-flags.env
ファイルの内容に以下を追記します。1vi /var/lib/kubelet/kubeadm-flags.env
1KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
-
daemonの再読み込み
1systemctl daemon-reload
-
kubelet の 有効化
1systemctl enable kubelet
-
kubelet の 起動
1systemctl
start
kubelet
このタイミングまでの動作確認をしたい場合、 systemctl status kubelet
で kubelet が起動しているかどうかを確認すると良いです。
以下に実行サンプルを掲載します。
1 2 3 4 5 6 7 8 9 10 11 12 | [root@k8s-master ~]# 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 mq10-kubeadm.conf Active: active (running) since 日 2019-06-02 18:26:32 JST; 6h ago Main PID: 18332 (kubelet) Tasks: 16 Memory: 96.8M CGroup: /system.slice/kubelet.service mq18332 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kube... |
マスタノード構築
以下の手順はマスターノードだけで行う作業です。 マスターノードにアクセスして実行していきます。
ファイアウォール設定
-
ポートの開放
ポートレンジ プロトコル 用途 6443 TCP Kubernetes API Server 2379-2380 TCP etcd 10250 TCP kubelet 10251 TCP kube-scheduler 10252 TCP kube-controller-manager 123456sudo firewall-
cmd
--zone public --add-port 6443/tcp --permanent
sudo firewall-
cmd
--zone public --add-port 2379-2380/tcp --permanent
sudo firewall-
cmd
--zone public --add-port 10250/tcp --permanent
sudo firewall-
cmd
--zone public --add-port 10251/tcp --permanent
sudo firewall-
cmd
--zone public --add-port 10252/tcp --permanent
sudo firewall-
cmd
--reload
マスターノードの初期化
-
初期化
1234sudo kubeadm init \
--apiserver-advertise-address 10.51.1.100 \
--kubernetes-version 1.14.2 \
--pod-network-cidr 10.244.0.0/16
フラグ 必須 説明 --apiserver-advertise-address string APIサーバーとして受け付けるIPアドレス。指定しなければデフォルトネットワークインターフェースが利用される --apiserver-bind-port int32 APIサーバーとして受け付けるポート。デフォルト 6443
。--cert-dir string 証明書の保存先を指定。デフォルトは /etc/kubernetes/pki
。--config string kubeadm 用設定ファイル へのパスを指定。 --image-repository string イメージを取得するリポジトリを指定。デフォルトは k8s.gcr.io
。--kubernetes-version string Kubernetes の バージョン を指定。デフォルトは stable-1
。--node-name string ノード名を指定。 --pod-network-cidr string ○ Podネットワークで利用するIPアドレス範囲を指定。CNIにFlannelを利用する場合、 10.244.0.0/16
を指定。--service-cidr string サービスに割り当てるVIP範囲を指定。デフォルトは 10.96.0.0/12 。 --service-dns-domain string サービスに割り当てるドメイン名を指定。デフォルトは cluster.local
実行結果
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869[root@k8s-master ~]# kubeadm init --apiserver-advertise-address 10.51.1.100 \
> --kubernetes-version 1.14.2 \
> --pod-network-cidr 10.244.0.0/16
[init] Using Kubernetes version: v1.14.2
[preflight] Running pre-flight checks
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may
not
function correctly
[preflight] Pulling images required
for
setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action
in
beforehand using
'kubeadm config images pull'
[kubelet-
start
] Writing kubelet environment file with flags to file
"/var/lib/kubelet/kubeadm-flags.env"
[kubelet-
start
] Writing kubelet configuration to file
"/var/lib/kubelet/config.yaml"
[kubelet-
start
] Activating the kubelet service
[certs] Using certificateDir folder
"/etc/kubernetes/pki"
[certs] Generating
"etcd/ca"
certificate and key
[certs] Generating
"etcd/healthcheck-client"
certificate and key
[certs] Generating
"etcd/peer"
certificate and key
[certs] etcd/peer serving cert is signed
for
DNS names [k8s-node00 localhost] and IPs [10.51.2.191 127.0.0.1 ::1]
[certs] Generating
"apiserver-etcd-client"
certificate and key
[certs] Generating
"etcd/server"
certificate and key
[certs] etcd/server serving cert is signed
for
DNS names [k8s-node00 localhost] and IPs [10.51.2.191 127.0.0.1 ::1]
[certs] Generating
"ca"
certificate and key
[certs] Generating
"apiserver"
certificate and key
[certs] apiserver serving cert is signed
for
DNS names [k8s-node00 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.51.2.191]
[certs] Generating
"apiserver-kubelet-client"
certificate and key
[certs] Generating
"front-proxy-ca"
certificate and key
[certs] Generating
"front-proxy-client"
certificate and key
[certs] Generating
"sa"
key and public key
[kubeconfig] Using kubeconfig folder
"/etc/kubernetes"
[kubeconfig] Writing
"admin.conf"
kubeconfig file
[kubeconfig] Writing
"kubelet.conf"
kubeconfig file
[kubeconfig] Writing
"controller-manager.conf"
kubeconfig file
[kubeconfig] Writing
"scheduler.conf"
kubeconfig file
[control-plane] Using manifest folder
"/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest
for
"kube-apiserver"
[control-plane] Creating static Pod manifest
for
"kube-controller-manager"
[control-plane] Creating static Pod manifest
for
"kube-scheduler"
[etcd] Creating static Pod manifest
for
local etcd
in
"/etc/kubernetes/manifests"
[wait-control-plane] Waiting
for
the kubelet to boot up the control plane as static Pods from directory
"/etc/kubernetes/manifests"
. This can take up to 4m0s
[apiclient] All control plane components are healthy after 17.002251 seconds
[upload-config] storing the configuration used
in
ConfigMap
"kubeadm-config"
in
the
"kube-system"
Namespace
[kubelet] Creating a ConfigMap
"kubelet-config-1.14"
in
namespace kube-system with the configuration
for
the kubelets
in
the cluster
[upload-certs] Skipping phase. Please see --experimental-upload-certs
[mark-control-plane] Marking the node k8s-node00 as control-plane by adding the
label
"node-role.kubernetes.io/master=''"
[mark-control-plane] Marking the node k8s-node00 as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Using token: q8793g.yx6nn1ca0ckvkqcz
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs
in
order
for
nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation
for
all node client certificates
in
the cluster
[bootstrap-token] creating the
"cluster-info"
ConfigMap
in
the
"kube-public"
namespace
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!
To
start
using your cluster, you need to run the following as a regular user:
mkdir
-p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run
"kubectl apply -f [podnetwork].yaml"
with one of the options listed
at
:
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.51.2.191:6443 --token q8793g.yx6nn1ca0ckvkqcz \
--discovery-token-ca-cert-hash sha256:86d84fead96089fd28631f4f172348b823abb85f80c99fefa851ec136075df40
実行結果の最後に表示される
kubeadm join ~
(L.68-69)はメモしておきます。 このあと、ワーカーノード上で子のコマンドを実行してマスターノードに参加させていきます。 -
config ファイル の コピー
kubectl を通常ユーザーで利用する場合、通常ユーザーにおいて以下のコマンドを実行します。
123mkdir
-p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
もし、引き続き root ユーザーで kubectl を利用する場合、rootユーザーで以下のコマンドを実行します。
1export KUBECONFIG=/etc/kubernetes/admin.conf
ここまでの作業がうまくできているか、 kubectl
を実行して動作確認してみます。
このタイミングではまだネットワーク(CNI)が設定されていないので、 ステータスは NotReady
になっています。
1 2 3 | [root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master NotReady master 3m41s v1.14.2 |
Flannel インストール
-
kube-flannel.yml のダウノード
-
kube-flannel.yml の編集
5箇所修正。OSプラットフォームの違いで5種類の設定があるため。
12345678910…
- name: kube-flannel
image: quay.io/coreos/flannel:v0.11.0-amd64
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=ens192 # <- 環境に合わせてNIC名を指定
…
-
Kubernetes上に展開
1kubectl apply -f kube-flannel.yml
無事、Flannelの展開が完了して、Kubernetesのマスターノードが利用可能になっているか、kubectl get pods
コマンドで Pod起動状況 を確認します。
起動までは少し時間がかかるので、何度かコマンドをたたいて様子を見てみます。
最終的にすべてのPodが Running になっていればOKです。
1 2 3 4 5 6 7 8 9 10 | [root@k8s-master ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-fb8b8dccf-dc59z 1/1 Running 0 11m kube-system coredns-fb8b8dccf-mghv4 1/1 Running 0 11m kube-system etcd-k8s-node00 1/1 Running 0 10m kube-system kube-apiserver-k8s-node00 1/1 Running 0 10m kube-system kube-controller-manager-k8s-node00 1/1 Running 0 10m kube-system kube-flannel-ds-amd64-7rswc 1/1 Running 0 47s kube-system kube-proxy-j8xmv 1/1 Running 0 11m kube-system kube-scheduler-k8s-node00 1/1 Running 0 10m |
ワーカーノード構築
マスターノード構築後24時間以内であれば、kubeadm init 実行結果で取得されたコマンドを実行すればワーカーノードをマスターノードに登録できます。 以下の手順は マスターノード初期化後24時間以内 にワーカーノードをマスターノードに登録する手順です。
ファイアウォール設定
-
ポートの開放
ポートレンジ プロトコル 用途 10250 TCP Control plane 30000-32767 TCP All 123sudo firewall-
cmd
--zone public --add-port 10250/tcp --permanent
sudo firewall-
cmd
--zone public --add-port 30000-32767/tcp --permanent
sudo firewall-
cmd
--reload
マスターノードに登録
-
マスタノードへ参加
12sudo kubeadm join 10.51.1.100:6443 --token q8793g.yx6nn1ca0ckvkqcz \
--discovery-token-ca-cert-hash sha256:86d84fead96089fd28631f4f172348b823abb85f80c99fefa851ec136075df40
もし、ワーカーノードの追加がマスターノード構築から24時間以上経っている場合、以下の手順でトークンとハッシュを作成してからワーカーノードをマスターノードに追加します。
マスターノード上で操作
-
トークンの生成
1kubeadm token create
-
ハッシュの取得
12openssl x509 -pubkey -
in
/etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed
's/^.* //'
ワーカーノード上で操作
-
マスターノードへ参加
12sudo kubeadm join 10.51.1.100:6443 --token <トークン> \
--discovery-token-ca-cert-hash sha256:<ハッシュ>
動作確認
環境構築がすべて終わっているかどうか、Node と Pod を確認してみます。
Node を確認するには kubectl get nodes
、 Pod を確認するには kubectl get pods
を利用します。
以下に実行結果のサンプルを掲載します。
1 2 3 4 5 6 | [root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 6h41m v1.14.2 k8s-node01 Ready <none> 6h28m v1.14.2 k8s-node02 Ready <none> 6h28m v1.14.2 </none></none> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@k8s-master ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-fb8b8dccf-tjrv9 1/1 Running 0 6h41m kube-system coredns-fb8b8dccf-w8qmr 1/1 Running 0 6h41m kube-system etcd-k8s-master 1/1 Running 0 6h41m kube-system kube-apiserver-k8s-master 1/1 Running 0 6h41m kube-system kube-controller-manager-k8s-master 1/1 Running 0 6h40m kube-system kube-flannel-ds-amd64-fqmdp 1/1 Running 0 6h28m kube-system kube-flannel-ds-amd64-ql2g2 1/1 Running 0 6h28m kube-system kube-flannel-ds-amd64-xhrmx 1/1 Running 0 6h36m kube-system kube-proxy-7wglt 1/1 Running 0 6h41m kube-system kube-proxy-ckfwd 1/1 Running 0 6h28m kube-system kube-proxy-hz4k9 1/1 Running 0 6h28m kube-system kube-scheduler-k8s-master 1/1 Running 0 6h41m |
「Node が 仮想マシン分あること」、「flannel の Pod が仮想マシン分あること」が確認できれば環境構築ができていることの確認になります。 そもそも Flannnel 自体が Kubernetes の仕組み上で動作している DaemonSet という種類のリソースで、各ノードに1台ずつ配置されるものなので、
[参考] うまくいかず再設定したい場合
Docker
-
Daemonの停止、無効化
1systemctl stop docker && systemctl disable docker
-
ファイル/フォルダ削除
12rm -f /etc/docker/daemon.json
rm -rf /etc/systemd/system/docker.service.d
-
Dockerアンインストール
1yum
remove docker-ce docker-ce-cli containerd.io
Kubernetes
-
Daemonの停止、無効化
1systemctl stop kubelet && systemctl disable kubelet
-
kubernetesクラスタの初期化
1kubeadm reset
-
ファイル/フォルダ削除
1rm -f /var/lib/kubelet/kubeadm-flags.env
-
kubelet, kubeadm, kubectl の削除
1234yum
remove \
kubelet \
kubeadm \
kubectl
[参考] 各種確認
エラーが発生して困ったときに利用した各種確認用のコマンドの覚書。
Kubernetes
1 2 3 4 5 6 7 8 9 10 11 12 13 | # node, pod の一覧 kubectl get nodes kubectl get pods --all-namespaces # 詳細確認(Kubernetes視点) kubectl describe nodes <node name> kubectl describe pods <pod name> -A # kubelet のエラー確認(詳細確認はできない・・・) systemctl status kubelet # kubelet のエラー確認(詳細も確認) journalctl -xe -u kubelet |
今回は「CentOS上にシングルマスター構成のKubernetesクラスターを構築する方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
参考記事
- kubernetes - Installing kubeadm
- kubernetes - Creating a single master cluster with kubeadm
- kubernetes - CRI installation
- Qiita - Kubernetes on CentOS7
- GitHub - coreos/flannel
- 寝て起きて寝る - kubeadmでKubernetes1.9.3のClusterを構築したメモ
- Qiita - Kubernetes on CentOS7
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!